diff --git a/compact.go b/compact.go index 2dc939bc1e..35cb36a63c 100644 --- a/compact.go +++ b/compact.go @@ -52,7 +52,7 @@ type Compactor interface { Plan(dir string) ([]string, error) // Write persists a Block into a directory. - Write(dest string, b BlockReader, mint, maxt int64) error + Write(dest string, b BlockReader, mint, maxt int64) (ulid.ULID, error) // Compact runs compaction against the provided directories. Must // only be called concurrently with results of Plan(). @@ -321,7 +321,7 @@ func (c *LeveledCompactor) Compact(dest string, dirs ...string) (err error) { return c.write(dest, compactBlockMetas(uid, metas...), blocks...) } -func (c *LeveledCompactor) Write(dest string, b BlockReader, mint, maxt int64) error { +func (c *LeveledCompactor) Write(dest string, b BlockReader, mint, maxt int64) (ulid.ULID, error) { entropy := rand.New(rand.NewSource(time.Now().UnixNano())) uid := ulid.MustNew(ulid.Now(), entropy) @@ -333,7 +333,7 @@ func (c *LeveledCompactor) Write(dest string, b BlockReader, mint, maxt int64) e meta.Compaction.Level = 1 meta.Compaction.Sources = []ulid.ULID{uid} - return c.write(dest, meta, b) + return uid, c.write(dest, meta, b) } // instrumentedChunkWriter is used for level 1 compactions to record statistics diff --git a/db.go b/db.go index f1972f00bc..4e458dea04 100644 --- a/db.go +++ b/db.go @@ -344,7 +344,7 @@ func (db *DB) compact() (changes bool, err error) { mint: mint, maxt: maxt, } - if err = db.compactor.Write(db.dir, head, mint, maxt); err != nil { + if _, err = db.compactor.Write(db.dir, head, mint, maxt); err != nil { return changes, errors.Wrap(err, "persist head block") } changes = true @@ -615,7 +615,8 @@ func (db *DB) Snapshot(dir string) error { return errors.Wrap(err, "error snapshotting headblock") } } - return db.compactor.Write(dir, db.head, db.head.MinTime(), db.head.MaxTime()) + _, err := db.compactor.Write(dir, db.head, db.head.MinTime(), db.head.MaxTime()) + return errors.Wrap(err, "snapshot head block") } // Querier returns a new querier over the data partition for the given time range.