|
|
@@ -697,7 +697,7 @@ func (r *raft) Step(m pb.Message) error {
|
|
|
}
|
|
|
switch {
|
|
|
case m.Type == pb.MsgPreVote:
|
|
|
- // Never change our term in response to a PreVote
|
|
|
+ // Never change our term in response to a PreVote
|
|
|
case m.Type == pb.MsgPreVoteResp && !m.Reject:
|
|
|
// We send pre-vote requests with a term in our future. If the
|
|
|
// pre-vote is granted, we will increment our term when we get a
|
|
|
@@ -757,6 +757,8 @@ func (r *raft) Step(m pb.Message) error {
|
|
|
}
|
|
|
|
|
|
case pb.MsgVote, pb.MsgPreVote:
|
|
|
+ // The m.Term > r.Term clause is for MsgPreVote. For MsgVote m.Term should
|
|
|
+ // always equal r.Term.
|
|
|
if (r.Vote == None || m.Term > r.Term || r.Vote == m.From) && r.raftLog.isUpToDate(m.Index, m.LogTerm) {
|
|
|
r.logger.Infof("%x [logterm: %d, index: %d, vote: %x] cast %s for %x [logterm: %d, index: %d] at term %d",
|
|
|
r.id, r.raftLog.lastTerm(), r.raftLog.lastIndex(), r.Vote, m.Type, m.From, m.LogTerm, m.Index, r.Term)
|
|
|
@@ -1015,7 +1017,6 @@ func stepCandidate(r *raft, m pb.Message) {
|
|
|
}
|
|
|
case pb.MsgTimeoutNow:
|
|
|
r.logger.Debugf("%x [term %d state %v] ignored MsgTimeoutNow from %x", r.id, r.Term, r.state, m.From)
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
|