mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
wal: close the directory when Fsync() encounters error
Signed-off-by: Ted Yu <yuzhihong@gmail.com>
This commit is contained in:
parent
262c939805
commit
99eb5cdfdb
24
wal/wal.go
24
wal/wal.go
@ -198,8 +198,21 @@ func Create(lg *zap.Logger, dirpath string, metadata []byte) (*WAL, error) {
|
||||
)
|
||||
return nil, perr
|
||||
}
|
||||
dirCloser := func() error {
|
||||
if perr = pdir.Close(); perr != nil {
|
||||
lg.Warn(
|
||||
"failed to close the parent data directory file",
|
||||
zap.String("parent-dir-path", filepath.Dir(w.dir)),
|
||||
zap.String("dir-path", w.dir),
|
||||
zap.Error(perr),
|
||||
)
|
||||
return perr
|
||||
}
|
||||
return nil
|
||||
}
|
||||
start := time.Now()
|
||||
if perr = fileutil.Fsync(pdir); perr != nil {
|
||||
dirCloser()
|
||||
lg.Warn(
|
||||
"failed to fsync the parent data directory file",
|
||||
zap.String("parent-dir-path", filepath.Dir(w.dir)),
|
||||
@ -209,15 +222,8 @@ func Create(lg *zap.Logger, dirpath string, metadata []byte) (*WAL, error) {
|
||||
return nil, perr
|
||||
}
|
||||
walFsyncSec.Observe(time.Since(start).Seconds())
|
||||
|
||||
if perr = pdir.Close(); perr != nil {
|
||||
lg.Warn(
|
||||
"failed to close the parent data directory file",
|
||||
zap.String("parent-dir-path", filepath.Dir(w.dir)),
|
||||
zap.String("dir-path", w.dir),
|
||||
zap.Error(perr),
|
||||
)
|
||||
return nil, perr
|
||||
if err = dirCloser(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return w, nil
|
||||
|
Loading…
x
Reference in New Issue
Block a user