Permalink
Browse files

hugolib: Fix deadlock when content building times out

Fixes #5375
  • Loading branch information...
bep committed Oct 30, 2018
1 parent e65268f commit 729593c842794eaf7127050953a5c2256d332051
Showing with 39 additions and 2 deletions.
  1. +30 −0 hugolib/hugo_sites_build_errors_test.go
  2. +9 −2 hugolib/page.go
@@ -313,3 +313,33 @@ Some content.
}
}
}
// https://github.com/gohugoio/hugo/issues/5375
func TestSiteBuildTimeout(t *testing.T) {
b := newTestSitesBuilder(t)
b.WithConfigFile("toml", `
timeout = 5
`)
b.WithTemplatesAdded("_default/single.html", `
{{ .WordCount }}
`, "shortcodes/c.html", `
{{ range .Page.Site.RegularPages }}
{{ .WordCount }}
{{ end }}
`)
for i := 1; i < 100; i++ {
b.WithContent(fmt.Sprintf("page%d.md", i), `---
title: "A page"
---
{{< c >}}`)
}
b.CreateSites().Build(BuildCfg{})
}
View
@@ -290,17 +290,24 @@ func (p *Page) initContent() {
defer cancel()
c := make(chan error, 1)
p.contentInitMu.Lock()
defer p.contentInitMu.Unlock()
go func() {
var err error
p.contentInitMu.Lock()
defer p.contentInitMu.Unlock()
err = p.prepareForRender()
if err != nil {
c <- err
return
}
select {
case <-ctx.Done():
return
default:
}
if len(p.summary) == 0 {
if err = p.setAutoSummary(); err != nil {
err = p.errorf(err, "failed to set auto summary")

0 comments on commit 729593c

Please sign in to comment.