diff --git a/storage/backend/batch_tx.go b/storage/backend/batch_tx.go index 2fec3c6e8..9aa25bbc4 100644 --- a/storage/backend/batch_tx.go +++ b/storage/backend/batch_tx.go @@ -64,10 +64,6 @@ func (t *batchTx) UnsafePut(bucketName []byte, key []byte, value []byte) { log.Fatalf("storage: cannot put key into bucket (%v)", err) } t.pending++ - if t.pending >= t.backend.batchLimit { - t.commit(false) - t.pending = 0 - } } // before calling unsafeRange, the caller MUST hold the lock on tx. @@ -108,10 +104,6 @@ func (t *batchTx) UnsafeDelete(bucketName []byte, key []byte) { log.Fatalf("storage: cannot delete key from bucket (%v)", err) } t.pending++ - if t.pending >= t.backend.batchLimit { - t.commit(false) - t.pending = 0 - } } // Commit commits a previous tx and begins a new writable one. @@ -128,6 +120,14 @@ func (t *batchTx) CommitAndStop() { t.commit(true) } +func (t *batchTx) Unlock() { + if t.pending >= t.backend.batchLimit { + t.commit(false) + t.pending = 0 + } + t.Mutex.Unlock() +} + func (t *batchTx) commit(stop bool) { var err error // commit the last tx