raft/log.go
func (l *raftLog) mustCheckOutOfBounds(lo, hi uint64) error {
	if lo > hi {
		l.logger.Panicf("invalid slice %d > %d", lo, hi)
	}
	fi := l.firstIndex()
	if lo < fi {
		return ErrCompacted
	}

	length := l.lastIndex() + 1 - fi
	if lo < fi || hi > fi+length {
		l.logger.Panicf("slice[%d,%d) out of bound [%d,%d]", lo, hi, fi, l.lastIndex())
	}
	return nil
}
func (l *raftLog) mustCheckOutOfBounds(lo, hi uint64) error {
	if lo > hi {
		l.logger.Panicf("invalid slice %d > %d", lo, hi)
	}
	fi := l.firstIndex()
	if lo < fi {
		return ErrCompacted
	}

	length := l.lastIndex() + 1 - fi
	if lo < fi || hi > fi+length {
		l.logger.Panicf("slice[%d,%d) out of bound [%d,%d]", lo, hi, fi, l.lastIndex())
	}
	return nil
}
func ( l * raftLog ) mustCheckOutOfBounds ( lo , hi uint64 ) error { if lo > hi { l . logger . Panicf ( " " , lo , hi ) } fi := l . firstIndex ( ) if lo < fi { return ErrCompacted } length := l . lastIndex ( ) + 1 - fi if lo < fi || hi > fi + length { l . logger . Panicf ( " " , lo , hi , fi , l . lastIndex ( ) ) } return nil }
// l.firstIndex <= lo <= hi <= l.firstIndex + len(l.entries)
l . firstIndex < = lo < = hi < = l . firstIndex + len ( l . entries )