Skip to content

Commit 29c5ac7

Browse files
committed
add write lock for cache#Get
1 parent 7da4976 commit 29c5ac7

File tree

1 file changed

+5
-8
lines changed

1 file changed

+5
-8
lines changed

cache.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ var DisableSelectorCache = false
1616
var SelectorCacheMaxEntries = 50
1717

1818
var (
19-
cacheOnce sync.Once
20-
cache *lru.Cache
21-
cacheMutex sync.RWMutex
19+
cacheOnce sync.Once
20+
cache *lru.Cache
21+
cacheMutex sync.Mutex
2222
)
2323

2424
func getQuery(expr string) (*xpath.Expr, error) {
@@ -28,14 +28,11 @@ func getQuery(expr string) (*xpath.Expr, error) {
2828
cacheOnce.Do(func() {
2929
cache = lru.New(SelectorCacheMaxEntries)
3030
})
31-
cacheMutex.RLock()
31+
cacheMutex.Lock()
32+
defer cacheMutex.Unlock()
3233
if v, ok := cache.Get(expr); ok {
33-
cacheMutex.RUnlock()
3434
return v.(*xpath.Expr), nil
3535
}
36-
cacheMutex.RUnlock()
37-
cacheMutex.Lock()
38-
defer cacheMutex.Unlock()
3936
v, err := xpath.Compile(expr)
4037
if err != nil {
4138
return nil, err

0 commit comments

Comments
 (0)