From b2e04c53622a0c709505d778224286b482855304 Mon Sep 17 00:00:00 2001 From: Ming Deng <mindeng@ebay.com> Date: Sun, 24 Nov 2019 17:31:01 +0800 Subject: [PATCH] Define DumpHeapSingals on different platforms --- config/graceful_shutdown.go | 21 ++++++++++----------- config/graceful_shutdown_signal_unix.go | 3 +++ config/graceful_shutdown_signal_windows.go | 2 ++ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/config/graceful_shutdown.go b/config/graceful_shutdown.go index 1119c3a53..fedb2c15e 100644 --- a/config/graceful_shutdown.go +++ b/config/graceful_shutdown.go @@ -21,7 +21,6 @@ import ( "os" "os/signal" "runtime/debug" - "syscall" "time" ) @@ -66,18 +65,18 @@ func GracefulShutdownInit() { // gracefulShutdownOnce.Do(func() { BeforeShutdown() - switch sig { // those signals' original behavior is exit with dump ths stack, so we try to keep the behavior - // syscall.SIGSYS will be ignored. It's not supported in windows platform. - case syscall.SIGQUIT, syscall.SIGILL, syscall.SIGTRAP, - syscall.SIGABRT: - debug.WriteHeapDump(os.Stdout.Fd()) - default: - time.AfterFunc(totalTimeout(), func() { - logger.Warn("Shutdown gracefully timeout, application will shutdown immediately. ") - os.Exit(0) - }) + for _, dumpSignal := range DumpHeapShutdownSignals { + if sig == dumpSignal { + debug.WriteHeapDump(os.Stdout.Fd()) + } } + + time.AfterFunc(totalTimeout(), func() { + logger.Warn("Shutdown gracefully timeout, application will shutdown immediately. ") + os.Exit(0) + }) + os.Exit(0) } }() diff --git a/config/graceful_shutdown_signal_unix.go b/config/graceful_shutdown_signal_unix.go index 6333a0022..59c1a5d14 100644 --- a/config/graceful_shutdown_signal_unix.go +++ b/config/graceful_shutdown_signal_unix.go @@ -25,3 +25,6 @@ import ( var ShutdownSignals = []os.Signal{os.Interrupt, os.Kill, syscall.SIGKILL, syscall.SIGSTOP, syscall.SIGHUP, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGILL, syscall.SIGTRAP, syscall.SIGABRT, syscall.SIGSYS} + +var DumpHeapShutdownSignals = []os.Signal{syscall.SIGQUIT, syscall.SIGILL, + syscall.SIGTRAP, syscall.SIGABRT, syscall.SIGSYS} diff --git a/config/graceful_shutdown_signal_windows.go b/config/graceful_shutdown_signal_windows.go index ff7a48113..91b2bce7c 100644 --- a/config/graceful_shutdown_signal_windows.go +++ b/config/graceful_shutdown_signal_windows.go @@ -25,3 +25,5 @@ import ( var ShutdownSignals = []os.Signal{os.Interrupt, os.Kill, syscall.SIGKILL, syscall.SIGHUP, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGILL, syscall.SIGTRAP, syscall.SIGABRT} + +var DumpHeapShutdownSignals = []os.Signal{syscall.SIGQUIT, syscall.SIGILL, syscall.SIGTRAP, syscall.SIGABRT} -- GitLab