diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2021-12-22 19:00:32 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2021-12-23 15:09:27 +0100 |
commit | bd63c1aa56e05e88b162e9fd19b6d21fbc609df7 (patch) | |
tree | c3a400a335c644ecd110232ea2ecf803353be167 | |
parent | 9eb05807c6c6b5212523d1f7fffc17b692f97ec5 (diff) |
Fix "stuck on build" in error situations in content processing
Updates #8166
-rw-r--r-- | hugolib/pages_process.go | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/hugolib/pages_process.go b/hugolib/pages_process.go index 89a306a3b..541c0ae3e 100644 --- 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 { |