From aef560c7fc52092a412d9e97112b8cb879c5eda5 Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Tue, 12 May 2020 11:36:20 -0600 Subject: all: Recover from panics in goroutines --- admin.go | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'admin.go') diff --git a/admin.go b/admin.go index 6831686..1d19066 100644 --- a/admin.go +++ b/admin.go @@ -520,16 +520,19 @@ func handleStop(w http.ResponseWriter, r *http.Request) error { if err != nil { Log().Named("admin.api").Error("unload error", zap.Error(err)) } - go func() { - err := stopAdminServer(adminServer) - var exitCode int - if err != nil { - exitCode = ExitCodeFailedQuit - Log().Named("admin.api").Error("failed to stop admin server gracefully", zap.Error(err)) - } - Log().Named("admin.api").Info("stopping now, bye!! 👋") - os.Exit(exitCode) - }() + if adminServer != nil { + // use goroutine so that we can finish responding to API request + go func() { + err := stopAdminServer(adminServer) + var exitCode int + if err != nil { + exitCode = ExitCodeFailedQuit + Log().Named("admin.api").Error("failed to stop admin server gracefully", zap.Error(err)) + } + Log().Named("admin.api").Info("stopping now, bye!! 👋") + os.Exit(exitCode) + }() + } return nil } -- cgit v1.2.3