forked from hyperledger-labs/SmartBFT
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Deliver Twice Bug Fix In this scenario a decision is delivered twice. Once by the synchronizer and a second time by the view data received during a view change. The reason this is even possible is twofold. First of all, after a view change timeout, we do not stop the running view (since a sync may created a good view), and so the view and the view change are running concurrently. It is feasible for a decision to be made during the concurrent view and a view change to occur while the new view message doesn't include that decision. That decision will be delivered to a node during a sync. Secondly, when the sync returns with the decision belonging to an old view we do not update the checkpoint. And so when there is another view change and a view data msg with that decision is received the node thinks this is a new decision (because its checkpoint was not updated). Finally, the node delivers that decision again from the view data msg (for the second time). The fix includes an update of the checkpoint also when the synchronizer returns with an old view, and aborting a view before sending a view data msg to avoid running concurrent view and view change. Signed-off-by: Hagar Meir <[email protected]>
- Loading branch information
Showing
5 changed files
with
464 additions
and
91 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.