raft/log.go
func (l *raftLog) maybeAppend(index, logTerm, committed uint64, ents ...pb.Entry) (lastnewi uint64, ok bool) {
	if l.matchTerm(index, logTerm) {
		lastnewi = index + uint64(len(ents))
		ci := l.findConflict(ents)
		switch {
		case ci == 0:
		case ci <= l.committed:
			l.logger.Panicf("entry %d conflict with committed entry [committed(%d)]", ci, l.committed)
		default:
			offset := index + 1
			l.append(ents[ci-offset:]...)
		}
		l.commitTo(min(committed, lastnewi))
		return lastnewi, true
	}
	return 0, false
}
func (l *raftLog) maybeAppend(index, logTerm, committed uint64, ents ...pb.Entry) (lastnewi uint64, ok bool) {
	if l.matchTerm(index, logTerm) {
		lastnewi = index + uint64(len(ents))
		ci := l.findConflict(ents)
		switch {
		case ci == 0:
		case ci <= l.committed:
			l.logger.Panicf("entry %d conflict with committed entry [committed(%d)]", ci, l.committed)
		default:
			offset := index + 1
			l.append(ents[ci-offset:]...)
		}
		l.commitTo(min(committed, lastnewi))
		return lastnewi, true
	}
	return 0, false
}
func ( l * raftLog ) maybeAppend ( index , logTerm , committed uint64 , ents ... pb . Entry ) ( lastnewi uint64 , ok bool ) { if l . matchTerm ( index , logTerm ) { lastnewi = index + uint64 ( len ( ents ) ) ci := l . findConflict ( ents ) switch { case ci == 0 : case ci <= l . committed : l . logger . Panicf ( " " , ci , l . committed ) default : offset := index + 1 l . append ( ents [ ci - offset : ] ... ) } l . commitTo ( min ( committed , lastnewi ) ) return lastnewi , true } return 0 , false }
// maybeAppend returns (0, false) if the entries cannot be appended. Otherwise,
// it returns (last index of new entries, true).
maybeAppend returns ( 0 false ) if the entries cannot be appended . Otherwise it returns ( last index of new entries true ) .