diff options
author | Mission Liao <mission.liao@dexon.org> | 2019-02-27 15:39:24 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-27 15:39:24 +0800 |
commit | 400c4f2fd9400c0fa01fc416fa1804ee7e87af88 (patch) | |
tree | d20d044e94060c0b33759549c115bb14ab09f1d5 /core | |
parent | 9e18a2b406b58e4b44eea4d5741f71f689f8022c (diff) | |
download | dexon-consensus-400c4f2fd9400c0fa01fc416fa1804ee7e87af88.tar dexon-consensus-400c4f2fd9400c0fa01fc416fa1804ee7e87af88.tar.gz dexon-consensus-400c4f2fd9400c0fa01fc416fa1804ee7e87af88.tar.bz2 dexon-consensus-400c4f2fd9400c0fa01fc416fa1804ee7e87af88.tar.lz dexon-consensus-400c4f2fd9400c0fa01fc416fa1804ee7e87af88.tar.xz dexon-consensus-400c4f2fd9400c0fa01fc416fa1804ee7e87af88.tar.zst dexon-consensus-400c4f2fd9400c0fa01fc416fa1804ee7e87af88.zip |
core: fix panic by duplicated pending blocks (#460)
Diffstat (limited to 'core')
-rw-r--r-- | core/blockchain.go | 5 | ||||
-rw-r--r-- | core/blockchain_test.go | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/core/blockchain.go b/core/blockchain.go index 001892e..bc9616c 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -451,6 +451,11 @@ func (bc *blockChain) findPendingBlock(p types.Position) *types.Block { func (bc *blockChain) addPendingBlockRecord(p pendingBlockRecord) { if err := bc.pendingBlocks.insert(p); err != nil { + if err == ErrDuplicatedPendingBlock { + // TODO(mission): panic directly once our BA can confirm blocks + // uniquely and in sequence. + return + } panic(err) } if p.block != nil { diff --git a/core/blockchain_test.go b/core/blockchain_test.go index 46cb457..4c8fe23 100644 --- a/core/blockchain_test.go +++ b/core/blockchain_test.go @@ -419,8 +419,10 @@ func (s *BlockChainTestSuite) TestPendingBlockRecords() { s.Require().NoError(ps.insert(pendingBlockRecord{bs[2].Position, bs[2]})) s.Require().NoError(ps.insert(pendingBlockRecord{bs[1].Position, bs[1]})) s.Require().NoError(ps.insert(pendingBlockRecord{bs[0].Position, bs[0]})) - s.Require().Equal(ErrDuplicatedPendingBlock.Error(), - ps.insert(pendingBlockRecord{bs[0].Position, nil}).Error()) + // TODO(mission): unlock this checking once our BA can confirm blocks + // uniquely in sequence. + // s.Require().Equal(ErrDuplicatedPendingBlock.Error(), + // ps.insert(pendingBlockRecord{bs[0].Position, nil}).Error()) s.Require().True(ps[0].position.Equal(bs[0].Position)) s.Require().True(ps[1].position.Equal(bs[1].Position)) s.Require().True(ps[2].position.Equal(bs[2].Position)) |