From 0d200baf72960815c4b7e51dba1fb1adfd011350 Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Mon, 24 Nov 2014 23:27:57 -0800 Subject: [PATCH] raft: refine raftLog.term --- raft/log.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/raft/log.go b/raft/log.go index 2e66d48dc..bacbbe05b 100644 --- a/raft/log.go +++ b/raft/log.go @@ -195,23 +195,22 @@ func (l *raftLog) lastTerm() uint64 { } func (l *raftLog) term(i uint64) uint64 { - if i >= l.unstable+uint64(len(l.unstableEnts)) { + switch { + case i > l.lastIndex(): return 0 - } - - if i < l.unstable { + case i < l.unstable: t, err := l.storage.Term(i) - if err == nil { + switch err { + case nil: return t - } - if err == ErrCompacted { + case ErrCompacted: return 0 - } else { + default: panic(err) // TODO(bdarnell) } + default: + return l.unstableEnts[i-l.unstable].Term } - - return l.unstableEnts[i-l.unstable].Term } func (l *raftLog) entries(i uint64) []pb.Entry {