@@ -22,7 +22,6 @@ import (
2222
2323 "github.com/bep/logg"
2424 "github.com/gohugoio/go-radix"
25- "github.com/gohugoio/hugo/common/herrors"
2625 "github.com/gohugoio/hugo/hugolib/doctree"
2726 "github.com/gohugoio/hugo/tpl/tplimpl"
2827
@@ -115,7 +114,7 @@ func (s *Site) renderPages(ctx *siteRenderContext) error {
115114
116115 err := <- errs
117116 if err != nil {
118- return fmt .Errorf ("%v failed to render pages: %w" , s .resolveDimensionNames (), herrors . ImproveRenderErr ( err ) )
117+ return fmt .Errorf ("%v failed to render pages: %w" , s .resolveDimensionNames (), err )
119118 }
120119 return nil
121120}
@@ -129,6 +128,15 @@ func pageRenderer(
129128) {
130129 defer wg .Done ()
131130
131+ sendErr := func (err error ) bool {
132+ select {
133+ case results <- err :
134+ return true
135+ case <- s .h .Done ():
136+ return false
137+ }
138+ }
139+
132140 for p := range pages {
133141
134142 if p .m .isStandalone () && ! ctx .shouldRenderStandalonePage (p .Kind ()) {
@@ -137,8 +145,11 @@ func pageRenderer(
137145
138146 if p .m .pageConfig .Build .PublishResources {
139147 if err := p .renderResources (); err != nil {
140- s .SendError (p .errorf (err , "failed to render page resources" ))
141- continue
148+ if sendErr (p .errorf (err , "failed to render resources" )) {
149+ continue
150+ } else {
151+ return
152+ }
142153 }
143154 }
144155
@@ -149,8 +160,11 @@ func pageRenderer(
149160
150161 templ , found , err := p .resolveTemplate ()
151162 if err != nil {
152- s .SendError (p .errorf (err , "failed to resolve template" ))
153- continue
163+ if sendErr (p .errorf (err , "failed to resolve template" )) {
164+ continue
165+ } else {
166+ return
167+ }
154168 }
155169
156170 if ! found {
@@ -181,12 +195,20 @@ func pageRenderer(
181195 }
182196
183197 if err := s .renderAndWritePage (& s .PathSpec .ProcessingStats .Pages , targetPath , p , d , templ ); err != nil {
184- results <- err
198+ if sendErr (err ) {
199+ continue
200+ } else {
201+ return
202+ }
185203 }
186204
187205 if p .paginator != nil && p .paginator .current != nil {
188206 if err := s .renderPaginator (p , templ ); err != nil {
189- results <- err
207+ if sendErr (err ) {
208+ continue
209+ } else {
210+ return
211+ }
190212 }
191213 }
192214 }
0 commit comments