@@ -55,6 +55,8 @@ func (p *preparedLRU) execIfMissing(key string, fn func(lru *lru.Cache) *infligh
return val.(*inflightPrepare), true
}
+ p.mu.Lock()
+ defer p.mu.Unlock()
return fn(p.lru), false
@@ -0,0 +1,22 @@
+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
+ })
+}