1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Merge pull request #1065 from aboch/ov

Do not allow overlay destroySandbox() to be interrupted
This commit is contained in:
Madhu Venugopal 2016-03-30 17:35:08 -07:00
commit d0cfd9b3dd

View file

@ -149,9 +149,9 @@ func (n *network) joinSubnetSandbox(s *subnet) error {
func (n *network) leaveSandbox() { func (n *network) leaveSandbox() {
n.Lock() n.Lock()
defer n.Unlock()
n.joinCnt-- n.joinCnt--
if n.joinCnt != 0 { if n.joinCnt != 0 {
n.Unlock()
return return
} }
@ -162,15 +162,14 @@ func (n *network) leaveSandbox() {
for _, s := range n.subnets { for _, s := range n.subnets {
s.once = &sync.Once{} s.once = &sync.Once{}
} }
n.Unlock()
n.destroySandbox() n.destroySandbox()
} }
// to be called while holding network lock
func (n *network) destroySandbox() { func (n *network) destroySandbox() {
sbox := n.sandbox() if n.sbox != nil {
if sbox != nil { for _, iface := range n.sbox.Info().Interfaces() {
for _, iface := range sbox.Info().Interfaces() {
if err := iface.Remove(); err != nil { if err := iface.Remove(); err != nil {
logrus.Debugf("Remove interface %s failed: %v", iface.SrcName(), err) logrus.Debugf("Remove interface %s failed: %v", iface.SrcName(), err)
} }
@ -197,8 +196,8 @@ func (n *network) destroySandbox() {
} }
} }
sbox.Destroy() n.sbox.Destroy()
n.setSandbox(nil) n.sbox = nil
} }
} }