etcdserver: truncate WAL from correct index when forcing new cluster

When loading from a backup with a snapshot and WAL, the length of WAL entries
can be lower than the current index integer value, causing a panic when
slicing off uncommitted entries. This looks for WAL entries higher than
the current index before slicing.
This commit is contained in:
Owen Smith 2014-11-25 15:18:14 +00:00
parent e3cb3d640b
commit c67b937d62

View File

@ -33,8 +33,12 @@ func restartAsStandaloneNode(cfg *ServerConfig, index uint64, snapshot *raftpb.S
cfg.Cluster.SetID(cid) cfg.Cluster.SetID(cid)
// discard the previously uncommitted entries // discard the previously uncommitted entries
if len(ents) != 0 { for i, ent := range ents {
ents = ents[:st.Commit+1] if ent.Index > st.Commit {
log.Printf("etcdserver: discarding %d uncommited WAL entries ", len(ents)-i)
ents = ents[:i]
break
}
} }
// force append the configuration change entries // force append the configuration change entries