From b92aa8f1590c3ecb1e2fe8ba12a5092ca190786c Mon Sep 17 00:00:00 2001 From: Sonic Date: Thu, 3 Jan 2019 17:18:50 +0800 Subject: 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. --- dex/app.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'dex') 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 } } -- cgit v1.2.3