aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-01-13 13:48:48 -0800
committerChris Lu <chris.lu@gmail.com>2021-01-13 13:48:48 -0800
commitca730134538e3afe4d9806acac95ba0a808f518f (patch)
tree665c46341d44a13da2e83e0e674362a9308ac2f9
parente2c7e3fe6d44c183731bf67eb5eb27f4acfe802c (diff)
downloadseaweedfs-ca730134538e3afe4d9806acac95ba0a808f518f.tar.xz
seaweedfs-ca730134538e3afe4d9806acac95ba0a808f518f.zip
leveldb3: ensure repeatable adding removing buckets
-rw-r--r--weed/filer/leveldb3/leveldb3_store.go14
1 files changed, 13 insertions, 1 deletions
diff --git a/weed/filer/leveldb3/leveldb3_store.go b/weed/filer/leveldb3/leveldb3_store.go
index a582235f4..332f1569b 100644
--- a/weed/filer/leveldb3/leveldb3_store.go
+++ b/weed/filer/leveldb3/leveldb3_store.go
@@ -137,6 +137,18 @@ func (store *LevelDB3Store) findDB(fullpath weed_util.FullPath, isForChildren bo
return db, bucket, shortPath, nil
}
+func (store *LevelDB3Store) closeDB(bucket string) {
+
+ store.dbsLock.Lock()
+ defer store.dbsLock.Unlock()
+
+ if db, found := store.dbs[bucket]; found {
+ db.Close()
+ delete(store.dbs, bucket)
+ }
+
+}
+
func (store *LevelDB3Store) BeginTransaction(ctx context.Context) (context.Context, error) {
return ctx, nil
}
@@ -240,7 +252,7 @@ func (store *LevelDB3Store) DeleteFolderChildren(ctx context.Context, fullpath w
}
if bucket != DEFAULT && shortPath == "/" {
- db.Close()
+ store.closeDB(bucket)
if bucket != "" { // just to make sure
os.RemoveAll(store.dir + "/" + bucket)
}