content adapter: Fix server crash on partial edit

Fixes #12538
This commit is contained in:
Bjørn Erik Pedersen 2024-05-30 14:58:05 +02:00
parent 2c88e454d8
commit 1464091ad6
3 changed files with 13 additions and 11 deletions

View file

@ -335,12 +335,6 @@ func (m *pageMap) addPagesFromGoTmplFi(fi hugofs.FileMetaInfo, buildConfig *Buil
f := source.NewFileInfo(fi) f := source.NewFileInfo(fi)
h := s.h h := s.h
// Make sure the layouts are initialized.
if _, err := h.init.layouts.Do(context.Background()); err != nil {
addErr = err
return
}
contentAdapter := s.pageMap.treePagesFromTemplateAdapters.Get(pi.Base()) contentAdapter := s.pageMap.treePagesFromTemplateAdapters.Get(pi.Base())
var rebuild bool var rebuild bool
if contentAdapter != nil { if contentAdapter != nil {

View file

@ -239,6 +239,10 @@ func (h *HugoSites) process(ctx context.Context, l logg.LevelLogger, config *Bui
l = l.WithField("step", "process") l = l.WithField("step", "process")
defer loggers.TimeTrackf(l, time.Now(), nil, "") defer loggers.TimeTrackf(l, time.Now(), nil, "")
if _, err := h.init.layouts.Do(ctx); err != nil {
return err
}
if len(events) > 0 { if len(events) > 0 {
// This is a rebuild // This is a rebuild
return h.processPartial(ctx, l, config, init, events) return h.processPartial(ctx, l, config, init, events)
@ -324,10 +328,6 @@ func (h *HugoSites) render(l logg.LevelLogger, config *BuildCfg) error {
loggers.TimeTrackf(l, start, h.buildCounters.loggFields(), "") loggers.TimeTrackf(l, start, h.buildCounters.loggFields(), "")
}() }()
if _, err := h.init.layouts.Do(context.Background()); err != nil {
return err
}
siteRenderContext := &siteRenderContext{cfg: config, multihost: h.Configs.IsMultihost} siteRenderContext := &siteRenderContext{cfg: config, multihost: h.Configs.IsMultihost}
i := 0 i := 0
@ -918,7 +918,6 @@ func (h *HugoSites) processPartial(ctx context.Context, l logg.LevelLogger, conf
if tmplChanged || i18nChanged { if tmplChanged || i18nChanged {
// TODO(bep) we should split this, but currently the loading of i18n and layout files are tied together. See #12048. // TODO(bep) we should split this, but currently the loading of i18n and layout files are tied together. See #12048.
h.init.layouts.Reset() h.init.layouts.Reset()
if err := loggers.TimeTrackfn(func() (logg.LevelLogger, error) { if err := loggers.TimeTrackfn(func() (logg.LevelLogger, error) {
// TODO(bep) this could probably be optimized to somehow // TODO(bep) this could probably be optimized to somehow
// only load the changed templates and its dependencies, but that is non-trivial. // only load the changed templates and its dependencies, but that is non-trivial.
@ -991,6 +990,10 @@ func (s *Site) handleContentAdapterChanges(bi pagesfromdata.BuildInfo, buildConf
} }
func (h *HugoSites) processContentAdaptersOnRebuild(ctx context.Context, buildConfig *BuildCfg) error { func (h *HugoSites) processContentAdaptersOnRebuild(ctx context.Context, buildConfig *BuildCfg) error {
// Make sure the layouts are initialized.
if _, err := h.init.layouts.Do(context.Background()); err != nil {
return err
}
g := rungroup.Run[*pagesfromdata.PagesFromTemplate](ctx, rungroup.Config[*pagesfromdata.PagesFromTemplate]{ g := rungroup.Run[*pagesfromdata.PagesFromTemplate](ctx, rungroup.Config[*pagesfromdata.PagesFromTemplate]{
NumWorkers: h.numWorkers, NumWorkers: h.numWorkers,
Handle: func(ctx context.Context, p *pagesfromdata.PagesFromTemplate) error { Handle: func(ctx context.Context, p *pagesfromdata.PagesFromTemplate) error {

View file

@ -38,7 +38,11 @@ draft: false
-- layouts/partials/get-value.html -- -- layouts/partials/get-value.html --
{{ $val := "p1" }} {{ $val := "p1" }}
{{ return $val }} {{ return $val }}
-- layouts/_default/baseof.html --
Baseof:
{{ block "main" . }}{{ end }}
-- layouts/_default/single.html -- -- layouts/_default/single.html --
{{ define "main" }}
Single: {{ .Title }}|{{ .Content }}|Params: {{ .Params.param1 }}|Path: {{ .Path }}| Single: {{ .Title }}|{{ .Content }}|Params: {{ .Params.param1 }}|Path: {{ .Path }}|
Dates: Date: {{ .Date.Format "2006-01-02" }}|Lastmod: {{ .Lastmod.Format "2006-01-02" }}|PublishDate: {{ .PublishDate.Format "2006-01-02" }}|ExpiryDate: {{ .ExpiryDate.Format "2006-01-02" }}| Dates: Date: {{ .Date.Format "2006-01-02" }}|Lastmod: {{ .Lastmod.Format "2006-01-02" }}|PublishDate: {{ .PublishDate.Format "2006-01-02" }}|ExpiryDate: {{ .ExpiryDate.Format "2006-01-02" }}|
Len Resources: {{ .Resources | len }} Len Resources: {{ .Resources | len }}
@ -49,6 +53,7 @@ Featured Image: {{ .RelPermalink }}|{{ .Name }}|
Resized Featured Image: {{ .RelPermalink }}|{{ .Width }}| Resized Featured Image: {{ .RelPermalink }}|{{ .Width }}|
{{ end}} {{ end}}
{{ end }} {{ end }}
{{ end }}
-- layouts/_default/list.html -- -- layouts/_default/list.html --
List: {{ .Title }}|{{ .Content }}| List: {{ .Title }}|{{ .Content }}|
RegularPagesRecursive: {{ range .RegularPagesRecursive }}{{ .Title }}:{{ .Path }}|{{ end }}$ RegularPagesRecursive: {{ range .RegularPagesRecursive }}{{ .Title }}:{{ .Path }}|{{ end }}$