Skip to content

Commit

Permalink
Correct last index
Browse files Browse the repository at this point in the history
  • Loading branch information
Hoverbear committed Sep 27, 2018
1 parent 27c0b25 commit 66c6aad
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 14 deletions.
6 changes: 4 additions & 2 deletions src/raft.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1864,7 +1864,7 @@ impl<T: Storage> Raft<T> {
}
};

let progress = Progress::new(self.raft_log.last_index(), self.max_inflight, learner);
let progress = Progress::new(self.raft_log.last_index() + 1, self.max_inflight, learner);
let result = if learner {
self.mut_prs().insert_learner(id, progress)
} else if self.prs().learner_ids().contains(&id) {
Expand All @@ -1876,7 +1876,9 @@ impl<T: Storage> Raft<T> {
if let Err(e) = result {
panic!("{}", e)
}
if self.id == id { self.is_learner = learner };
if self.id == id {
self.is_learner = learner
};
// When a node is first added/promoted, we should mark it as recently active.
// Otherwise, check_quorum may cause us to step down if it is invoked
// before the added node has a chance to commuicate with us.
Expand Down
15 changes: 3 additions & 12 deletions tests/integration_cases/test_raft.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2986,10 +2986,7 @@ fn test_remove_node() {
setup_for_test();
let mut r = new_test_raft(1, vec![1, 2], 10, 1, new_storage());
r.remove_node(2);
assert_eq!(
r.prs().voter_ids().iter().next().unwrap(),
&1
);
assert_eq!(r.prs().voter_ids().iter().next().unwrap(), &1);

// remove all nodes from cluster
r.remove_node(1);
Expand Down Expand Up @@ -3754,10 +3751,7 @@ fn test_add_learner() {
let mut n1 = new_test_raft(1, vec![1], 10, 1, new_storage());
n1.add_learner(2);

assert_eq!(
n1.prs().learner_ids().iter().next().unwrap(),
&2
);
assert_eq!(n1.prs().learner_ids().iter().next().unwrap(), &2);
assert!(n1.prs().get(2).unwrap().is_learner);
}

Expand All @@ -3768,10 +3762,7 @@ fn test_remove_learner() {
setup_for_test();
let mut n1 = new_test_learner_raft(1, vec![1], vec![2], 10, 1, new_storage());
n1.remove_node(2);
assert_eq!(
n1.prs().voter_ids().iter().next().unwrap(),
&1
);
assert_eq!(n1.prs().voter_ids().iter().next().unwrap(), &1);
assert!(n1.prs().learner_ids().is_empty());

n1.remove_node(1);
Expand Down

0 comments on commit 66c6aad

Please # to comment.