summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/db/backend/leveldb_backend.go18
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/db/backend/leveldb_backend.go b/lib/db/backend/leveldb_backend.go
index f3748f430..cc073f720 100644
--- a/lib/db/backend/leveldb_backend.go
+++ b/lib/db/backend/leveldb_backend.go
@@ -37,14 +37,15 @@ func (b *leveldbBackend) NewReadTransaction() (ReadTransaction, error) {
}
func (b *leveldbBackend) newSnapshot() (leveldbSnapshot, error) {
- snap, err := b.ldb.GetSnapshot()
- if err != nil {
- return leveldbSnapshot{}, wrapLeveldbErr(err)
- }
rel, err := newReleaser(b.closeWG)
if err != nil {
return leveldbSnapshot{}, err
}
+ snap, err := b.ldb.GetSnapshot()
+ if err != nil {
+ rel.Release()
+ return leveldbSnapshot{}, wrapLeveldbErr(err)
+ }
return leveldbSnapshot{
snap: snap,
rel: rel,
@@ -52,14 +53,15 @@ func (b *leveldbBackend) newSnapshot() (leveldbSnapshot, error) {
}
func (b *leveldbBackend) NewWriteTransaction() (WriteTransaction, error) {
- snap, err := b.newSnapshot()
- if err != nil {
- return nil, err // already wrapped
- }
rel, err := newReleaser(b.closeWG)
if err != nil {
return nil, err
}
+ snap, err := b.newSnapshot()
+ if err != nil {
+ rel.Release()
+ return nil, err // already wrapped
+ }
return &leveldbTransaction{
leveldbSnapshot: snap,
ldb: b.ldb,