signal: catch all termination signals by default

In this commit, we modify the primary `signal` package to instead catch
all signals. Before this commit, it would only catch the interrupt
signal sent from the kernel. With this new commit, we'll now also catch
(or attempt to catch): `SIGABRT`, `SIGTERM`, `SIGSTOP`, and `SIGQUIT`.
This commit is contained in:
Olaoluwa Osuntokun 2019-03-26 18:15:07 -07:00
parent ec70965c8a
commit c731a99647
No known key found for this signature in database
GPG Key ID: CE58F7F8E20FD9A2

@ -8,6 +8,7 @@ package signal
import (
"os"
"os/signal"
"syscall"
)
var (
@ -26,7 +27,15 @@ var (
)
func init() {
signal.Notify(interruptChannel, os.Interrupt)
signalsToCatch := []os.Signal{
os.Interrupt,
os.Kill,
syscall.SIGABRT,
syscall.SIGTERM,
syscall.SIGSTOP,
syscall.SIGQUIT,
}
signal.Notify(interruptChannel, signalsToCatch...)
go mainInterruptHandler()
}
@ -60,8 +69,8 @@ func mainInterruptHandler() {
for {
select {
case <-interruptChannel:
log.Infof("Received SIGINT (Ctrl+C).")
case signal := <-interruptChannel:
log.Infof("Received %v", signal)
shutdown()
case <-shutdownRequestChannel: