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) {
|
func readWALNames(lg *zap.Logger, dirpath string) ([]string, error) {
|
||||||
names, err := fileutil.ReadDir(dirpath)
|
names, err := fileutil.ReadDir(dirpath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("[readWALNames] fileutil.ReadDir failed: %w", err)
|
||||||
}
|
}
|
||||||
wnames := checkWalNames(lg, names)
|
wnames := checkWalNames(lg, names)
|
||||||
if len(wnames) == 0 {
|
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) {
|
func Open(lg *zap.Logger, dirpath string, snap walpb.Snapshot) (*WAL, error) {
|
||||||
w, err := openAtIndex(lg, dirpath, snap, true)
|
w, err := openAtIndex(lg, dirpath, snap, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("openAtIndex failed: %w", err)
|
||||||
}
|
}
|
||||||
if w.dirFile, err = fileutil.OpenDir(w.dir); err != nil {
|
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
|
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)
|
names, nameIndex, err := selectWALFiles(lg, dirpath, snap)
|
||||||
if err != nil {
|
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)
|
rs, ls, closer, err := openWALFiles(lg, dirpath, names, nameIndex, write)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("[openAtIndex] openWALFiles failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// create a WAL ready for reading
|
// 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
|
w.readClose = nil
|
||||||
if _, _, err := parseWALName(filepath.Base(w.tail().Name())); err != nil {
|
if _, _, err := parseWALName(filepath.Base(w.tail().Name())); err != nil {
|
||||||
closer()
|
closer()
|
||||||
return nil, err
|
return nil, fmt.Errorf("[openAtIndex] parseWALName failed: %w", err)
|
||||||
}
|
}
|
||||||
w.fp = newFilePipeline(lg, w.dir, SegmentSizeBytes)
|
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) {
|
func selectWALFiles(lg *zap.Logger, dirpath string, snap walpb.Snapshot) ([]string, int, error) {
|
||||||
names, err := readWALNames(lg, dirpath)
|
names, err := readWALNames(lg, dirpath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, -1, err
|
return nil, -1, fmt.Errorf("readWALNames failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
nameIndex, ok := searchIndex(lg, names, snap.Index)
|
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)
|
l, err := fileutil.TryLockFile(p, os.O_RDWR, fileutil.PrivateFileMode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
closeAll(lg, rcs...)
|
closeAll(lg, rcs...)
|
||||||
return nil, nil, nil, err
|
return nil, nil, nil, fmt.Errorf("[openWALFiles] fileutil.TryLockFile failed: %w", err)
|
||||||
}
|
}
|
||||||
ls = append(ls, l)
|
ls = append(ls, l)
|
||||||
rcs = append(rcs, 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)
|
rf, err := os.OpenFile(p, os.O_RDONLY, fileutil.PrivateFileMode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
closeAll(lg, rcs...)
|
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)
|
ls = append(ls, nil)
|
||||||
rcs = append(rcs, rf)
|
rcs = append(rcs, rf)
|
||||||
|
@ -16,6 +16,7 @@ package wal
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"math"
|
"math"
|
||||||
@ -195,7 +196,7 @@ func TestOpenAtIndex(t *testing.T) {
|
|||||||
w.Close()
|
w.Close()
|
||||||
|
|
||||||
emptydir := t.TempDir()
|
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)
|
t.Errorf("err = %v, want %v", err, ErrFileNotFound)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user