This repository has been archived by the owner on Apr 17, 2019. It is now read-only.
Yac gate propagates correct round to Synchronizer #2231
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Signed-off-by: Igor Egorov [email protected]
Description of the Change
The case when a node is not voted yet but has received votes for a round is possible.
That was a root cause of a rare issue, when a node was not switched to the next round (when reject commit message arrived).
As a result, the whole network can stop working (if there are enough of that buggy peers).
The change brings the correct round number propagation from Yac gate to Synchronizer.
Thus the peer goes to the correct round despite what was happen or received.
The new tests are created (
yac_gate_test -> CommitFromTheFuture
tests)Benefits
Proper Yac gate behavior.
Possible Drawbacks
¯\(°_o)/¯
Usage Examples or Tests
yac_gate_test