mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-25 14:52:17 +00:00
Make fast_sync a command-line flag
This commit is contained in:
parent
7171823fc6
commit
bd767c1fab
@ -35,6 +35,7 @@ type BlockchainReactor struct {
|
||||
state *sm.State
|
||||
store *BlockStore
|
||||
pool *BlockPool
|
||||
sync bool
|
||||
requestsCh chan BlockRequest
|
||||
timeoutsCh chan string
|
||||
lastBlock *types.Block
|
||||
@ -42,7 +43,7 @@ type BlockchainReactor struct {
|
||||
running uint32
|
||||
}
|
||||
|
||||
func NewBlockchainReactor(state *sm.State, store *BlockStore) *BlockchainReactor {
|
||||
func NewBlockchainReactor(state *sm.State, store *BlockStore, sync bool) *BlockchainReactor {
|
||||
if state.LastBlockHeight != store.Height() {
|
||||
panic(Fmt("state (%v) and store (%v) height mismatch", state.LastBlockHeight, store.Height()))
|
||||
}
|
||||
@ -57,6 +58,7 @@ func NewBlockchainReactor(state *sm.State, store *BlockStore) *BlockchainReactor
|
||||
state: state,
|
||||
store: store,
|
||||
pool: pool,
|
||||
sync: sync,
|
||||
requestsCh: requestsCh,
|
||||
timeoutsCh: timeoutsCh,
|
||||
quit: make(chan struct{}),
|
||||
@ -71,8 +73,10 @@ func (bcR *BlockchainReactor) Start(sw *p2p.Switch) {
|
||||
log.Info("Starting BlockchainReactor")
|
||||
bcR.sw = sw
|
||||
bcR.pool.Start()
|
||||
if bcR.sync {
|
||||
go bcR.poolRoutine()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Implements Reactor
|
||||
@ -169,7 +173,7 @@ FOR_LOOP:
|
||||
bcR.sw.StopPeerForError(peer, errors.New("BlockchainReactor Timeout"))
|
||||
}
|
||||
case _ = <-trySyncTicker.C: // chan time
|
||||
var lastValidatedBlock *types.Block
|
||||
//var lastValidatedBlock *types.Block
|
||||
SYNC_LOOP:
|
||||
for i := 0; i < 10; i++ {
|
||||
// See if there are any blocks to sync.
|
||||
@ -197,9 +201,10 @@ FOR_LOOP:
|
||||
}
|
||||
bcR.store.SaveBlock(first, firstParts, second.Validation)
|
||||
bcR.state.Save()
|
||||
lastValidatedBlock = first
|
||||
//lastValidatedBlock = first
|
||||
}
|
||||
}
|
||||
/*
|
||||
// We're done syncing for now (will do again shortly)
|
||||
// See if we want to stop syncing and turn on the
|
||||
// consensus reactor.
|
||||
@ -207,10 +212,10 @@ FOR_LOOP:
|
||||
// It's not a security concern, as it only needs to happen
|
||||
// upon node sync, and there's also a second (slower)
|
||||
// method of syncing in the consensus reactor.
|
||||
|
||||
if lastValidatedBlock != nil && time.Now().Sub(lastValidatedBlock.Time) < stopSyncingDurationMinutes*time.Minute {
|
||||
go func() {
|
||||
log.Info("Stopping blockpool syncing, turning on consensus...")
|
||||
//bcR.sw.Reactor("BLOCKCHAIN").Stop()
|
||||
trySyncTicker.Stop() // Just stop the block requests. Still serve blocks to others.
|
||||
conR := bcR.sw.Reactor("CONSENSUS")
|
||||
conR.(stateResetter).ResetToState(bcR.state)
|
||||
@ -221,6 +226,7 @@ FOR_LOOP:
|
||||
}()
|
||||
break FOR_LOOP
|
||||
}
|
||||
*/
|
||||
continue FOR_LOOP
|
||||
case <-bcR.quit:
|
||||
break FOR_LOOP
|
||||
|
@ -104,6 +104,8 @@ func initDefaults(rootDir string) {
|
||||
app.SetDefault("GenesisFile", rootDir+"/genesis.json")
|
||||
app.SetDefault("AddrBookFile", rootDir+"/addrbook.json")
|
||||
app.SetDefault("PrivValidatorfile", rootDir+"/priv_validator.json")
|
||||
|
||||
app.SetDefault("FastSync", false)
|
||||
}
|
||||
|
||||
func Init(rootDir string) {
|
||||
@ -161,6 +163,7 @@ func ParseFlags(args []string) {
|
||||
flags.BoolVar(&printHelp, "help", false, "Print this help message.")
|
||||
flags.String("listen_addr", app.GetString("ListenAddr"), "Listen address. (0.0.0.0:0 means any interface, any port)")
|
||||
flags.String("seed_node", app.GetString("SeedNode"), "Address of seed node")
|
||||
flags.Bool("fast_sync", app.GetBool("FastSync"), "Fast blockchain syncing")
|
||||
flags.String("rpc_http_listen_addr", app.GetString("RPC.HTTP.ListenAddr"), "RPC listen address. Port required")
|
||||
flags.Parse(args)
|
||||
if printHelp {
|
||||
@ -171,6 +174,7 @@ func ParseFlags(args []string) {
|
||||
// Merge parsed flag values onto app.
|
||||
app.BindPFlag("ListenAddr", flags.Lookup("listen_addr"))
|
||||
app.BindPFlag("SeedNode", flags.Lookup("seed_node"))
|
||||
app.BindPFlag("FastSync", flags.Lookup("fast_sync"))
|
||||
app.BindPFlag("RPC.HTTP.ListenAddr", flags.Lookup("rpc_http_listen_addr"))
|
||||
|
||||
// Confused?
|
||||
|
@ -55,7 +55,7 @@ func NewNode() *Node {
|
||||
pexReactor := p2p.NewPEXReactor(book)
|
||||
|
||||
// Get BlockchainReactor
|
||||
bcReactor := bc.NewBlockchainReactor(state, blockStore)
|
||||
bcReactor := bc.NewBlockchainReactor(state, blockStore, config.App().GetBool("FastSync"))
|
||||
|
||||
// Get MempoolReactor
|
||||
mempool := mempl.NewMempool(state.Copy())
|
||||
@ -71,9 +71,13 @@ func NewNode() *Node {
|
||||
sw := p2p.NewSwitch()
|
||||
sw.SetNetwork(config.App().GetString("Network"))
|
||||
sw.AddReactor("PEX", pexReactor).Start(sw)
|
||||
sw.AddReactor("BLOCKCHAIN", bcReactor).Start(sw)
|
||||
sw.AddReactor("MEMPOOL", mempoolReactor).Start(sw)
|
||||
sw.AddReactor("CONSENSUS", consensusReactor) // Do not start yet.
|
||||
sw.AddReactor("BLOCKCHAIN", bcReactor).Start(sw)
|
||||
if !config.App().GetBool("FastSync") {
|
||||
sw.AddReactor("CONSENSUS", consensusReactor).Start(sw)
|
||||
} else {
|
||||
sw.AddReactor("CONSENSUS", consensusReactor)
|
||||
}
|
||||
|
||||
return &Node{
|
||||
sw: sw,
|
||||
|
Loading…
x
Reference in New Issue
Block a user