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)
Signed-off-by: Igor Egorov igor@soramitsu.co.jp
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