diff --git a/raft/log.go b/raft/log.go index b13bd8b52..fd9ccdae1 100644 --- a/raft/log.go +++ b/raft/log.go @@ -81,7 +81,7 @@ func (l *raftLog) maybeAppend(index, logTerm, committed uint64, ents ...pb.Entry switch { case ci == 0: case ci <= l.committed: - panic("conflict with committed entry") + log.Panicf("conflict(%d) with committed entry [committed(%d)]", ci, l.committed) default: l.append(ci-1, ents[ci-from:]...) } diff --git a/raft/storage.go b/raft/storage.go index 94dddc498..9d62306e4 100644 --- a/raft/storage.go +++ b/raft/storage.go @@ -176,5 +176,12 @@ func (ms *MemoryStorage) Compact(i uint64, cs *pb.ConfState, data []byte) error func (ms *MemoryStorage) Append(entries []pb.Entry) { ms.Lock() defer ms.Unlock() + if len(entries) == 0 { + return + } + offset := entries[0].Index - ms.snapshot.Metadata.Index + if uint64(len(ms.ents)) >= offset { + ms.ents = ms.ents[:offset] + } ms.ents = append(ms.ents, entries...) }