Browse Source

mvcc: avoid unnecessary metrics update

https://github.com/coreos/etcd/pull/9300

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
Gyuho Lee 7 years ago
parent
commit
adfd0d3fe7
2 changed files with 1 additions and 28 deletions
  1. 1 9
      mvcc/backend/backend.go
  2. 0 19
      mvcc/backend/batch_tx.go

+ 1 - 9
mvcc/backend/backend.go

@@ -287,15 +287,7 @@ func (b *backend) Commits() int64 {
 }
 }
 
 
 func (b *backend) Defrag() error {
 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 {
 func (b *backend) defrag() error {

+ 0 - 19
mvcc/backend/batch_tx.go

@@ -158,25 +158,6 @@ func (t *batchTx) commit(stop bool) {
 	// commit the last tx
 	// commit the last tx
 	if t.tx != nil {
 	if t.tx != nil {
 		if t.pending == 0 && !stop {
 		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
 			return
 		}
 		}