From 9a572635f581c57a6d09a107e506ffac2e970b03 Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Thu, 16 Apr 2020 12:34:28 -0600 Subject: [PATCH] admin: Close admin endpoint when shutting down (fixes #3269) --- sigtrap.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/sigtrap.go b/sigtrap.go index 88dbb6da6..08f03aa7f 100644 --- a/sigtrap.go +++ b/sigtrap.go @@ -53,20 +53,29 @@ func trapSignalsCrossPlatform() { } // gracefulStop exits the process as gracefully as possible. +// It always exits, even if there are errors shutting down. func gracefulStop(sigName string) { exitCode := ExitCodeSuccess + defer func() { + Log().Info("shutdown done", zap.String("signal", sigName)) + os.Exit(exitCode) + }() err := stopAndCleanup() if err != nil { - Log().Error("stopping", + Log().Error("stopping config", zap.String("signal", sigName), - zap.Error(err), - ) + zap.Error(err)) exitCode = ExitCodeFailedQuit } - Log().Info("shutdown done", zap.String("signal", sigName)) - os.Exit(exitCode) + err = stopAdminServer(adminServer) + if err != nil { + Log().Error("stopping admin endpoint", + zap.String("signal", sigName), + zap.Error(err)) + exitCode = ExitCodeFailedQuit + } } // Exit codes. Generally, you should NOT