commands: Fix server deadlock on config error - hugo - [fork] hugo port for 9front
HTML git clone git@git.drkhsh.at/hugo.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
DIR commit a2a660ed1209528b075a21af84fc0ed3e7b266ef
DIR parent f7bc4cc505950df738ab11aa3c611f324dd6c158
HTML Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Thu, 10 Feb 2022 17:12:02 +0100
commands: Fix server deadlock on config error
Fixes #9486
Diffstat:
M commands/commandeer.go | 6 ++++++
M commands/hugo.go | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
---
DIR diff --git a/commands/commandeer.go b/commands/commandeer.go
@@ -61,6 +61,8 @@ type commandeer struct {
logger loggers.Logger
serverConfig *config.Server
+ buildLock func() (unlock func(), err error)
+
// Loading state
mustHaveConfigFile bool
failOnInitErr bool
@@ -419,6 +421,10 @@ func (c *commandeer) loadConfig() error {
err = createErr
}
c.hugoSites = h
+ // TODO(bep) improve.
+ if c.buildLock == nil {
+ c.buildLock = h.LockBuild
+ }
close(c.created)
})
DIR diff --git a/commands/hugo.go b/commands/hugo.go
@@ -869,7 +869,7 @@ func (c *commandeer) newWatcher(pollIntervalStr string, dirList ...string) (*wat
for {
select {
case evs := <-watcher.Events:
- unlock, err := c.hugo().BaseFs.LockBuild()
+ unlock, err := c.buildLock()
if err != nil {
c.logger.Errorln("Failed to acquire a build lock: %s", err)
return