diff options
author | Mission Liao <mission.liao@dexon.org> | 2019-01-11 12:58:30 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-11 12:58:30 +0800 |
commit | 809e8def862fdfa792061a448f952747f1af4d3c (patch) | |
tree | bd038971e65a09bc9bb399f03a37b194ce67ae3c /integration_test/consensus_test.go | |
parent | fa25817354d5b7d40f5911004232392acfe7fe53 (diff) | |
download | dexon-consensus-809e8def862fdfa792061a448f952747f1af4d3c.tar dexon-consensus-809e8def862fdfa792061a448f952747f1af4d3c.tar.gz dexon-consensus-809e8def862fdfa792061a448f952747f1af4d3c.tar.bz2 dexon-consensus-809e8def862fdfa792061a448f952747f1af4d3c.tar.lz dexon-consensus-809e8def862fdfa792061a448f952747f1af4d3c.tar.xz dexon-consensus-809e8def862fdfa792061a448f952747f1af4d3c.tar.zst dexon-consensus-809e8def862fdfa792061a448f952747f1af4d3c.zip |
syncer: fix issues when switching to core.Consensus (#418)
- when confirmed blocks passed to core.Consensus
aren't continuous in position in some chain, the
pulling would skip those missing blocks.
- fix: when some block is missing, avoid adding it
and all blocks after it to core.Consensus.
- we need to avoid the receive channel of network
module full.
- fix: during switching to core.Consensus, we
need to launch a dummy receiver to receive
from receive channel of network module.
- fix: between the period during core.Consensus
created and before running, a dummy receiver is
also required to receive from receive channel of
network module.
Diffstat (limited to 'integration_test/consensus_test.go')
-rw-r--r-- | integration_test/consensus_test.go | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/integration_test/consensus_test.go b/integration_test/consensus_test.go index 99de7c9..fc6bb47 100644 --- a/integration_test/consensus_test.go +++ b/integration_test/consensus_test.go @@ -367,8 +367,8 @@ func (s *ConsensusTestSuite) TestSync() { } // Clean syncNode's network receive channel, or it might exceed the limit // and block other go routines. - dummyReceiverCtxCancel := test.LaunchDummyReceiver( - context.Background(), syncNode.network) + dummyReceiverCtxCancel, dummyFinished := utils.LaunchDummyReceiver( + context.Background(), syncNode.network.ReceiveChan(), nil) ReachAlive: for { // Check if any error happened or sleep for a period of time. @@ -390,6 +390,7 @@ ReachAlive: } } dummyReceiverCtxCancel() + <-dummyFinished break } // Initiate Syncer. @@ -456,7 +457,8 @@ ReachAlive: stoppedNode.con.Stop() stoppedNode.con = nil fmt.Println("one node stopped", stoppedNode.ID) - test.LaunchDummyReceiver(runnerCtx, stoppedNode.network) + utils.LaunchDummyReceiver( + runnerCtx, stoppedNode.network.ReceiveChan(), nil) continue } if pos.Round < untilRound { |