From 6aa784e6f29ae58a8c19442316ba8cf8227369de Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Mon, 19 Dec 2016 17:15:49 -0600 Subject: [PATCH] proxy/iptables: don't sync proxy rules if services map didn't change --- pkg/proxy/iptables/proxier.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkg/proxy/iptables/proxier.go b/pkg/proxy/iptables/proxier.go index 56643a2cb2d..87a3c9cc612 100644 --- a/pkg/proxy/iptables/proxier.go +++ b/pkg/proxy/iptables/proxier.go @@ -556,8 +556,6 @@ func (proxier *Proxier) OnServiceUpdate(allServices []api.Service) { proxier.haveReceivedServiceUpdate = true newServiceMap, hcAdd, hcDel, staleUDPServices := buildServiceMap(allServices, proxier.serviceMap) - proxier.serviceMap = newServiceMap - for _, hc := range hcAdd { glog.V(4).Infof("Adding health check for %+v, port %v", hc.namespace, hc.nodeport) // Turn on healthcheck responder to listen on the health check nodePort @@ -572,7 +570,13 @@ func (proxier *Proxier) OnServiceUpdate(allServices []api.Service) { healthcheck.DeleteServiceListener(hc.namespace, hc.nodeport) } - proxier.syncProxyRules() + if len(newServiceMap) != len(proxier.serviceMap) || !reflect.DeepEqual(newServiceMap, proxier.serviceMap) { + proxier.serviceMap = newServiceMap + proxier.syncProxyRules() + } else { + glog.V(4).Infof("Skipping proxy iptables rule sync on service update because nothing changed") + } + proxier.deleteServiceConnections(staleUDPServices.List()) }