From e7db1dbc96fb366c13e05ee9b3b0a57ba26ca49b Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Mon, 30 Nov 2020 18:58:47 +0100 Subject: [PATCH] p2p/nodestate: fix deadlock during shutdown of les server (#21927) This PR fixes a deadlock reported here: #21925 The cause is that many operations may be pending, but if the close happens, only one of them gets awoken and exits, the others remain waiting for a signal that never comes. --- p2p/nodestate/nodestate.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/p2p/nodestate/nodestate.go b/p2p/nodestate/nodestate.go index ab28b47a1..def93bac4 100644 --- a/p2p/nodestate/nodestate.go +++ b/p2p/nodestate/nodestate.go @@ -725,7 +725,7 @@ func (ns *NodeStateMachine) opFinish() { } ns.opPending = nil ns.opFlag = false - ns.opWait.Signal() + ns.opWait.Broadcast() } // Operation calls the given function as an operation callback. This allows the caller