From ded6e1934a83356dd8f3d133ebfff1da90867b1a Mon Sep 17 00:00:00 2001 From: Alessandro Boch Date: Thu, 29 Sep 2016 15:01:44 -0700 Subject: [PATCH] Clear ingress resources on graceful shutdown Signed-off-by: Alessandro Boch --- libnetwork/controller.go | 47 ++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/libnetwork/controller.go b/libnetwork/controller.go index 50ff1195a9..8c3c3a1eae 100644 --- a/libnetwork/controller.go +++ b/libnetwork/controller.go @@ -324,27 +324,7 @@ func (c *controller) clusterAgentInit() { c.agentClose() c.cleanupServiceBindings("") - c.Lock() - ingressSandbox := c.ingressSandbox - c.ingressSandbox = nil - c.Unlock() - - if ingressSandbox != nil { - if err := ingressSandbox.Delete(); err != nil { - log.Warnf("Could not delete ingress sandbox while leaving: %v", err) - } - } - - n, err := c.NetworkByName("ingress") - if err != nil { - log.Warnf("Could not find ingress network while leaving: %v", err) - } - - if n != nil { - if err := n.Delete(); err != nil { - log.Warnf("Could not delete ingress network while leaving: %v", err) - } - } + c.clearIngress(true) return } @@ -1108,7 +1088,32 @@ func (c *controller) getIPAMDriver(name string) (ipamapi.Ipam, *ipamapi.Capabili } func (c *controller) Stop() { + c.clearIngress(false) c.closeStores() c.stopExternalKeyListener() osl.GC() } + +func (c *controller) clearIngress(clusterLeave bool) { + c.Lock() + ingressSandbox := c.ingressSandbox + c.ingressSandbox = nil + c.Unlock() + + if ingressSandbox != nil { + if err := ingressSandbox.Delete(); err != nil { + log.Warnf("Could not delete ingress sandbox while leaving: %v", err) + } + } + + n, err := c.NetworkByName("ingress") + if err != nil && clusterLeave { + log.Warnf("Could not find ingress network while leaving: %v", err) + } + + if n != nil { + if err := n.Delete(); err != nil { + log.Warnf("Could not delete ingress network while leaving: %v", err) + } + } +}