# HG changeset patch # User Sascha L. Teichmann # Date 1540221362 -7200 # Node ID 14425e35e3c23dc4a6d6c91109727f465622a83b # Parent 60ca5bd3e326bf3ed55c2243981bbf950844fa03 Wait with start of import queue until configuration is fully loaded. diff -r 60ca5bd3e326 -r 14425e35e3c2 cmd/gemma/main.go --- a/cmd/gemma/main.go Mon Oct 22 16:55:05 2018 +0200 +++ b/cmd/gemma/main.go Mon Oct 22 17:16:02 2018 +0200 @@ -31,6 +31,8 @@ func start(cmd *cobra.Command, args []string) { + config.Ready() + web, err := filepath.Abs(config.Web()) if err != nil { log.Fatalf("error: %v\n", err) diff -r 60ca5bd3e326 -r 14425e35e3c2 pkg/config/config.go --- a/pkg/config/config.go Mon Oct 22 16:55:05 2018 +0200 +++ b/pkg/config/config.go Mon Oct 22 17:16:02 2018 +0200 @@ -156,7 +156,26 @@ str("proxy-prefix", "", `URL prefix of proxy. Defaults to "http://${web-host}:${web-port}"`) str("tmp-dir", "", "Temp directory of gemma server. Defaults to system temp directory.") +} +var ( + configCond = sync.NewCond(new(sync.Mutex)) + configReady bool +) + +func Ready() { + configCond.L.Lock() + defer configCond.L.Unlock() + configReady = true + configCond.Broadcast() +} + +func WaitReady() { + configCond.L.Lock() + defer configCond.L.Unlock() + for !configReady { + configCond.Wait() + } } func initConfig() { diff -r 60ca5bd3e326 -r 14425e35e3c2 pkg/imports/queue.go --- a/pkg/imports/queue.go Mon Oct 22 16:55:05 2018 +0200 +++ b/pkg/imports/queue.go Mon Oct 22 17:16:02 2018 +0200 @@ -9,6 +9,7 @@ "sync" "gemma.intevation.de/gemma/pkg/auth" + "gemma.intevation.de/gemma/pkg/config" ) type ( @@ -219,6 +220,7 @@ } func importLoop() { + config.WaitReady() for { queueCond.L.Lock() @@ -259,7 +261,7 @@ if errDo != nil { feedback.Error("error do: %v\n", errDo) } - errCleanup := survive(job.CleanUp) + errCleanup := survive(job.CleanUp)() if errCleanup != nil { feedback.Error("error cleanup: %v\n", errCleanup) }