raft: set term in reset

This commit is contained in:
Blake Mizerany 2014-06-15 18:52:10 -07:00 committed by Yicheng Qin
parent 67808f8db1
commit 5778c49689
2 changed files with 8 additions and 9 deletions

View File

@ -118,7 +118,7 @@ func newStateMachine(id int, peers []int) *stateMachine {
for p := range peers {
sm.ins[p] = &index{}
}
sm.reset()
sm.reset(0)
return sm
}
@ -181,7 +181,8 @@ func (sm *stateMachine) nextEnts() (ents []Entry) {
return sm.log.nextEnts()
}
func (sm *stateMachine) reset() {
func (sm *stateMachine) reset(term int) {
sm.term = term
sm.lead = none
sm.vote = none
sm.votes = make(map[int]bool)
@ -198,8 +199,7 @@ func (sm *stateMachine) q() int {
}
func (sm *stateMachine) becomeFollower(term, lead int) {
sm.reset()
sm.term = term
sm.reset(term)
sm.lead = lead
sm.state = stateFollower
sm.pendingConf = false
@ -210,8 +210,7 @@ func (sm *stateMachine) becomeCandidate() {
if sm.state == stateLeader {
panic("invalid transition [leader -> candidate]")
}
sm.reset()
sm.term++
sm.reset(sm.term + 1)
sm.vote = sm.id
sm.state = stateCandidate
}
@ -221,7 +220,7 @@ func (sm *stateMachine) becomeLeader() {
if sm.state == stateFollower {
panic("invalid transition [follower -> leader]")
}
sm.reset()
sm.reset(sm.term)
sm.lead = sm.id
sm.state = stateLeader

View File

@ -653,7 +653,7 @@ func ents(terms ...int) *stateMachine {
}
sm := &stateMachine{log: &log{ents: ents}}
sm.reset()
sm.reset(0)
return sm
}
@ -681,7 +681,7 @@ func newNetwork(peers ...Interface) *network {
for i := range peerAddrs {
v.ins[i] = &index{}
}
v.reset()
v.reset(0)
}
}
return &network{peers: peers, dropm: make(map[connem]float64)}