Merge pull request #14862 from ahrtr/add_log_open_wal_failure_20221128

add more debug info for opening WAL files failure
This commit is contained in:
Benjamin Wang 2022-11-29 06:10:16 +08:00 committed by GitHub
commit 319651b784
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 10 deletions

View File

@ -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 {

View File

@ -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)

View File

@ -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)
}
}