From 5efdd7bc6ddd179c5e775f5ab48aee05f4e1f8a6 Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Sat, 17 Oct 2015 21:31:34 -0700 Subject: [PATCH] storage/backend: avoid creating new bolt.tx during a batchTx --- storage/backend/batch_tx.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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