From 54535d99700adee69b4e72aabcfa327152b1b68e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20=C5=A0alata?= Date: Mon, 29 Aug 2022 16:47:39 +0200 Subject: [PATCH] Fix the server shutdown procedure --- cmd/main.go | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index 62ff950..afb2753 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -62,19 +62,31 @@ func main() { mux.HandleFunc("/mutate", whsvr.serve) whsvr.server.Handler = mux - // start webhook server in new rountine + // define the channel for shutting down the main process + endSignal := make(chan bool, 1) + + // wait for the system interrupts in a separate routine + go func() { + signalChan := make(chan os.Signal, 1) + signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM) + sig := <-signalChan + + logger.Infof(fmt.Sprintf("Got OS signal \"%+v\", shutting down webhook server gracefully...", sig)) + + endSignal <- true + }() + + // start the webhook server in a separate routine go func() { if err := whsvr.server.ListenAndServeTLS(parameters.certFile, parameters.keyFile); err != nil { logger.Errorf("Failed to listen and serve webhook server: %v", err) } + + endSignal <- true }() - // listening OS shutdown singal - signalChan := make(chan os.Signal, 1) - signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM) - <-signalChan - - logger.Infof("Got OS shutdown signal, shutting down webhook server gracefully...") + <-endSignal + logger.Infof("Received the end signal, stopping the main process") if err := whsvr.Shutdown(); err != nil { logger.Errorf("Error while shutting down: %v", err) }