mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #11814 from tedyu/dir-closer
wal: close the directory when Fsync() encounters error
This commit is contained in:
commit
fb77f9b1d5
24
wal/wal.go
24
wal/wal.go
@ -199,8 +199,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)),
|
||||
@ -210,15 +223,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