diff --git a/blockchain/reactor.go b/blockchain/reactor.go index c5947b0f5..62d398cc8 100644 --- a/blockchain/reactor.go +++ b/blockchain/reactor.go @@ -197,7 +197,13 @@ FOR_LOOP: // not thread safe access for peerless and numPending but should be fine log.Debug("Consensus ticker", "peerless", bcR.pool.peerless, "pending", bcR.pool.numPending, "total", bcR.pool.numTotal) // NOTE: this condition is very strict right now. may need to weaken - if bcR.pool.numPending == maxPendingRequests && bcR.pool.peerless == bcR.pool.numPending { + // if the max amount of requests are pending and peerless + // and we have some peers (say > 5), then we're caught up + maxPending := bcR.pool.numPending == maxPendingRequests + maxPeerless := bcR.pool.peerless == bcR.pool.numPending + o, i, _ := bcR.sw.NumPeers() + enoughPeers := o+i > 5 + if maxPending && maxPeerless && enoughPeers { log.Warn("Time to switch to consensus reactor!", "height", bcR.pool.height) bcR.pool.Stop() stateDB := dbm.GetDB("state")