From b70be1965366184078edd34a93bed108edbcf3be Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Wed, 28 May 2014 08:24:09 -0700 Subject: [PATCH] raft: add log.maybeCommit --- raft/log.go | 8 ++++++++ raft/raft.go | 7 +------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/raft/log.go b/raft/log.go index ed51cb764..f59c73eec 100644 --- a/raft/log.go +++ b/raft/log.go @@ -65,6 +65,14 @@ func (l *log) matchTerm(i, term int) bool { return l.ents[i].Term == term } +func (l *log) maybeCommit(maxIndex, term int) bool { + if maxIndex > l.commit && l.term(maxIndex) == term { + l.commit = maxIndex + return true + } + return false +} + func (l *log) nextEnts() (ents []Entry) { if l.commit > l.applied { ents = l.ents[l.applied+1 : l.commit+1] diff --git a/raft/raft.go b/raft/raft.go index 6540e50fa..ee592b29c 100644 --- a/raft/raft.go +++ b/raft/raft.go @@ -166,12 +166,7 @@ func (sm *stateMachine) maybeCommit() bool { sort.Sort(sort.Reverse(sort.IntSlice(mis))) mci := mis[sm.q()-1] - if mci > sm.log.commit && sm.log.term(mci) == sm.term { - sm.log.commit = mci - return true - } - - return false + return sm.log.maybeCommit(mci, sm.term) } // nextEnts returns the appliable entries and updates the applied index