From e636d8398b8462451bd1408a4ae9c8be97e14687 Mon Sep 17 00:00:00 2001 From: Madhu Venugopal Date: Fri, 30 Oct 2015 12:17:54 -0700 Subject: [PATCH] set cntlr sandbox before cleaning endpoints in ungraceful restart case Signed-off-by: Madhu Venugopal --- libnetwork/sandbox.go | 2 +- libnetwork/sandbox_store.go | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/libnetwork/sandbox.go b/libnetwork/sandbox.go index 5ea3f1f80f..96ef4c81a7 100644 --- a/libnetwork/sandbox.go +++ b/libnetwork/sandbox.go @@ -479,7 +479,7 @@ func (sb *sandbox) populateNetworkResources(ep *endpoint) error { for _, gwep := range sb.getConnectedEndpoints() { if len(gwep.Gateway()) > 0 { if gwep != ep { - return nil + break } if err := sb.updateGateway(gwep); err != nil { return err diff --git a/libnetwork/sandbox_store.go b/libnetwork/sandbox_store.go index 4844032b2b..cd61f696fe 100644 --- a/libnetwork/sandbox_store.go +++ b/libnetwork/sandbox_store.go @@ -197,28 +197,28 @@ func (c *controller) sandboxCleanup() { continue } + c.Lock() + c.sandboxes[sb.id] = sb + c.Unlock() + for _, eps := range sbs.Eps { n, err := c.getNetworkFromStore(eps.Nid) var ep *endpoint if err != nil { logrus.Errorf("getNetworkFromStore for nid %s failed while trying to build sandbox for cleanup: %v", eps.Nid, err) n = &network{id: eps.Nid, ctrlr: c, drvOnce: &sync.Once{}} - ep = &endpoint{id: eps.Eid, network: n} + ep = &endpoint{id: eps.Eid, network: n, sandboxID: sbs.ID} } else { ep, err = n.getEndpointFromStore(eps.Eid) if err != nil { logrus.Errorf("getEndpointFromStore for eid %s failed while trying to build sandbox for cleanup: %v", eps.Eid, err) - ep = &endpoint{id: eps.Eid, network: n} + ep = &endpoint{id: eps.Eid, network: n, sandboxID: sbs.ID} } } heap.Push(&sb.endpoints, ep) } - c.Lock() - c.sandboxes[sb.id] = sb - c.Unlock() - if err := sb.Delete(); err != nil { logrus.Errorf("failed to delete sandbox %s while trying to cleanup: %v", sb.id, err) }