mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
add more debug info for opening WAL files failure
Signed-off-by: Benjamin Wang <wachao@vmware.com>
This commit is contained in:
parent
6a156bd555
commit
686846ec65
@ -72,7 +72,7 @@ func isValidSeq(lg *zap.Logger, names []string) bool {
|
||||
func readWALNames(lg *zap.Logger, dirpath string) ([]string, error) {
|
||||
names, err := fileutil.ReadDir(dirpath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("[readWALNames] fileutil.ReadDir failed: %w", err)
|
||||
}
|
||||
wnames := checkWalNames(lg, names)
|
||||
if len(wnames) == 0 {
|
||||
|
@ -318,10 +318,10 @@ func (w *WAL) renameWALUnlock(tmpdirpath string) (*WAL, error) {
|
||||
func Open(lg *zap.Logger, dirpath string, snap walpb.Snapshot) (*WAL, error) {
|
||||
w, err := openAtIndex(lg, dirpath, snap, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("openAtIndex failed: %w", err)
|
||||
}
|
||||
if w.dirFile, err = fileutil.OpenDir(w.dir); err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("fileutil.OpenDir failed: %w", err)
|
||||
}
|
||||
return w, nil
|
||||
}
|
||||
@ -338,12 +338,12 @@ func openAtIndex(lg *zap.Logger, dirpath string, snap walpb.Snapshot, write bool
|
||||
}
|
||||
names, nameIndex, err := selectWALFiles(lg, dirpath, snap)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("[openAtIndex] selectWALFiles failed: %w", err)
|
||||
}
|
||||
|
||||
rs, ls, closer, err := openWALFiles(lg, dirpath, names, nameIndex, write)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("[openAtIndex] openWALFiles failed: %w", err)
|
||||
}
|
||||
|
||||
// create a WAL ready for reading
|
||||
@ -362,7 +362,7 @@ func openAtIndex(lg *zap.Logger, dirpath string, snap walpb.Snapshot, write bool
|
||||
w.readClose = nil
|
||||
if _, _, err := parseWALName(filepath.Base(w.tail().Name())); err != nil {
|
||||
closer()
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("[openAtIndex] parseWALName failed: %w", err)
|
||||
}
|
||||
w.fp = newFilePipeline(lg, w.dir, SegmentSizeBytes)
|
||||
}
|
||||
@ -373,7 +373,7 @@ func openAtIndex(lg *zap.Logger, dirpath string, snap walpb.Snapshot, write bool
|
||||
func selectWALFiles(lg *zap.Logger, dirpath string, snap walpb.Snapshot) ([]string, int, error) {
|
||||
names, err := readWALNames(lg, dirpath)
|
||||
if err != nil {
|
||||
return nil, -1, err
|
||||
return nil, -1, fmt.Errorf("readWALNames failed: %w", err)
|
||||
}
|
||||
|
||||
nameIndex, ok := searchIndex(lg, names, snap.Index)
|
||||
@ -399,7 +399,7 @@ func openWALFiles(lg *zap.Logger, dirpath string, names []string, nameIndex int,
|
||||
l, err := fileutil.TryLockFile(p, os.O_RDWR, fileutil.PrivateFileMode)
|
||||
if err != nil {
|
||||
closeAll(lg, rcs...)
|
||||
return nil, nil, nil, err
|
||||
return nil, nil, nil, fmt.Errorf("[openWALFiles] fileutil.TryLockFile failed: %w", err)
|
||||
}
|
||||
ls = append(ls, l)
|
||||
rcs = append(rcs, l)
|
||||
@ -408,7 +408,7 @@ func openWALFiles(lg *zap.Logger, dirpath string, names []string, nameIndex int,
|
||||
rf, err := os.OpenFile(p, os.O_RDONLY, fileutil.PrivateFileMode)
|
||||
if err != nil {
|
||||
closeAll(lg, rcs...)
|
||||
return nil, nil, nil, err
|
||||
return nil, nil, nil, fmt.Errorf("[openWALFiles] os.OpenFile failed (%q): %w", p, err)
|
||||
}
|
||||
ls = append(ls, nil)
|
||||
rcs = append(rcs, rf)
|
||||
|
@ -16,6 +16,7 @@ package wal
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"math"
|
||||
@ -195,7 +196,7 @@ func TestOpenAtIndex(t *testing.T) {
|
||||
w.Close()
|
||||
|
||||
emptydir := t.TempDir()
|
||||
if _, err = Open(zaptest.NewLogger(t), emptydir, walpb.Snapshot{}); err != ErrFileNotFound {
|
||||
if _, err = Open(zaptest.NewLogger(t), emptydir, walpb.Snapshot{}); !errors.Is(err, ErrFileNotFound) {
|
||||
t.Errorf("err = %v, want %v", err, ErrFileNotFound)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user