mirror of
https://github.com/gohugoio/hugo.git
synced 2025-09-02 22:52:51 +02:00
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:
@@ -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
|
||||
|
@@ -99,6 +99,8 @@ type HugoSites struct {
|
||||
|
||||
*fatalErrorHandler
|
||||
*buildCounters
|
||||
// Tracks invocations of the Build method.
|
||||
buildCounter atomic.Uint64
|
||||
}
|
||||
|
||||
// ShouldSkipFileChangeEvent allows skipping filesystem event early before
|
||||
@@ -420,10 +422,9 @@ func (cfg *BuildCfg) shouldRender(p *pageState) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
fastRenderMode := cfg.RecentlyVisited.Len() > 0
|
||||
fastRenderMode := p.s.Conf.FastRenderMode()
|
||||
|
||||
if !fastRenderMode {
|
||||
// Not in fast render mode or first time render.
|
||||
if !fastRenderMode || p.s.h.buildCounter.Load() == 0 {
|
||||
return shouldRender
|
||||
}
|
||||
|
||||
|
@@ -57,6 +57,9 @@ import (
|
||||
func (h *HugoSites) Build(config BuildCfg, events ...fsnotify.Event) error {
|
||||
infol := h.Log.InfoCommand("build")
|
||||
defer loggers.TimeTrackf(infol, time.Now(), nil, "")
|
||||
defer func() {
|
||||
h.buildCounter.Add(1)
|
||||
}()
|
||||
|
||||
if h.Deps == nil {
|
||||
panic("must have deps")
|
||||
@@ -769,8 +772,9 @@ func (h *HugoSites) processPartial(ctx context.Context, l logg.LevelLogger, conf
|
||||
}
|
||||
case files.ComponentFolderAssets:
|
||||
logger.Println("Asset changed", pathInfo.Path())
|
||||
r, _ := h.ResourceSpec.ResourceCache.Get(context.Background(), dynacache.CleanKey(pathInfo.Base()))
|
||||
|
||||
var hasID bool
|
||||
r, _ := h.ResourceSpec.ResourceCache.Get(context.Background(), dynacache.CleanKey(pathInfo.Base()))
|
||||
identity.WalkIdentitiesShallow(r, func(level int, rid identity.Identity) bool {
|
||||
hasID = true
|
||||
changes = append(changes, rid)
|
||||
|
Reference in New Issue
Block a user