commit bd63c1aa56e05e88b162e9fd19b6d21fbc609df7
parent 9eb05807c6c6b5212523d1f7fffc17b692f97ec5
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Wed, 22 Dec 2021 19:00:32 +0100
Fix "stuck on build" in error situations in content processing
Updates #8166
Diffstat:
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/hugolib/pages_process.go b/hugolib/pages_process.go
@@ -115,17 +115,24 @@ type sitePagesProcessor struct {
m *pageMap
errorSender herrors.ErrorSender
+ ctx context.Context
itemChan chan interface{}
itemGroup *errgroup.Group
}
func (p *sitePagesProcessor) Process(item interface{}) error {
- p.itemChan <- item
+ select {
+ case <-p.ctx.Done():
+ return nil
+ default:
+ p.itemChan <- item
+ }
return nil
}
func (p *sitePagesProcessor) Start(ctx context.Context) context.Context {
p.itemGroup, ctx = errgroup.WithContext(ctx)
+ p.ctx = ctx
p.itemGroup.Go(func() error {
for item := range p.itemChan {
if err := p.doProcess(item); err != nil {