-
Notifications
You must be signed in to change notification settings - Fork 399
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Enable Joint Consensus. This commit enables Joint Consensus as described by the Raft paper (https://raft.github.io/raft.pdf). As of this commit it is possible to undergo arbitrary peer membership changes in a safe way. Notably, this gives us a resilient "Replace Node" functionality, which is able to progress in the situation of a loss of both the old (removed) and new (added) peers go down. This is not possible with our previous one-at-a-time strategy. Unfortunately, this feature is fairly large in scope. Thankfully it's mostly testing code! There is some new API surface, notably the `Raft::begin_membership_change` function. There is also some moved API surface. The `RaftLog::applied_to` function has been moved to `Raft::commit_apply`. The old function, while it still works, carries a depreaction warning. In the future we should make it a `pub(crate)` function. Finally, many tests were added to ensure Joint Consensus can work. TODOs: - Consider renaming `progress::Configuration` to `progress::Topology`. - Test interaction between Joint Consensus and one-by-one method. - Think of more cases we might need. - Documentation update. Signed-off-by: Hoverbear <operator@hoverbear.org>
- Loading branch information
Showing
21 changed files
with
3,406 additions
and
411 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
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
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
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
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
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.