Browse Source

raft: add log.maybeAppend

Xiang Li 11 years ago
parent
commit
bee9d8bea5
2 changed files with 3 additions and 4 deletions
  1. 2 1
      raft/log.go
  2. 1 3
      raft/raft.go

+ 2 - 1
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

+ 1 - 3
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})