Handle resource changes when the resources is already evicted from cache

Also fix a logical flaw in the cache resizer that made it too aggressive. After this I haven't been able to reproduce #11988, but I need to look closer.

Closes #11973
Updates #11988
This commit is contained in:
Bjørn Erik Pedersen
2024-02-02 11:20:08 +01:00
parent 53f204310e
commit 609d798e34
9 changed files with 136 additions and 24 deletions

View File

@@ -1018,14 +1018,6 @@ func (h *HugoSites) resolveAndClearStateForIdentities(
b = cachebuster(s)
}
if b {
identity.WalkIdentitiesShallow(v, func(level int, id identity.Identity) bool {
// Add them to the change set so we can reset any page that depends on them.
changes = append(changes, id)
return false
})
}
return b
}
@@ -1037,6 +1029,15 @@ func (h *HugoSites) resolveAndClearStateForIdentities(
}
}
// Drain the the cache eviction stack.
evicted := h.Deps.MemCache.DrainEvictedIdentities()
if len(evicted) < 200 {
changes = append(changes, evicted...)
} else {
// Mass eviction, we might as well invalidate everything.
changes = []identity.Identity{identity.GenghisKhan}
}
// Remove duplicates
seen := make(map[identity.Identity]bool)
var n int