-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix log divergence bug #508
Merged
Merged
Conversation
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
13212ab
to
882d698
Compare
038961d
to
ead3c57
Compare
When a follower with uncommitted entries in a prior term when it was leader receives certain append entry rpc combinations it would incorrectly increment and evalaute the leader's commit index and in some cases apply uncommitted entries. This commit ensures that the commit index is only incremented and evaluated _if_ the local log's last index is validated against the leaders's log. Also handle the case where a snapshot with an index lower than the follower's last applied index would cause the replication to this follower to stop.
ead3c57
to
4168a59
Compare
the-mikedavis
approved these changes
Feb 12, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this looks good, I just found a few typos
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
@kjnilsson do we want to ship it in a |
kjnilsson
added a commit
that referenced
this pull request
Feb 12, 2025
* Fix log divergence bug. When a follower with uncommitted entries in a prior term when it was leader receives certain append entry rpc combinations it would incorrectly increment and evalaute the leader's commit index and in some cases apply uncommitted entries. This commit ensures that the commit index is only incremented and evaluated _if_ the local log's last index is validated against the leaders's log. Also handle the case where a snapshot with an index lower than the follower's last applied index would cause the replication to this follower to stop. * reset open segment counter on init * Update src/ra_server.erl Co-authored-by: Michael Davis <mcarsondavis@gmail.com> * Update src/ra_server.erl Co-authored-by: Michael Davis <mcarsondavis@gmail.com> * Update src/ra_server.erl Co-authored-by: Michael Davis <mcarsondavis@gmail.com> --------- Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
When a follower with uncommitted entries in a prior term when it
was leader receives certain append entry rpc combinations it would
incorrectly increment and evalaute the leader's commit index and
in some cases apply uncommitted entries.
This commit ensures that the commit index is only incremented and
evaluated if the local log's last index is validated against
the leaders's log.
Also handle the case where a snapshot with an index lower than
the follower's last applied index would cause the replication
to this follower to stop.