aboutsummaryrefslogtreecommitdiffstats
path: root/core/syncer/consensus.go
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2019-04-09 17:36:40 +0800
committerGitHub <noreply@github.com>2019-04-09 17:36:40 +0800
commit948be08a7294e26f3b52f94f9af803f69680f9df (patch)
treea2b2f13eedf33da3c4bac582b9844a333263970b /core/syncer/consensus.go
parentf5a753891357ce76308578234ed9edd15bf81f23 (diff)
downloaddexon-consensus-948be08a7294e26f3b52f94f9af803f69680f9df.tar
dexon-consensus-948be08a7294e26f3b52f94f9af803f69680f9df.tar.gz
dexon-consensus-948be08a7294e26f3b52f94f9af803f69680f9df.tar.bz2
dexon-consensus-948be08a7294e26f3b52f94f9af803f69680f9df.tar.lz
dexon-consensus-948be08a7294e26f3b52f94f9af803f69680f9df.tar.xz
dexon-consensus-948be08a7294e26f3b52f94f9af803f69680f9df.tar.zst
dexon-consensus-948be08a7294e26f3b52f94f9af803f69680f9df.zip
core: syncer: fix force sync (#556)
* core: syncer: fix force sync * Fix come logic * core: syncer: fix * fix log
Diffstat (limited to 'core/syncer/consensus.go')
-rw-r--r--core/syncer/consensus.go13
1 files changed, 9 insertions, 4 deletions
diff --git a/core/syncer/consensus.go b/core/syncer/consensus.go
index f4681a2..7db836a 100644
--- a/core/syncer/consensus.go
+++ b/core/syncer/consensus.go
@@ -276,17 +276,21 @@ func (con *Consensus) buildAllEmptyBlocks() {
}
// ForceSync forces syncer to become synced.
-func (con *Consensus) ForceSync(skip bool) {
+func (con *Consensus) ForceSync(lastPos types.Position, skip bool) {
if con.syncedLastBlock != nil {
return
}
- hash, _ := con.db.GetCompactionChainTipInfo()
- var block types.Block
+ hash, height := con.db.GetCompactionChainTipInfo()
+ if height < lastPos.Height {
+ panic(fmt.Errorf("compaction chain not synced height %d, tip %d",
+ lastPos.Height, height))
+ } else if height > lastPos.Height {
+ skip = false
+ }
block, err := con.db.GetBlock(hash)
if err != nil {
panic(err)
}
- con.logger.Info("Force Sync", "block", &block)
con.syncedLastBlock = &block
con.stopBuffering()
// We might call stopBuffering without calling assureBuffering.
@@ -298,6 +302,7 @@ func (con *Consensus) ForceSync(skip bool) {
})
}
con.syncedSkipNext = skip
+ con.logger.Info("Force Sync", "block", &block, "skip", skip)
}
// SyncBlocks syncs blocks from compaction chain, latest is true if the caller