mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdserver: make the wal repairing logic clear
This commit is contained in:
parent
684ebd95ae
commit
0b9a318e68
@ -78,19 +78,22 @@ func readWAL(waldir string, snap walpb.Snapshot) (w *wal.WAL, id, cid types.ID,
|
||||
wmetadata []byte
|
||||
)
|
||||
|
||||
for i := 0; i < 2; i++ {
|
||||
repaired := false
|
||||
for {
|
||||
if w, err = wal.Open(waldir, snap); err != nil {
|
||||
log.Fatalf("etcdserver: open wal error: %v", err)
|
||||
}
|
||||
if wmetadata, st, ents, err = w.ReadAll(); err != nil {
|
||||
w.Close()
|
||||
if i != 0 || err != io.ErrUnexpectedEOF {
|
||||
log.Fatalf("etcdserver: read wal error: %v", err)
|
||||
// we can only repair ErrUnexpectedEOF and we never repair twice.
|
||||
if repaired || err != io.ErrUnexpectedEOF {
|
||||
log.Fatalf("etcdserver: read wal error (%v) and cannot be repaired", err)
|
||||
}
|
||||
if !wal.Repair(waldir) {
|
||||
log.Fatalf("etcdserver: WAL error (%v) cannot be repaired", err)
|
||||
} else {
|
||||
log.Printf("etcdserver: repaired WAL error (%v)", err)
|
||||
repaired = true
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user