raft: refine raftLog.term

This commit is contained in:
Yicheng Qin 2014-11-24 23:27:57 -08:00
parent 7fcaca6d18
commit 0d200baf72

View File

@ -195,24 +195,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)) { switch {
case i > l.lastIndex():
return 0 return 0
} case i < l.unstable:
if i < l.unstable {
t, err := l.storage.Term(i) t, err := l.storage.Term(i)
if err == nil { switch err {
case nil:
return t return t
} case ErrCompacted:
if err == ErrCompacted {
return 0 return 0
} else { default:
panic(err) // TODO(bdarnell) 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 { func (l *raftLog) entries(i uint64) []pb.Entry {
return l.slice(i, l.lastIndex()+1) return l.slice(i, l.lastIndex()+1)