From ba7b214f2157fa79c696258abfa47f5bed8deae9 Mon Sep 17 00:00:00 2001 From: Janne Mareike Koschinski <janne@kuschku.de> Date: Fri, 13 May 2022 22:34:52 +0200 Subject: [PATCH] fix: correct issues with running http and asynq in parallel Signed-off-by: Janne Mareike Koschinski <janne@kuschku.de> --- backend/main.go | 10 ++++++---- shared/runner.go | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 shared/runner.go diff --git a/backend/main.go b/backend/main.go index 8a2d36f..0b3dd2b 100644 --- a/backend/main.go +++ b/backend/main.go @@ -53,14 +53,15 @@ func main() { Handler: metricsMux, } - go func() { + runner := shared.Runner{} + runner.RunParallel(func() { if err := metrics.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Printf("error in metrics server: %s", err.Error()) } log.Printf("metrics shut down, shutting down asynq as well") srv.Shutdown() - }() - go func() { + }) + runner.RunParallel(func() { if err := srv.Run(mux); err != nil { log.Printf("error in asynq server: %s", err.Error()) } @@ -68,5 +69,6 @@ func main() { if err := metrics.Shutdown(context.Background()); err != nil { log.Printf("error shutting down metrics server: %s", err.Error()) } - }() + }) + runner.Wait() } diff --git a/shared/runner.go b/shared/runner.go new file mode 100644 index 0000000..1720040 --- /dev/null +++ b/shared/runner.go @@ -0,0 +1,19 @@ +package shared + +import "sync" + +type Runner struct { + wg sync.WaitGroup +} + +func (runner *Runner) RunParallel(closure func()) { + runner.wg.Add(1) + go func() { + closure() + runner.wg.Done() + }() +} + +func (runner *Runner) Wait() { + runner.wg.Wait() +} -- GitLab