diff --git a/libnetwork/networkdb/cluster.go b/libnetwork/networkdb/cluster.go index c3bfdd4051..37bb3536f4 100644 --- a/libnetwork/networkdb/cluster.go +++ b/libnetwork/networkdb/cluster.go @@ -559,10 +559,6 @@ func (nDB *NetworkDB) bulkSyncNode(networks []string, node string, unsolicited b case <-t.C: logrus.Errorf("Bulk sync to node %s timed out", node) case <-ch: - nDB.Lock() - delete(nDB.bulkSyncAckTbl, node) - nDB.Unlock() - logrus.Debugf("%s: Bulk sync to node %s took %s", nDB.config.NodeName, node, time.Now().Sub(startTime)) } t.Stop() diff --git a/libnetwork/networkdb/delegate.go b/libnetwork/networkdb/delegate.go index eb8d18557d..e886cfcab2 100644 --- a/libnetwork/networkdb/delegate.go +++ b/libnetwork/networkdb/delegate.go @@ -318,12 +318,13 @@ func (nDB *NetworkDB) handleBulkSync(buf []byte) { // Don't respond to a bulk sync which was not unsolicited if !bsm.Unsolicited { - nDB.RLock() + nDB.Lock() ch, ok := nDB.bulkSyncAckTbl[bsm.NodeName] - nDB.RUnlock() if ok { close(ch) + delete(nDB.bulkSyncAckTbl, bsm.NodeName) } + nDB.Unlock() return }