From 4a4a706234bd2e1ea0c94e14235b7b0d92b65702 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 2 Nov 2017 00:30:19 +0800 Subject: [PATCH] close blocks which will be remove --- db.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/db.go b/db.go index 9d472e91a..aca7249df 100644 --- a/db.go +++ b/db.go @@ -379,6 +379,27 @@ func (db *DB) compact() (changes bool, err error) { } changes = true + // close blocks in plan so that we can remove files. + var blocks []*Block + db.mtx.Lock() + oldBlocks := db.blocks + for _, b := range oldBlocks { + keep := true + for _, pd := range plan { + if pd == b.Dir() { + keep = false + break + } + } + if keep { + blocks = append(blocks, b) + } else { + b.Close() + } + } + db.blocks = blocks + db.mtx.Unlock() + for _, pd := range plan { if err := os.RemoveAll(pd); err != nil { return changes, errors.Wrap(err, "delete compacted block")