From 7679cc50157fbbce187304456322ff9db3f26704 Mon Sep 17 00:00:00 2001 From: William Banfield Date: Wed, 29 Sep 2021 14:16:50 -0400 Subject: [PATCH] statesync: remove deadlock on init fail --- internal/statesync/reactor.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/statesync/reactor.go b/internal/statesync/reactor.go index a20c8ca41..5defeee00 100644 --- a/internal/statesync/reactor.go +++ b/internal/statesync/reactor.go @@ -274,12 +274,14 @@ func (r *Reactor) Sync(ctx context.Context) (sm.State, error) { } r.mtx.Lock() + defer r.mtx.Unlock() if r.syncer != nil { r.mtx.Unlock() return sm.State{}, errors.New("a state sync is already in progress") } if err := r.initStateProvider(ctx, r.chainID, r.initialHeight); err != nil { + r.mtx.Unlock() return sm.State{}, err } @@ -889,11 +891,10 @@ func (r *Reactor) processPeerUpdate(peerUpdate p2p.PeerUpdate) { } r.mtx.Lock() + defer r.mtx.Unlock() if r.syncer == nil { - r.mtx.Unlock() return } - defer r.mtx.Unlock() switch peerUpdate.Status { case p2p.PeerStatusUp: