diff --git a/blockchain/reactor.go b/blockchain/reactor.go index 9bab832e7..ee524ce6f 100644 --- a/blockchain/reactor.go +++ b/blockchain/reactor.go @@ -47,7 +47,7 @@ type BlockchainReactor struct { proxyAppConn proxy.AppConn // same as consensus.proxyAppConn store *BlockStore pool *BlockPool - sync bool + fastSync bool requestsCh chan BlockRequest timeoutsCh chan string lastBlock *types.Block @@ -55,7 +55,7 @@ type BlockchainReactor struct { evsw *events.EventSwitch } -func NewBlockchainReactor(state *sm.State, proxyAppConn proxy.AppConn, store *BlockStore, sync bool) *BlockchainReactor { +func NewBlockchainReactor(state *sm.State, proxyAppConn proxy.AppConn, store *BlockStore, fastSync bool) *BlockchainReactor { if state.LastBlockHeight == store.Height()-1 { store.height -= 1 // XXX HACK, make this better } @@ -74,7 +74,7 @@ func NewBlockchainReactor(state *sm.State, proxyAppConn proxy.AppConn, store *Bl proxyAppConn: proxyAppConn, store: store, pool: pool, - sync: sync, + fastSync: fastSync, requestsCh: requestsCh, timeoutsCh: timeoutsCh, } @@ -84,7 +84,7 @@ func NewBlockchainReactor(state *sm.State, proxyAppConn proxy.AppConn, store *Bl func (bcR *BlockchainReactor) OnStart() error { bcR.BaseReactor.OnStart() - if bcR.sync { + if bcR.fastSync { _, err := bcR.pool.Start() if err != nil { return err diff --git a/node/node.go b/node/node.go index 5369a68d6..db95fe22f 100644 --- a/node/node.go +++ b/node/node.go @@ -73,8 +73,18 @@ func NewNode(privValidator *types.PrivValidator) *Node { Exit(Fmt("Failed to start switch: %v", err)) } + // Decide whether to fast-sync or not + // We don't fast-sync when the only validator is us. + fastSync := config.GetBool("fast_sync") + if state.Validators.Size() == 1 { + addr, _ := state.Validators.GetByIndex(0) + if bytes.Equal(privValidator.Address, addr) { + fastSync = false + } + } + // Make BlockchainReactor - bcReactor := bc.NewBlockchainReactor(state.Copy(), proxyAppConnConsensus, blockStore, config.GetBool("fast_sync")) + bcReactor := bc.NewBlockchainReactor(state.Copy(), proxyAppConnConsensus, blockStore, fastSync) // Make MempoolReactor mempool := mempl.NewMempool(proxyAppConnMempool) @@ -82,7 +92,7 @@ func NewNode(privValidator *types.PrivValidator) *Node { // Make ConsensusReactor consensusState := consensus.NewConsensusState(state.Copy(), proxyAppConnConsensus, blockStore, mempool) - consensusReactor := consensus.NewConsensusReactor(consensusState, blockStore, config.GetBool("fast_sync")) + consensusReactor := consensus.NewConsensusReactor(consensusState, blockStore, fastSync) if privValidator != nil { consensusReactor.SetPrivValidator(privValidator) }