diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2018-10-25 16:59:30 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-25 16:59:30 +0800 |
commit | 04eeac10e6c690e62ae57ef0e2bdf4618b8782d1 (patch) | |
tree | e0b95167d1f42a9304fb9e924378464edbb517e9 /integration_test | |
parent | 233f1e8de99bf2a0023f05d1c67e48cc770621df (diff) | |
download | tangerine-consensus-04eeac10e6c690e62ae57ef0e2bdf4618b8782d1.tar tangerine-consensus-04eeac10e6c690e62ae57ef0e2bdf4618b8782d1.tar.gz tangerine-consensus-04eeac10e6c690e62ae57ef0e2bdf4618b8782d1.tar.bz2 tangerine-consensus-04eeac10e6c690e62ae57ef0e2bdf4618b8782d1.tar.lz tangerine-consensus-04eeac10e6c690e62ae57ef0e2bdf4618b8782d1.tar.xz tangerine-consensus-04eeac10e6c690e62ae57ef0e2bdf4618b8782d1.tar.zst tangerine-consensus-04eeac10e6c690e62ae57ef0e2bdf4618b8782d1.zip |
core: lattice sync (#257)
Diffstat (limited to 'integration_test')
-rw-r--r-- | integration_test/node.go | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/integration_test/node.go b/integration_test/node.go index a26c005..0fb661b 100644 --- a/integration_test/node.go +++ b/integration_test/node.go @@ -73,6 +73,7 @@ type Node struct { broadcastTargets map[types.NodeID]struct{} networkLatency test.LatencyModel proposingLatency test.LatencyModel + prevFinalHeight uint64 } // NewNode constructs an instance of Node. @@ -185,35 +186,28 @@ func (n *Node) processBlock(b *types.Block) (err error) { // core/lattice_test.go, except the compaction-chain part. var ( delivered []*types.Block - verified []*types.Block - pendings = []*types.Block{b} ) if err = n.lattice.SanityCheck(b); err != nil { - if err == core.ErrAckingBlockNotExists { + if _, ok := err.(*core.ErrAckingBlockNotExists); ok { err = nil + } else { + return } + } + if delivered, err = n.lattice.ProcessBlock(b); err != nil { return } - for { - if len(pendings) == 0 { - break - } - b, pendings = pendings[0], pendings[1:] - if verified, delivered, err = n.lattice.ProcessBlock(b); err != nil { - return - } - // Deliver blocks. - for _, b = range delivered { - if err = n.db.Put(*b); err != nil { - return - } - n.app.BlockDelivered(b.Hash, b.Finalization) - } - if err = n.lattice.PurgeBlocks(delivered); err != nil { + // Deliver blocks. + for _, b = range delivered { + if err = n.db.Put(*b); err != nil { return } - // Update pending blocks for verified block (pass sanity check). - pendings = append(pendings, verified...) + b.Finalization.Height = n.prevFinalHeight + 1 + n.app.BlockDelivered(b.Hash, b.Finalization) + n.prevFinalHeight++ + } + if err = n.lattice.PurgeBlocks(delivered); err != nil { + return } return } |