Browse Source

raft: refactor term in log.go

Xiang Li 11 years ago
parent
commit
3dd4c458ca
1 changed files with 10 additions and 5 deletions
  1. 10 5
      raft/log.go

+ 10 - 5
raft/log.go

@@ -201,18 +201,23 @@ func (l *raftLog) lastTerm() uint64 {
 }
 }
 
 
 func (l *raftLog) term(i uint64) uint64 {
 func (l *raftLog) term(i uint64) uint64 {
+	if i >= l.unstable+uint64(len(l.unstableEnts)) {
+		return 0
+	}
+
 	if i < l.unstable {
 	if i < l.unstable {
 		t, err := l.storage.Term(i)
 		t, err := l.storage.Term(i)
+		if err == nil {
+			return t
+		}
 		if err == ErrCompacted {
 		if err == ErrCompacted {
 			return 0
 			return 0
-		} else if err != nil {
+		} else {
 			panic(err) // TODO(bdarnell)
 			panic(err) // TODO(bdarnell)
+			return 0
 		}
 		}
-		return t
-	}
-	if i >= l.unstable+uint64(len(l.unstableEnts)) {
-		return 0
 	}
 	}
+
 	return l.unstableEnts[i-l.unstable].Term
 	return l.unstableEnts[i-l.unstable].Term
 }
 }