From fe8463890a551f8ba8d23951f3cfc687ecdbbd4c Mon Sep 17 00:00:00 2001 From: Stavros Date: Sun, 31 May 2026 18:29:14 +0300 Subject: [PATCH] fix: fix bugs in cache order --- internal/service/cache_store.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/service/cache_store.go b/internal/service/cache_store.go index 77ac1630..9dbe057d 100644 --- a/internal/service/cache_store.go +++ b/internal/service/cache_store.go @@ -97,7 +97,9 @@ func (cs *CacheStore[T]) setCallback(key string, value T, ttl time.Duration) { expiresAt: expiresAt, } - cs.order = append(cs.order, key) + if !slices.Contains(cs.order, key) { + cs.order = append(cs.order, key) + } } func (cs *CacheStore[T]) Set(key string, value T, ttl time.Duration) { @@ -159,7 +161,7 @@ func (cs *CacheStore[T]) evictOne() bool { for k, e := range cs.cache { if e.expiresAt != nil && now.After(*e.expiresAt) { - delete(cs.cache, k) + cs.deleteCallback(k) return true } if e.expiresAt != nil && (oldestExp == nil || e.expiresAt.Before(*oldestExp)) { @@ -169,13 +171,11 @@ func (cs *CacheStore[T]) evictOne() bool { // If we found an oldest key, evict it else we delete the first key in the order list if oldestKey != "" { - delete(cs.cache, oldestKey) + cs.deleteCallback(oldestKey) return true } else { if len(cs.order) > 0 { - firstKey := cs.order[0] - cs.order = cs.order[1:] - delete(cs.cache, firstKey) + cs.deleteCallback(cs.order[0]) return true } }