Преглед на файлове

Merge pull request #817 from gocql/revert-814-iml.rlock

Revert "Use RWMutex in prepared statement cache"
Chris Bannister преди 9 години
родител
ревизия
2e915f92d7
променени са 2 файла, в които са добавени 4 реда и са изтрити 31 реда
  1. 4 9
      prepared_cache.go
  2. 0 22
      prepared_cache_test.go

+ 4 - 9
prepared_cache.go

@@ -9,7 +9,7 @@ const defaultMaxPreparedStmts = 1000
 
 
 // preparedLRU is the prepared statement cache
 // preparedLRU is the prepared statement cache
 type preparedLRU struct {
 type preparedLRU struct {
-	mu  sync.RWMutex
+	mu  sync.Mutex
 	lru *lru.Cache
 	lru *lru.Cache
 }
 }
 
 
@@ -47,19 +47,14 @@ func (p *preparedLRU) remove(key string) bool {
 }
 }
 
 
 func (p *preparedLRU) execIfMissing(key string, fn func(lru *lru.Cache) *inflightPrepare) (*inflightPrepare, bool) {
 func (p *preparedLRU) execIfMissing(key string, fn func(lru *lru.Cache) *inflightPrepare) (*inflightPrepare, bool) {
-	p.mu.RLock()
-	val, ok := p.lru.Get(key)
-	p.mu.RUnlock()
+	p.mu.Lock()
+	defer p.mu.Unlock()
 
 
+	val, ok := p.lru.Get(key)
 	if ok {
 	if ok {
 		return val.(*inflightPrepare), true
 		return val.(*inflightPrepare), true
 	}
 	}
 
 
-	p.mu.Lock()
-	defer p.mu.Unlock()
-	if val, ok := p.lru.Get(key); ok {
-		return val.(*inflightPrepare), true
-	}
 	return fn(p.lru), false
 	return fn(p.lru), false
 }
 }
 
 

+ 0 - 22
prepared_cache_test.go

@@ -1,22 +0,0 @@
-package gocql
-
-import (
-	"testing"
-
-	"github.com/gocql/gocql/internal/lru"
-)
-
-func BenchmarkLRU(b *testing.B) {
-	pl := preparedLRU{
-		lru: lru.New(10),
-	}
-
-	b.RunParallel(func(pb *testing.PB) {
-		for pb.Next() {
-			pl.execIfMissing("foo", func(c *lru.Cache) *inflightPrepare {
-				c.Add("foo", (*inflightPrepare)(nil))
-				return nil
-			})
-		}
-	})
-}