Browse Source

raft: comments for isUpToDate

Xiang Li 11 years ago
parent
commit
8cd95e916d
1 changed files with 7 additions and 2 deletions
  1. 7 2
      raft/log.go

+ 7 - 2
raft/log.go

@@ -152,9 +152,14 @@ func (l *raftLog) entries(i uint64) []pb.Entry {
 	return l.slice(i, l.lastIndex()+1)
 }
 
-func (l *raftLog) isUpToDate(i, term uint64) bool {
+// isUpToDate determines if the given (lastIndex,term) log is more up-to-date
+// by comparing the index and term of the last entries in the existing logs.
+// If the logs have last entries with different terms, then the log with the
+// later term is more up-to-date. If the logs end with the same term, then
+// whichever log has the larger lastIndex is more up-to-date.
+func (l *raftLog) isUpToDate(lasti, term uint64) bool {
 	e := l.at(l.lastIndex())
-	return term > e.Term || (term == e.Term && i >= l.lastIndex())
+	return term > e.Term || (term == e.Term && lasti >= l.lastIndex())
 }
 
 func (l *raftLog) matchTerm(i, term uint64) bool {