summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hugolib/hugo_sites.go3
-rw-r--r--hugolib/hugo_sites_build.go6
2 files changed, 9 insertions, 0 deletions
diff --git a/hugolib/hugo_sites.go b/hugolib/hugo_sites.go
index 6f95dbb12..5be4ec02b 100644
--- a/hugolib/hugo_sites.go
+++ b/hugolib/hugo_sites.go
@@ -62,6 +62,9 @@ type HugoSites struct {
// If this is running in the dev server.
running bool
+ // Serializes rebuilds when server is running.
+ runningMu sync.Mutex
+
// Render output formats for all sites.
renderFormats output.Formats
diff --git a/hugolib/hugo_sites_build.go b/hugolib/hugo_sites_build.go
index d748a0169..7f725def2 100644
--- a/hugolib/hugo_sites_build.go
+++ b/hugolib/hugo_sites_build.go
@@ -31,6 +31,12 @@ import (
// Build builds all sites. If filesystem events are provided,
// this is considered to be a potential partial rebuild.
func (h *HugoSites) Build(config BuildCfg, events ...fsnotify.Event) error {
+ if h.running {
+ // Make sure we don't trigger rebuilds in parallel.
+ h.runningMu.Lock()
+ defer h.runningMu.Unlock()
+ }
+
ctx, task := trace.NewTask(context.Background(), "Build")
defer task.End()