|
@@ -590,11 +590,6 @@ func (r *raft) Step(m pb.Message) error {
|
|
|
}
|
|
}
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
- if m.Type == pb.MsgTransferLeader {
|
|
|
|
|
- if r.state != StateLeader {
|
|
|
|
|
- r.logger.Debugf("%x [term %d state %v] ignoring MsgTransferLeader to %x", r.id, r.Term, r.state, m.From)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
switch {
|
|
switch {
|
|
|
case m.Term == 0:
|
|
case m.Term == 0:
|
|
@@ -874,6 +869,13 @@ func stepFollower(r *raft, m pb.Message) {
|
|
|
r.id, r.raftLog.lastTerm(), r.raftLog.lastIndex(), r.Vote, m.From, m.LogTerm, m.Index, r.Term)
|
|
r.id, r.raftLog.lastTerm(), r.raftLog.lastIndex(), r.Vote, m.From, m.LogTerm, m.Index, r.Term)
|
|
|
r.send(pb.Message{To: m.From, Type: pb.MsgVoteResp, Reject: true})
|
|
r.send(pb.Message{To: m.From, Type: pb.MsgVoteResp, Reject: true})
|
|
|
}
|
|
}
|
|
|
|
|
+ case pb.MsgTransferLeader:
|
|
|
|
|
+ if r.lead == None {
|
|
|
|
|
+ r.logger.Infof("%x no leader at term %d; dropping leader transfer msg", r.id, r.Term)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ m.To = r.lead
|
|
|
|
|
+ r.send(m)
|
|
|
case pb.MsgTimeoutNow:
|
|
case pb.MsgTimeoutNow:
|
|
|
r.logger.Infof("%x [term %d] received MsgTimeoutNow from %x and starts an election to get leadership.", r.id, r.Term, m.From)
|
|
r.logger.Infof("%x [term %d] received MsgTimeoutNow from %x and starts an election to get leadership.", r.id, r.Term, m.From)
|
|
|
r.campaign(campaignTransfer)
|
|
r.campaign(campaignTransfer)
|