@@ -19,8 +19,7 @@ type u128 struct{ hi, lo uint64 } //nolint
1919type u192 struct { hi , lo , ext uint64 } //nolint
2020
2121type DomainGetFromFileCache struct {
22- sync.RWMutex
23- * freelru.LRU [uint64 , domainGetFromFileCacheItem ]
22+ * freelru.ShardedLRU [uint64 , domainGetFromFileCacheItem ]
2423 enabled , trace bool
2524 limit uint32
2625}
@@ -33,37 +32,31 @@ type domainGetFromFileCacheItem struct {
3332
3433var (
3534 domainGetFromFileCacheLimit = uint32 (dbg .EnvInt ("D_LRU" , 1_000_000 ))
36- domainGetFromFileCacheTrace = dbg .EnvBool ("D_LRU_TRACE" , false )
35+ domainGetFromFileCacheTrace = dbg .EnvBool ("D_LRU_TRACE" , true )
3736 domainGetFromFileCacheEnabled = dbg .EnvBool ("D_LRU_ENABLED" , true )
3837)
3938
4039func NewDomainGetFromFileCache (limit uint32 ) * DomainGetFromFileCache {
41- c , err := freelru .New [uint64 , domainGetFromFileCacheItem ](limit , u64noHash )
40+ c , err := freelru .NewSharded [uint64 , domainGetFromFileCacheItem ](limit , u64noHash )
4241 if err != nil {
4342 panic (err )
4443 }
45- return & DomainGetFromFileCache {LRU : c , enabled : domainGetFromFileCacheEnabled , trace : domainGetFromFileCacheTrace , limit : limit }
44+ return & DomainGetFromFileCache {ShardedLRU : c , enabled : domainGetFromFileCacheEnabled , trace : domainGetFromFileCacheTrace , limit : limit }
4645}
4746
4847func (c * DomainGetFromFileCache ) Add (key uint64 , value domainGetFromFileCacheItem ) (evicted bool ) {
49- c .Lock ()
50- defer c .Unlock ()
51- return c .LRU .Add (key , value )
48+ return c .ShardedLRU .Add (key , value )
5249}
5350
5451func (c * DomainGetFromFileCache ) Get (key uint64 ) (value domainGetFromFileCacheItem , ok bool ) {
55- c .Lock () // get upates cache vars
56- defer c .Unlock ()
57- return c .LRU .Get (key )
52+ return c .ShardedLRU .Get (key )
5853}
5954
6055func (c * DomainGetFromFileCache ) SetTrace (v bool ) { c .trace = v }
6156func (c * DomainGetFromFileCache ) LogStats (dt kv.Domain ) {
6257 if c == nil {
6358 return
6459 }
65- c .RLock ()
66- defer c .RUnlock ()
6760 if ! c .enabled || ! c .trace {
6861 return
6962 }
0 commit comments