diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2018-10-18 14:48:05 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-18 14:48:05 +0800 |
commit | 8303e9d054957195717f41804a456e2720b0c4bb (patch) | |
tree | 8ad2b0ead5391ec6de2c0a39d75b679db87af6b0 /core/consensus.go | |
parent | eae2d201e927c774f2f409f09fa132e4678f540c (diff) | |
download | dexon-consensus-8303e9d054957195717f41804a456e2720b0c4bb.tar dexon-consensus-8303e9d054957195717f41804a456e2720b0c4bb.tar.gz dexon-consensus-8303e9d054957195717f41804a456e2720b0c4bb.tar.bz2 dexon-consensus-8303e9d054957195717f41804a456e2720b0c4bb.tar.lz dexon-consensus-8303e9d054957195717f41804a456e2720b0c4bb.tar.xz dexon-consensus-8303e9d054957195717f41804a456e2720b0c4bb.tar.zst dexon-consensus-8303e9d054957195717f41804a456e2720b0c4bb.zip |
core: sync compaction chain (#222)
Diffstat (limited to 'core/consensus.go')
-rw-r--r-- | core/consensus.go | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/core/consensus.go b/core/consensus.go index 3601720..d3f8b5d 100644 --- a/core/consensus.go +++ b/core/consensus.go @@ -740,10 +740,28 @@ func (con *Consensus) processBlock(block *types.Block) (err error) { // processFinalizedBlock is the entry point for syncing blocks. func (con *Consensus) processFinalizedBlock(block *types.Block) (err error) { - // TODO(jimmy-dexon): drop block that is already in compaction chain. if err = con.lattice.SanityCheck(block, false); err != nil { return } + con.ccModule.processFinalizedBlock(block) + for { + confirmed := con.ccModule.extractFinalizedBlocks() + if len(confirmed) == 0 { + break + } + if err = con.lattice.ctModule.processBlocks(confirmed); err != nil { + return + } + for _, b := range confirmed { + if err = con.db.Put(*b); err != nil { + if err != blockdb.ErrBlockExists { + return + } + err = nil + } + con.nbModule.BlockDelivered(b.Hash, b.Finalization) + } + } return } |