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

Merge pull request #2180 from ctelfer/fix-overlay-deadlock-regression

Fix spurious deadlock in overlay driver
This commit is contained in:
Flavio Crisciani 2018-06-08 13:38:34 -07:00 committed by GitHub
commit 5f23795eef

View file

@ -244,7 +244,15 @@ func (d *driver) DeleteNetwork(nid string) error {
}
d.Lock()
defer d.Unlock()
// Only perform a peer flush operation (if required) AFTER unlocking
// the driver lock to avoid deadlocking w/ the peerDB.
var doPeerFlush bool
defer func() {
d.Unlock()
if doPeerFlush {
d.peerFlush(nid)
}
}()
// This is similar to d.network(), but we need to keep holding the lock
// until we are done removing this network.
@ -270,7 +278,7 @@ func (d *driver) DeleteNetwork(nid string) error {
}
}
// flush the peerDB entries
d.peerFlush(nid)
doPeerFlush = true
delete(d.networks, nid)
vnis, err := n.releaseVxlanID()