diff options
author | Sonic <sonic@dexon.org> | 2019-01-03 17:18:50 +0800 |
---|---|---|
committer | Wei-Ning Huang <w@dexon.org> | 2019-03-12 12:19:09 +0800 |
commit | f9e8fba11b1e06794f89b7fb5175480a3eded5f2 (patch) | |
tree | eb971da377ee5f21f3221d86d99be4c6a7e1208b /dex | |
parent | 9f0fe7967af4b8d300ece5e9a406d75287dd964c (diff) | |
download | dexon-f9e8fba11b1e06794f89b7fb5175480a3eded5f2.tar.gz dexon-f9e8fba11b1e06794f89b7fb5175480a3eded5f2.tar.zst dexon-f9e8fba11b1e06794f89b7fb5175480a3eded5f2.zip |
core, indexer, dex: fix DexconApp block deliver after synced (#122)
When starts a bp node to sync with the network, bc.chainLastHeight map
may not be initialized yet.
Just return error if we can not get chain last height when preparing
payload and verify block.
Diffstat (limited to 'dex')
-rw-r--r-- | dex/app.go | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/dex/app.go b/dex/app.go index d04b2afd6..c52a6c79b 100644 --- a/dex/app.go +++ b/dex/app.go @@ -177,11 +177,11 @@ func (d *DexconApp) preparePayload(ctx context.Context, position coreTypes.Posit if position.Height != 0 { // Check if chain block height is strictly increamental. - chainLastHeight := d.blockchain.GetChainLastConfirmedHeight(position.ChainID) - if chainLastHeight != position.Height-1 { - log.Error("Check confirmed block height fail", - "chain", position.ChainID, "height", position.Height-1, "cache height", chainLastHeight) - return nil, fmt.Errorf("check confirmed block height fail") + chainLastHeight, ok := d.blockchain.GetChainLastConfirmedHeight(position.ChainID) + if !ok || chainLastHeight != position.Height-1 { + log.Debug("Previous confirmed block not exists", "current pos", position.String(), + "prev height", chainLastHeight, "ok", ok) + return nil, fmt.Errorf("previous block not exists") } } @@ -337,10 +337,10 @@ func (d *DexconApp) VerifyBlock(block *coreTypes.Block) coreTypes.BlockVerifySta if block.Position.Height != 0 { // Check if target block is the next height to be verified, we can only // verify the next block in a given chain. - chainLastHeight := d.blockchain.GetChainLastConfirmedHeight(block.Position.ChainID) - if chainLastHeight != block.Position.Height-1 { - log.Error("Check confirmed block height fail", "chain", block.Position.ChainID, - "height", block.Position.Height-1, "cache height", chainLastHeight) + chainLastHeight, ok := d.blockchain.GetChainLastConfirmedHeight(block.Position.ChainID) + if !ok || chainLastHeight != block.Position.Height-1 { + log.Debug("Previous confirmed block not exists", "current pos", block.Position.String(), + "prev height", chainLastHeight, "ok", ok) return coreTypes.VerifyRetryLater } } |