瀏覽代碼

Merge pull request #726 from mavenugo/res

set cntlr sandbox before cleaning endpoints in ungraceful restart case
Jana Radhakrishnan 9 年之前
父節點
當前提交
abeb8f8a85
共有 2 個文件被更改,包括 7 次插入7 次删除
  1. 1 1
      libnetwork/sandbox.go
  2. 6 6
      libnetwork/sandbox_store.go

+ 1 - 1
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

+ 6 - 6
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)
 		}