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

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

View File

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