Merge pull request #726 from mavenugo/res

set cntlr sandbox before cleaning endpoints in ungraceful restart case
This commit is contained in:
Jana Radhakrishnan 2015-10-30 14:54:46 -07:00
commit abeb8f8a85
2 changed files with 7 additions and 7 deletions

View File

@ -479,7 +479,7 @@ func (sb *sandbox) populateNetworkResources(ep *endpoint) error {
for _, gwep := range sb.getConnectedEndpoints() { for _, gwep := range sb.getConnectedEndpoints() {
if len(gwep.Gateway()) > 0 { if len(gwep.Gateway()) > 0 {
if gwep != ep { if gwep != ep {
return nil break
} }
if err := sb.updateGateway(gwep); err != nil { if err := sb.updateGateway(gwep); err != nil {
return err return err

View File

@ -197,28 +197,28 @@ func (c *controller) sandboxCleanup() {
continue continue
} }
c.Lock()
c.sandboxes[sb.id] = sb
c.Unlock()
for _, eps := range sbs.Eps { for _, eps := range sbs.Eps {
n, err := c.getNetworkFromStore(eps.Nid) n, err := c.getNetworkFromStore(eps.Nid)
var ep *endpoint var ep *endpoint
if err != nil { if err != nil {
logrus.Errorf("getNetworkFromStore for nid %s failed while trying to build sandbox for cleanup: %v", eps.Nid, err) 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{}} 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 { } else {
ep, err = n.getEndpointFromStore(eps.Eid) ep, err = n.getEndpointFromStore(eps.Eid)
if err != nil { if err != nil {
logrus.Errorf("getEndpointFromStore for eid %s failed while trying to build sandbox for cleanup: %v", eps.Eid, err) 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) heap.Push(&sb.endpoints, ep)
} }
c.Lock()
c.sandboxes[sb.id] = sb
c.Unlock()
if err := sb.Delete(); err != nil { if err := sb.Delete(); err != nil {
logrus.Errorf("failed to delete sandbox %s while trying to cleanup: %v", sb.id, err) logrus.Errorf("failed to delete sandbox %s while trying to cleanup: %v", sb.id, err)
} }