Skip to content

Commit 54bb770

Browse files
committed
Use ShardedSieveCache
1 parent 8ca2505 commit 54bb770

1 file changed

Lines changed: 2 additions & 11 deletions

File tree

dnscrypt-proxy/plugin_cache.go

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"crypto/sha512"
55
"encoding/binary"
66
"fmt"
7-
"sync"
87
"time"
98

109
"github.com/jedisct1/go-sieve-cache/pkg/sievecache"
@@ -19,8 +18,7 @@ type CachedResponse struct {
1918
}
2019

2120
type CachedResponses struct {
22-
sync.RWMutex
23-
cache *sievecache.SyncSieveCache[[32]byte, CachedResponse]
21+
cache *sievecache.ShardedSieveCache[[32]byte, CachedResponse]
2422
}
2523

2624
var cachedResponses CachedResponses
@@ -71,19 +69,15 @@ func (plugin *PluginCache) Reload() error {
7169
func (plugin *PluginCache) Eval(pluginsState *PluginsState, msg *dns.Msg) error {
7270
cacheKey := computeCacheKey(pluginsState, msg)
7371

74-
cachedResponses.RLock()
7572
if cachedResponses.cache == nil {
76-
cachedResponses.RUnlock()
7773
return nil
7874
}
7975
cached, ok := cachedResponses.cache.Get(cacheKey)
8076
if !ok {
81-
cachedResponses.RUnlock()
8277
return nil
8378
}
8479
expiration := cached.expiration
8580
synth := cached.msg.Copy()
86-
cachedResponses.RUnlock()
8781

8882
synth.Id = msg.Id
8983
synth.Response = true
@@ -148,17 +142,14 @@ func (plugin *PluginCacheResponse) Eval(pluginsState *PluginsState, msg *dns.Msg
148142
expiration: time.Now().Add(ttl),
149143
msg: *msg,
150144
}
151-
cachedResponses.Lock()
152145
if cachedResponses.cache == nil {
153-
cache, err := sievecache.NewSync[[32]byte, CachedResponse](pluginsState.cacheSize)
146+
cache, err := sievecache.NewSharded[[32]byte, CachedResponse](pluginsState.cacheSize)
154147
if err != nil {
155-
cachedResponses.Unlock()
156148
return fmt.Errorf("failed to initialize the cache: %w", err)
157149
}
158150
cachedResponses.cache = cache
159151
}
160152
cachedResponses.cache.Insert(cacheKey, cachedResponse)
161-
cachedResponses.Unlock()
162153
updateTTL(msg, cachedResponse.expiration)
163154

164155
return nil

0 commit comments

Comments
 (0)