diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2019-04-09 23:39:53 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-09 23:39:53 +0800 |
commit | 3a22fdf183c88a518c9836d625f2b8cf4d2baa76 (patch) | |
tree | 7a4e362c82813e8799a48a3023b00424e20e0edd /vendor/github.com/dexon-foundation/dexon-consensus | |
parent | cb9705fc63c871fcf31b3018a328e4535ba63a28 (diff) | |
download | dexon-3a22fdf183c88a518c9836d625f2b8cf4d2baa76.tar dexon-3a22fdf183c88a518c9836d625f2b8cf4d2baa76.tar.gz dexon-3a22fdf183c88a518c9836d625f2b8cf4d2baa76.tar.bz2 dexon-3a22fdf183c88a518c9836d625f2b8cf4d2baa76.tar.lz dexon-3a22fdf183c88a518c9836d625f2b8cf4d2baa76.tar.xz dexon-3a22fdf183c88a518c9836d625f2b8cf4d2baa76.tar.zst dexon-3a22fdf183c88a518c9836d625f2b8cf4d2baa76.zip |
dex: remove time alignment when force sync (#349)
* vendor: sync to latest core
* dex: remove time alignment when force sync
Diffstat (limited to 'vendor/github.com/dexon-foundation/dexon-consensus')
-rw-r--r-- | vendor/github.com/dexon-foundation/dexon-consensus/core/syncer/consensus.go | 13 | ||||
-rw-r--r-- | vendor/github.com/dexon-foundation/dexon-consensus/core/syncer/watch-cat.go | 8 |
2 files changed, 17 insertions, 4 deletions
diff --git a/vendor/github.com/dexon-foundation/dexon-consensus/core/syncer/consensus.go b/vendor/github.com/dexon-foundation/dexon-consensus/core/syncer/consensus.go index f4681a268..7db836a9a 100644 --- a/vendor/github.com/dexon-foundation/dexon-consensus/core/syncer/consensus.go +++ b/vendor/github.com/dexon-foundation/dexon-consensus/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 diff --git a/vendor/github.com/dexon-foundation/dexon-consensus/core/syncer/watch-cat.go b/vendor/github.com/dexon-foundation/dexon-consensus/core/syncer/watch-cat.go index d08bff9e9..f2e197ebe 100644 --- a/vendor/github.com/dexon-foundation/dexon-consensus/core/syncer/watch-cat.go +++ b/vendor/github.com/dexon-foundation/dexon-consensus/core/syncer/watch-cat.go @@ -37,6 +37,7 @@ type WatchCat struct { timeout time.Duration configReader configReader feed chan types.Position + lastPosition types.Position polling time.Duration ctx context.Context cancel context.CancelFunc @@ -69,6 +70,7 @@ func (wc *WatchCat) Feed(position types.Position) { // Start the WatchCat. func (wc *WatchCat) Start() { wc.Stop() + wc.lastPosition = types.Position{} wc.ctx, wc.cancel = context.WithCancel(context.Background()) go func() { var lastPos types.Position @@ -124,6 +126,7 @@ func (wc *WatchCat) Start() { wc.logger.Error("Failed to get recovery votes", "height", lastPos.Height, "error", err) } else if votes > threshold { wc.logger.Info("Threshold for recovery reached!") + wc.lastPosition = lastPos break ResetLoop } select { @@ -146,3 +149,8 @@ func (wc *WatchCat) Stop() { func (wc *WatchCat) Meow() <-chan struct{} { return wc.ctx.Done() } + +// LastPosition returns the last position for recovery. +func (wc *WatchCat) LastPosition() types.Position { + return wc.lastPosition +} |