aboutsummaryrefslogtreecommitdiff
path: root/weed/filer/leveldb3/leveldb3_store.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/filer/leveldb3/leveldb3_store.go')
-rw-r--r--weed/filer/leveldb3/leveldb3_store.go24
1 files changed, 16 insertions, 8 deletions
diff --git a/weed/filer/leveldb3/leveldb3_store.go b/weed/filer/leveldb3/leveldb3_store.go
index d21515bd4..4ceeb0bbb 100644
--- a/weed/filer/leveldb3/leveldb3_store.go
+++ b/weed/filer/leveldb3/leveldb3_store.go
@@ -16,10 +16,10 @@ import (
"github.com/syndtr/goleveldb/leveldb/opt"
leveldb_util "github.com/syndtr/goleveldb/leveldb/util"
- "github.com/chrislusf/seaweedfs/weed/filer"
- "github.com/chrislusf/seaweedfs/weed/glog"
- "github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
- weed_util "github.com/chrislusf/seaweedfs/weed/util"
+ "github.com/seaweedfs/seaweedfs/weed/filer"
+ "github.com/seaweedfs/seaweedfs/weed/glog"
+ "github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
+ weed_util "github.com/seaweedfs/seaweedfs/weed/util"
)
const (
@@ -121,23 +121,31 @@ func (store *LevelDB3Store) findDB(fullpath weed_util.FullPath, isForChildren bo
}
store.dbsLock.RUnlock()
- // upgrade to write lock
+
+ db, err := store.createDB(bucket)
+
+ return db, bucket, shortPath, err
+}
+
+func (store *LevelDB3Store) createDB(bucket string) (*leveldb.DB, error) {
+
store.dbsLock.Lock()
defer store.dbsLock.Unlock()
// double check after getting the write lock
if db, found := store.dbs[bucket]; found {
- return db, bucket, shortPath, nil
+ return db, nil
}
// create db
db, err := store.loadDB(bucket)
if err != nil {
- return nil, bucket, shortPath, err
+ return nil, err
}
+
store.dbs[bucket] = db
- return db, bucket, shortPath, nil
+ return db, nil
}
func (store *LevelDB3Store) closeDB(bucket string) {