diff --git a/raft/node_test.go b/raft/node_test.go index 4c78aba4a..4da225396 100644 --- a/raft/node_test.go +++ b/raft/node_test.go @@ -304,7 +304,7 @@ func TestNodeStart(t *testing.T) { wants := []Ready{ { SoftState: &SoftState{Lead: 1, RaftState: StateLeader}, - HardState: raftpb.HardState{Term: 2, Commit: 2}, + HardState: raftpb.HardState{Term: 2, Commit: 2, Vote: 1}, Entries: []raftpb.Entry{ {Type: raftpb.EntryConfChange, Term: 1, Index: 1, Data: ccdata}, {Term: 2, Index: 2}, @@ -315,7 +315,7 @@ func TestNodeStart(t *testing.T) { }, }, { - HardState: raftpb.HardState{Term: 2, Commit: 3}, + HardState: raftpb.HardState{Term: 2, Commit: 3, Vote: 1}, Entries: []raftpb.Entry{{Term: 2, Index: 3, Data: []byte("foo")}}, CommittedEntries: []raftpb.Entry{{Term: 2, Index: 3, Data: []byte("foo")}}, }, diff --git a/raft/raft.go b/raft/raft.go index 16b61c571..d936a3159 100644 --- a/raft/raft.go +++ b/raft/raft.go @@ -306,9 +306,11 @@ func (r *raft) maybeCommit() bool { } func (r *raft) reset(term uint64) { - r.Term = term + if r.Term != term { + r.Term = term + r.Vote = None + } r.lead = None - r.Vote = None r.elapsed = 0 r.votes = make(map[uint64]bool) for i := range r.prs {