From f04ec031eb04fcf1d73388e2beed4f2bbc3c903d Mon Sep 17 00:00:00 2001 From: Fabian Reinartz Date: Wed, 4 Oct 2017 10:42:25 +0200 Subject: [PATCH] compact: sync temporary directory --- compact.go | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/compact.go b/compact.go index 619fda060c..3bf5e931d6 100644 --- a/compact.go +++ b/compact.go @@ -20,12 +20,12 @@ import ( "sort" "time" - "github.com/prometheus/tsdb/fileutil" "github.com/go-kit/kit/log" "github.com/oklog/ulid" "github.com/pkg/errors" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/tsdb/chunks" + "github.com/prometheus/tsdb/fileutil" "github.com/prometheus/tsdb/labels" ) @@ -420,21 +420,20 @@ func (c *LeveledCompactor) write(dest string, meta *BlockMeta, blocks ...BlockRe return errors.Wrap(err, "write new tombstones file") } - // Block successfully written, make visible and remove old ones. - if err := renameFile(tmp, dir); err != nil { - return errors.Wrap(err, "rename block dir") - } - // Properly sync parent dir to ensure changes are visible. - df, err := fileutil.OpenDir(dir) + df, err := fileutil.OpenDir(tmp) if err != nil { - return errors.Wrap(err, "sync block dir") + return errors.Wrap(err, "open temporary block dir") } defer df.Close() if err := fileutil.Fsync(df); err != nil { - return errors.Wrap(err, "sync block dir") + return errors.Wrap(err, "sync temporary dir file") } + // Block successfully written, make visible and remove old ones. + if err := renameFile(tmp, dir); err != nil { + return errors.Wrap(err, "rename block dir") + } return nil } @@ -750,13 +749,10 @@ func renameFile(from, to string) error { if err != nil { return err } - defer pdir.Close() if err = fileutil.Fsync(pdir); err != nil { + pdir.Close() return err } - if err = pdir.Close(); err != nil { - return err - } - return nil + return pdir.Close() }