aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/dexon-foundation
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2019-04-09 23:39:53 +0800
committerWei-Ning Huang <w@byzantine-lab.io>2019-06-15 22:09:55 +0800
commit33e70e61e04cfab68bcb6ce26665f7947be77a5f (patch)
treec125643c54dd2eb7eeff2970d434a6649d62ec4d /vendor/github.com/dexon-foundation
parent11fa8f2a179ec3b871ee143c0d1bc9115a0f074e (diff)
downloadgo-tangerine-33e70e61e04cfab68bcb6ce26665f7947be77a5f.tar
go-tangerine-33e70e61e04cfab68bcb6ce26665f7947be77a5f.tar.gz
go-tangerine-33e70e61e04cfab68bcb6ce26665f7947be77a5f.tar.bz2
go-tangerine-33e70e61e04cfab68bcb6ce26665f7947be77a5f.tar.lz
go-tangerine-33e70e61e04cfab68bcb6ce26665f7947be77a5f.tar.xz
go-tangerine-33e70e61e04cfab68bcb6ce26665f7947be77a5f.tar.zst
go-tangerine-33e70e61e04cfab68bcb6ce26665f7947be77a5f.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')
-rw-r--r--vendor/github.com/dexon-foundation/dexon-consensus/core/syncer/consensus.go13
-rw-r--r--vendor/github.com/dexon-foundation/dexon-consensus/core/syncer/watch-cat.go8
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
+}