From d8d619811e64fb0b013bafbefa70d6004980c00e Mon Sep 17 00:00:00 2001 From: Ethan Buchman Date: Thu, 23 Apr 2015 14:01:21 -0700 Subject: [PATCH] dont switch off fast sync unless we have enough peers to know --- blockchain/reactor.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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")