clear in-memory image cache on server logout

This commit is contained in:
Drew Weymouth
2023-07-28 17:10:40 -07:00
parent 873dc16b0d
commit 09fcc6dcb8
2 changed files with 19 additions and 4 deletions
+7
View File
@@ -128,6 +128,13 @@ func (i *ImageCache) GetWithNewTTL(key string, newTtl time.Duration) (image.Imag
return nil, ErrNotFound
}
func (i *ImageCache) Clear() {
i.mu.Lock()
defer i.mu.Unlock()
i.cache = make(map[string]CacheItem)
}
// must be called when rwmutex is already acquired for writing
func (i *ImageCache) evictOne() {
now := time.Now().Unix()
+12 -4
View File
@@ -49,7 +49,11 @@ func NewImageManager(ctx context.Context, s *ServerManager, baseCacheDir string)
DefaultTTL: 1 * time.Minute,
},
}
i.thumbnailCache.OnEvictTaskRan = i.clearExpiredFullSizeCover
s.OnLogout(func() {
i.thumbnailCache.Clear()
i.clearFullSizeCover()
})
i.thumbnailCache.OnEvictTaskRan = i.clearFullSizeCoverIfExpired
i.thumbnailCache.Init(ctx, 2*time.Minute)
return i
}
@@ -223,10 +227,14 @@ func (i *ImageManager) loadLocalImage(path string) (image.Image, bool) {
return nil, false
}
func (i *ImageManager) clearExpiredFullSizeCover() {
func (i *ImageManager) clearFullSizeCoverIfExpired() {
now := time.Now().UnixMilli()
if now-i.cachedFullSizeCoverAccessedAt > fullSizeCoverExpires.Milliseconds() {
i.cachedFullSizeCoverID = ""
i.cachedFullSizeCover = nil
i.clearFullSizeCover()
}
}
func (i *ImageManager) clearFullSizeCover() {
i.cachedFullSizeCoverID = ""
i.cachedFullSizeCover = nil
}