diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2019-01-17 16:36:37 +0800 |
---|---|---|
committer | Wei-Ning Huang <w@byzantine-lab.io> | 2019-06-12 17:27:21 +0800 |
commit | fe51a95f23652e36b361d50de733397c4e28c26d (patch) | |
tree | 4b2fc0e97a0fab6117e3ee537b38336cecd7d128 /vendor/github.com/dexon-foundation/dexon-consensus/core/agreement.go | |
parent | 942f13af2f683d9a1defe16676a36a9ae711b75e (diff) | |
download | go-tangerine-fe51a95f23652e36b361d50de733397c4e28c26d.tar.gz go-tangerine-fe51a95f23652e36b361d50de733397c4e28c26d.tar.zst go-tangerine-fe51a95f23652e36b361d50de733397c4e28c26d.zip |
core: sync to latest core (#158)
* vendor: sync to latest core
* param: Update config
* core: update genesis alloc
Diffstat (limited to 'vendor/github.com/dexon-foundation/dexon-consensus/core/agreement.go')
-rw-r--r-- | vendor/github.com/dexon-foundation/dexon-consensus/core/agreement.go | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/vendor/github.com/dexon-foundation/dexon-consensus/core/agreement.go b/vendor/github.com/dexon-foundation/dexon-consensus/core/agreement.go index 62bbe250f..c17c59f8a 100644 --- a/vendor/github.com/dexon-foundation/dexon-consensus/core/agreement.go +++ b/vendor/github.com/dexon-foundation/dexon-consensus/core/agreement.go @@ -545,17 +545,22 @@ func (a *agreement) addCandidateBlockNoLock(block *types.Block) { a.candidateBlock[block.Hash] = block } -func (a *agreement) findCandidateBlock(hash common.Hash) (*types.Block, bool) { - a.lock.RLock() - defer a.lock.RUnlock() - return a.findCandidateBlockNoLock(hash) -} - func (a *agreement) findCandidateBlockNoLock( hash common.Hash) (*types.Block, bool) { b, e := a.candidateBlock[hash] return b, e } + +// find a block in both candidate blocks and pending blocks in leader-selector. +// A block might be confirmed by others while we can't verify its validity. +func (a *agreement) findBlockNoLock(hash common.Hash) (*types.Block, bool) { + b, e := a.findCandidateBlockNoLock(hash) + if !e { + b, e = a.data.leader.findPendingBlock(hash) + } + return b, e +} + func (a *agreementData) countVote(period uint64, voteType types.VoteType) ( blockHash common.Hash, ok bool) { a.lock.RLock() |