Remove expired negative cache rows in the eviction loop (closes #244)
A negative cache row was deleted only when its source URL was requested again after it expired, and CleanExpired was never called, so a client asking for a new missing path each time grew the database without limit. The eviction goroutine now calls CleanExpired at startup and on every periodic tick, so a row stays at most NegativeTTL plus one interval. The goroutine also starts with the disk cache disabled, where reconciliation and eviction already do nothing, since the negative cache is used either way. Model: opus-5-5
This commit is contained in:
@@ -124,7 +124,8 @@ func (s *Handlers) initImageService() error {
|
||||
s.imgCache = cache
|
||||
|
||||
// Background eviction: startup reconciliation, then periodic and
|
||||
// write-pressure passes. No-op when the disk cache is disabled.
|
||||
// write-pressure passes, and the removal of expired negative cache
|
||||
// rows, which is all it does when the disk cache is disabled.
|
||||
cache.StartEviction(imgcache.DefaultEvictionInterval)
|
||||
|
||||
// Writes the counts requests could not write by their deadline
|
||||
|
||||
Reference in New Issue
Block a user