From 261cd9f39355888fe0811b09624a397ddc0f3efd Mon Sep 17 00:00:00 2001 From: Goutham Veeramachaneni Date: Tue, 6 Jun 2017 20:23:20 +0530 Subject: [PATCH] Incorporate feedback. Move back to {Enable, Disable}Compactions. Signed-off-by: Goutham Veeramachaneni --- block.go | 7 +++++-- db.go | 25 +++++++++++++++++-------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/block.go b/block.go index 792a96e9fe..d25b5b4bfa 100644 --- a/block.go +++ b/block.go @@ -291,8 +291,11 @@ func (pb *persistedBlock) Snapshot(dir string) error { } // Hardlink meta, index and tombstones - filenames := []string{metaFilename, indexFilename, tombstoneFilename} - for _, fname := range filenames { + for _, fname := range []string{ + metaFilename, + indexFilename, + tombstoneFilename, + } { if err := os.Link(filepath.Join(pb.dir, fname), filepath.Join(blockDir, fname)); err != nil { return errors.Wrapf(err, "create snapshot %s", fname) } diff --git a/db.go b/db.go index f7a646372a..462a3060e2 100644 --- a/db.go +++ b/db.go @@ -530,20 +530,29 @@ func (db *DB) Close() error { return merr.Err() } -// ToggleCompactions toggles compactions and returns if compactions are on or not. -func (db *DB) ToggleCompactions() bool { +// DisableCompactions disables compactions. +func (db *DB) DisableCompactions() error { if db.compacting { db.cmtx.Lock() db.compacting = false - return false + db.logger.Log("msg", "compactions disabled") } - db.cmtx.Unlock() - db.compacting = true - return true + return nil } -// Snapshot writes the current headBlock snapshots to snapshots directory. +// EnableCompactions enables compactions. +func (db *DB) EnableCompactions() error { + if !db.compacting { + db.cmtx.Unlock() + db.compacting = true + db.logger.Log("msg", "compactions enabled") + } + + return nil +} + +// Snapshot writes the current data to the directory. func (db *DB) Snapshot(dir string) error { db.mtx.Lock() // To block any appenders. defer db.mtx.Unlock() @@ -553,7 +562,7 @@ func (db *DB) Snapshot(dir string) error { blocks := db.blocks[:] for _, b := range blocks { - db.logger.Log("msg", "compacting block", "block", b.Dir()) + db.logger.Log("msg", "snapshotting block", "block", b) if err := b.Snapshot(dir); err != nil { return errors.Wrap(err, "error snapshotting headblock") }