From e9a100ab4a1c62bce40617857533e15cc79fbd70 Mon Sep 17 00:00:00 2001 From: Vassiliy Yegorov Date: Sat, 4 Jul 2026 15:52:40 +0700 Subject: [PATCH] fix(server): drain scheduler on unexpected serve error before exit Co-Authored-By: Claude Opus 4.8 (1M context) --- cmd/server/main.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cmd/server/main.go b/cmd/server/main.go index 08ecbe9..dd40bfd 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -185,6 +185,12 @@ func main() { log.Printf("server stopped") case err := <-serveErr: if err != nil { + // Unwind scheduler.Run via ctx.Done and wait for the in-flight + // RunOnce to finish before exiting, so an unexpected serve error + // mid-run doesn't kill the process during a check/notify write — + // same hazard the ctx.Done branch above already guards against. + stop() + wg.Wait() log.Fatalf("server: %v", err) } }