From cad3cf7b11767c76fe900a432d8ed09478c1a8da Mon Sep 17 00:00:00 2001 From: Gyuho Lee Date: Tue, 3 Jul 2018 14:52:16 -0700 Subject: [PATCH] mvcc/backend: avoid unnecessary metrics update https://github.com/coreos/etcd/pull/9300 Signed-off-by: Gyuho Lee --- mvcc/backend/backend.go | 10 +--------- mvcc/backend/batch_tx.go | 19 ------------------- 2 files changed, 1 insertion(+), 28 deletions(-) diff --git a/mvcc/backend/backend.go b/mvcc/backend/backend.go index 82270bfd3..e55768f29 100644 --- a/mvcc/backend/backend.go +++ b/mvcc/backend/backend.go @@ -284,15 +284,7 @@ func (b *backend) Commits() int64 { } func (b *backend) Defrag() error { - err := b.defrag() - if err != nil { - return err - } - - // commit to update metadata like db.size - b.batchTx.Commit() - - return nil + return b.defrag() } func (b *backend) defrag() error { diff --git a/mvcc/backend/batch_tx.go b/mvcc/backend/batch_tx.go index 41e19c09b..32f5d0c8b 100644 --- a/mvcc/backend/batch_tx.go +++ b/mvcc/backend/batch_tx.go @@ -163,25 +163,6 @@ func (t *batchTx) commit(stop bool) { // commit the last tx if t.tx != nil { if t.pending == 0 && !stop { - t.backend.mu.RLock() - defer t.backend.mu.RUnlock() - - // batchTx.commit(true) calls *bolt.Tx.Commit, which - // initializes *bolt.Tx.db and *bolt.Tx.meta as nil, - // and subsequent *bolt.Tx.Size() call panics. - // - // This nil pointer reference panic happens when: - // 1. batchTx.commit(false) from newBatchTx - // 2. batchTx.commit(true) from stopping backend - // 3. batchTx.commit(false) from inflight mvcc Hash call - // - // Check if db is nil to prevent this panic - if t.tx.DB() != nil { - size := t.tx.Size() - db := t.tx.DB() - atomic.StoreInt64(&t.backend.size, size) - atomic.StoreInt64(&t.backend.sizeInUse, size-(int64(db.Stats().FreePageN)*int64(db.Info().PageSize))) - } return }