From 26b1d32d344ac62cb196449044ddec71beb53238 Mon Sep 17 00:00:00 2001 From: oleksandr Date: Fri, 17 Jan 2025 10:02:58 +0200 Subject: [PATCH 1/2] fix graceful shutdown if admin server is not enabled --- server/server.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/server/server.go b/server/server.go index 9461f3f451d..3ef8effcebb 100644 --- a/server/server.go +++ b/server/server.go @@ -27,6 +27,7 @@ func Listen(cfg *config.Configuration, handler http.Handler, adminHandler http.H stopAdmin := make(chan os.Signal) stopMain := make(chan os.Signal) stopPrometheus := make(chan os.Signal) + var stopChannels = []chan<- os.Signal{stopMain} done := make(chan struct{}) if cfg.UnixSocketEnable && len(cfg.UnixSocketName) > 0 { // start the unix_socket server if config enable-it. @@ -54,6 +55,7 @@ func Listen(cfg *config.Configuration, handler http.Handler, adminHandler http.H } if cfg.Admin.Enabled { + stopChannels = append(stopChannels, stopAdmin) adminServer := newAdminServer(cfg, adminHandler) go shutdownAfterSignals(adminServer, stopAdmin, done) @@ -70,6 +72,7 @@ func Listen(cfg *config.Configuration, handler http.Handler, adminHandler http.H prometheusListener net.Listener prometheusServer = newPrometheusServer(cfg, metrics) ) + stopChannels = append(stopChannels, stopPrometheus) go shutdownAfterSignals(prometheusServer, stopPrometheus, done) if prometheusListener, err = newTCPListener(prometheusServer.Addr, nil); err != nil { glog.Errorf("Error listening for TCP connections on %s: %v for prometheus server", prometheusServer.Addr, err) @@ -77,11 +80,10 @@ func Listen(cfg *config.Configuration, handler http.Handler, adminHandler http.H } go runServer(prometheusServer, "Prometheus", prometheusListener) - wait(stopSignals, done, stopMain, stopAdmin, stopPrometheus) - } else { - wait(stopSignals, done, stopMain, stopAdmin) } + wait(stopSignals, done, stopChannels...) + return } From 4eb764d1142c0ef28f615ee348e0acff7d509d9f Mon Sep 17 00:00:00 2001 From: oleksandr Date: Thu, 6 Feb 2025 13:59:18 +0200 Subject: [PATCH 2/2] simplify var initialization --- server/server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/server.go b/server/server.go index 3ef8effcebb..257ccea8821 100644 --- a/server/server.go +++ b/server/server.go @@ -27,7 +27,7 @@ func Listen(cfg *config.Configuration, handler http.Handler, adminHandler http.H stopAdmin := make(chan os.Signal) stopMain := make(chan os.Signal) stopPrometheus := make(chan os.Signal) - var stopChannels = []chan<- os.Signal{stopMain} + stopChannels := []chan<- os.Signal{stopMain} done := make(chan struct{}) if cfg.UnixSocketEnable && len(cfg.UnixSocketName) > 0 { // start the unix_socket server if config enable-it.