From e2f84b69e1eb67f82aa72a0daa68e319016b8b00 Mon Sep 17 00:00:00 2001 From: Virgil Date: Fri, 3 Apr 2026 23:10:33 +0000 Subject: [PATCH] fix(process): capture health server in serve goroutine --- health.go | 9 +++++---- health_test.go | 6 ++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/health.go b/health.go index 84e4bf6..26a426f 100644 --- a/health.go +++ b/health.go @@ -92,12 +92,13 @@ func (h *HealthServer) Start() error { return core.E("health.start", core.Concat("failed to listen on ", h.addr), err) } + server := &http.Server{Handler: mux} h.listener = listener - h.server = &http.Server{Handler: mux} + h.server = server - go func() { - _ = h.server.Serve(listener) - }() + go func(srv *http.Server, ln net.Listener) { + _ = srv.Serve(ln) + }(server, listener) return nil } diff --git a/health_test.go b/health_test.go index 32760d2..e3e025d 100644 --- a/health_test.go +++ b/health_test.go @@ -66,6 +66,12 @@ func TestHealthServer_WithChecks_Good(t *testing.T) { _ = resp.Body.Close() } +func TestHealthServer_StopImmediately_Good(t *testing.T) { + hs := NewHealthServer("127.0.0.1:0") + require.NoError(t, hs.Start()) + require.NoError(t, hs.Stop(context.Background())) +} + func TestWaitForHealth_Reachable_Good(t *testing.T) { hs := NewHealthServer("127.0.0.1:0") require.NoError(t, hs.Start())