Skip to content
Snippets Groups Projects
Commit b2e04c53 authored by Ming Deng's avatar Ming Deng
Browse files

Define DumpHeapSingals on different platforms

parent a3d38502
No related branches found
No related tags found
No related merge requests found
......@@ -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)
}
}()
......
......@@ -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}
......@@ -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}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment