raft: use if statement to handle voteResp

This commit is contained in:
Xiang Li 2014-05-28 15:00:04 -07:00 committed by Yicheng Qin
parent b3de2b3450
commit 88674a623a

View File

@ -307,18 +307,12 @@ func (sm *stateMachine) Step(m Message) {
case msgApp: case msgApp:
handleAppendEntries() handleAppendEntries()
case msgVote: case msgVote:
switch sm.vote { if (sm.vote == none || sm.vote == m.From) && sm.log.isUpToDate(m.Index, m.LogTerm) {
case m.From: sm.vote = m.From
sm.send(Message{To: m.From, Type: msgVoteResp, Index: sm.log.lastIndex()}) sm.send(Message{To: m.From, Type: msgVoteResp, Index: sm.log.lastIndex()})
return } else {
case none: sm.send(Message{To: m.From, Type: msgVoteResp, Index: -1})
if sm.log.isUpToDate(m.Index, m.LogTerm) {
sm.vote = m.From
sm.send(Message{To: m.From, Type: msgVoteResp, Index: sm.log.lastIndex()})
return
}
} }
sm.send(Message{To: m.From, Type: msgVoteResp, Index: -1})
} }
} }
} }