proxier: improve node topology event handler logic

Signed-off-by: Andrew Sy Kim <kiman@vmware.com>
This commit is contained in:
Andrew Sy Kim 2019-11-15 08:51:35 -05:00
parent 452c8c9ad3
commit 884582d892
2 changed files with 38 additions and 28 deletions

View File

@ -600,14 +600,16 @@ func (proxier *Proxier) OnNodeAdd(node *v1.Node) {
klog.Errorf("Received a watch event for a node %s that doesn't match the current node %v", node.Name, proxier.hostname)
return
}
oldLabels := proxier.nodeLabels
newLabels := node.Labels
proxier.mu.Lock()
proxier.nodeLabels = newLabels
proxier.mu.Unlock()
if !reflect.DeepEqual(oldLabels, newLabels) {
proxier.syncProxyRules()
if reflect.DeepEqual(proxier.nodeLabels, node.Labels) {
return
}
proxier.mu.Lock()
proxier.nodeLabels = node.Labels
proxier.mu.Unlock()
proxier.syncProxyRules()
}
// OnNodeUpdate is called whenever modification of an existing
@ -617,14 +619,16 @@ func (proxier *Proxier) OnNodeUpdate(oldNode, node *v1.Node) {
klog.Errorf("Received a watch event for a node %s that doesn't match the current node %v", node.Name, proxier.hostname)
return
}
oldLabels := proxier.nodeLabels
newLabels := node.Labels
proxier.mu.Lock()
proxier.nodeLabels = newLabels
proxier.mu.Unlock()
if !reflect.DeepEqual(oldLabels, newLabels) {
proxier.syncProxyRules()
if reflect.DeepEqual(proxier.nodeLabels, node.Labels) {
return
}
proxier.mu.Lock()
proxier.nodeLabels = node.Labels
proxier.mu.Unlock()
proxier.syncProxyRules()
}
// OnNodeDelete is called whever deletion of an existing node
@ -637,6 +641,7 @@ func (proxier *Proxier) OnNodeDelete(node *v1.Node) {
proxier.mu.Lock()
proxier.nodeLabels = nil
proxier.mu.Unlock()
proxier.syncProxyRules()
}

View File

@ -906,14 +906,16 @@ func (proxier *Proxier) OnNodeAdd(node *v1.Node) {
klog.Errorf("Received a watch event for a node %s that doesn't match the current node %v", node.Name, proxier.hostname)
return
}
oldLabels := proxier.nodeLabels
newLabels := node.Labels
proxier.mu.Lock()
proxier.nodeLabels = newLabels
proxier.mu.Unlock()
if !reflect.DeepEqual(oldLabels, newLabels) {
proxier.syncProxyRules()
if reflect.DeepEqual(proxier.nodeLabels, node.Labels) {
return
}
proxier.mu.Lock()
proxier.nodeLabels = node.Labels
proxier.mu.Unlock()
proxier.syncProxyRules()
}
// OnNodeUpdate is called whenever modification of an existing
@ -923,14 +925,16 @@ func (proxier *Proxier) OnNodeUpdate(oldNode, node *v1.Node) {
klog.Errorf("Received a watch event for a node %s that doesn't match the current node %v", node.Name, proxier.hostname)
return
}
oldLabels := proxier.nodeLabels
newLabels := node.Labels
proxier.mu.Lock()
proxier.nodeLabels = newLabels
proxier.mu.Unlock()
if !reflect.DeepEqual(oldLabels, newLabels) {
proxier.syncProxyRules()
if reflect.DeepEqual(proxier.nodeLabels, node.Labels) {
return
}
proxier.mu.Lock()
proxier.nodeLabels = node.Labels
proxier.mu.Unlock()
proxier.syncProxyRules()
}
// OnNodeDelete is called whever deletion of an existing node
@ -943,6 +947,7 @@ func (proxier *Proxier) OnNodeDelete(node *v1.Node) {
proxier.mu.Lock()
proxier.nodeLabels = nil
proxier.mu.Unlock()
proxier.syncProxyRules()
}