From 3b98004eed436cce836cf3222e1c1db7c9c52c65 Mon Sep 17 00:00:00 2001 From: vyzo Date: Tue, 13 Jul 2021 20:38:07 +0300 Subject: [PATCH] release priority locks early when handling batches --- pubsub.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pubsub.go b/pubsub.go index 45a397f..2853cb9 100644 --- a/pubsub.go +++ b/pubsub.go @@ -592,14 +592,15 @@ func (p *PubSub) processLoop(ctx context.Context) { func (p *PubSub) handlePendingPeers() { p.newPeersPrioLk.Lock() - defer p.newPeersPrioLk.Unlock() if len(p.newPeersPend) == 0 { + p.newPeersPrioLk.Unlock() return } newPeers := p.newPeersPend p.newPeersPend = make(map[peer.ID]struct{}) + p.newPeersPrioLk.Unlock() for pid := range newPeers { if p.host.Network().Connectedness(pid) != network.Connected { @@ -625,14 +626,15 @@ func (p *PubSub) handlePendingPeers() { func (p *PubSub) handleDeadPeers() { p.peerDeadPrioLk.Lock() - defer p.peerDeadPrioLk.Unlock() if len(p.peerDeadPend) == 0 { + p.peerDeadPrioLk.Unlock() return } deadPeers := p.peerDeadPend p.peerDeadPend = make(map[peer.ID]struct{}) + p.peerDeadPrioLk.Unlock() for pid := range deadPeers { ch, ok := p.peers[pid]