Skip to content

Commit

Permalink
Fix issues with follower committing log entries
Browse files Browse the repository at this point in the history
* Do not advance commit index if appending entries
  is not successful.
* Even if successful, only advance commit index as far
  as the last matching entry.
  • Loading branch information
rhymu8354 committed Mar 8, 2021
1 parent 5e7da11 commit 75e0936
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
7 changes: 5 additions & 2 deletions src/server/inner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -802,8 +802,11 @@ impl<S, T> Inner<S, T> {
append_entries,
)
};
if leader_commit > self.commit_index {
self.commit_log(leader_commit);
if success {
let new_commit_index = leader_commit.min(next_log_index - 1);
if new_commit_index > self.commit_index {
self.commit_log(new_commit_index);
}
}
let message = Message {
content: MessageContent::AppendEntriesResponse {
Expand Down
6 changes: 3 additions & 3 deletions src/server/tests/replication_response.rs
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ fn follower_match_appended_entries() {
Message {
content: MessageContent::AppendEntries(
AppendEntriesContent {
leader_commit: 0,
leader_commit: 3,
prev_log_index: 0,
prev_log_term: 0,
log: vec![
Expand All @@ -343,7 +343,7 @@ fn follower_match_appended_entries() {
.await;
fixture
.expect_append_entries_response(&AwaitAppendEntriesResponseArgs {
commit_index: None,
commit_index: Some(2),
expect_state_change: false,
success: true,
next_log_index: 3,
Expand Down Expand Up @@ -483,7 +483,7 @@ fn follower_rejects_appended_entries_with_mismatched_previous_term() {
Message {
content: MessageContent::AppendEntries(
AppendEntriesContent {
leader_commit: 0,
leader_commit: 3,
prev_log_index: 2,
prev_log_term: 3,
log: vec![
Expand Down

0 comments on commit 75e0936

Please sign in to comment.