diff --git a/raft/log.go b/raft/log.go index f59c73eec..446726664 100644 --- a/raft/log.go +++ b/raft/log.go @@ -19,9 +19,10 @@ func newLog() *log { } } -func (l *log) maybeAppend(index, logTerm int, ents ...Entry) bool { +func (l *log) maybeAppend(index, logTerm, commit int, ents ...Entry) bool { if l.matchTerm(index, logTerm) { l.append(index, ents...) + l.commit = commit return true } return false diff --git a/raft/raft.go b/raft/raft.go index ee592b29c..8fb1aa5dd 100644 --- a/raft/raft.go +++ b/raft/raft.go @@ -263,9 +263,7 @@ func (sm *stateMachine) Step(m Message) { } handleAppendEntries := func() { - if sm.log.matchTerm(m.Index, m.LogTerm) { - sm.log.commit = m.Commit - sm.log.append(m.Index, m.Entries...) + if sm.log.maybeAppend(m.Index, m.LogTerm, m.Commit, m.Entries...) { sm.send(Message{To: m.From, Type: msgAppResp, Index: sm.log.lastIndex()}) } else { sm.send(Message{To: m.From, Type: msgAppResp, Index: -1})