core: temporary patch for panic during sidechain import #18977

This commit is contained in:
Martin Holst Swende 2019-02-01 11:49:32 +01:00
parent 05d21438de
commit 426a0a8191
No known key found for this signature in database
GPG key ID: 683B438C05A5DDF0

View file

@ -980,6 +980,16 @@ func (bc *BlockChain) writeBlockWithState(block *types.Block, receipts []*types.
}
// Find the next state trie we need to commit
header := bc.GetHeaderByNumber(current - triesInMemory)
if header == nil {
// TODO! Investigate why this happens. See https://github.com/ethereum/go-ethereum/issues/18977 .
// It appears that when importing large sidechains, there's some edgecase where
// sidechain tip (S - 128) does not have a corresponding canonical block. This seems odd, since
// any sidechain larger than 128 blocks longer than the 'canon' chain _should_ already have been
// reorged into canon chain.
// For now, just break out of here, and hope that a reorg event will settle this
break
}
chosen := header.Number.Uint64()
// If we exceeded out time allowance, flush an entire trie to disk