raft: clarify conditions in unstable.stableTo
No change in behavior, but clarify interaction with unstable snapshot.
@@ -75,17 +75,21 @@ func (u *unstable) maybeTerm(i uint64) (uint64, bool) {
func (u *unstable) stableTo(i, t uint64) {
gt, ok := u.maybeTerm(i)
if !ok {
+ // Unstable entry missing. Ignore.
+ return
+ }
+ if i < u.offset {
+ // Index matched unstable snapshot, not unstable entry. Ignore.
+ return
+ }
+ if gt != t {
+ // Term mismatch between unstable entry and specified entry. Ignore.
return
}
- // if i < offset, term is matched with the snapshot
- // only update the unstable entries if term is matched with
- // an unstable entry.
- if gt == t && i >= u.offset {
u.entries = u.entries[i+1-u.offset:]
u.offset = i + 1
u.shrinkEntriesArray()
}
-}
// shrinkEntriesArray discards the underlying array used by the entries slice
// if most of it isn't being used. This avoids holding references to a bunch of
