On send node envents, notify only if there are peers
- Otherwise operation will unnecessarely block for five seconds. - This is particularly noticeable on graceful shutdown of daemon in one node cluster. Signed-off-by: Alessandro Boch <aboch@docker.com>
This commit is contained in:
parent
7ee02a3176
commit
1323730eca
1 changed files with 9 additions and 0 deletions
|
@ -86,6 +86,15 @@ func (nDB *NetworkDB) sendNodeEvent(event NodeEvent_Type) error {
|
|||
notify: notifyCh,
|
||||
})
|
||||
|
||||
nDB.RLock()
|
||||
noPeers := len(nDB.nodes) <= 1
|
||||
nDB.RUnlock()
|
||||
|
||||
// Message enqueued, do not wait for a send if no peer is present
|
||||
if noPeers {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Wait for the broadcast
|
||||
select {
|
||||
case <-notifyCh:
|
||||
|
|
Loading…
Add table
Reference in a new issue