Skip to content

Commit 31d036e

Browse files
committed
fix: handle SIGTERM gracefully on unix
We weren't catching SIGTERM and cancelling our context, so the go runtime would have us exit with a non-zero code when the signal was received. Let's catch it and try to exit gracefully. i.e. before: (...) I0508 11:08:00.426917 1787442 log_monitor.go:237] Initialize condition generated: [] ^C $ echo $? 130 and now: (...) I0508 11:07:42.150562 1787146 log_monitor.go:237] Initialize condition generated: [] ^C I0508 11:07:43.372093 1787146 log_monitor.go:123] Stop log monitor /tmp/npd-test.json I0508 11:07:43.652876 1787146 log_watcher.go:104] Stop watching filelog I0508 11:07:43.652923 1787146 log_monitor.go:144] Log monitor stopped: /tmp/npd-test.json $ echo $? 0
1 parent 653620a commit 31d036e

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

cmd/nodeproblemdetector/node_problem_detector_unix.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ package main
2121
import (
2222
"context"
2323
"flag"
24+
"os"
25+
"os/signal"
26+
"syscall"
2427

2528
"github.com/spf13/pflag"
2629
"k8s.io/klog/v2"
@@ -54,7 +57,9 @@ func main() {
5457
}
5558

5659
pflag.Parse()
57-
if err := npdMain(context.Background(), npdo); err != nil {
60+
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
61+
defer stop()
62+
if err := npdMain(ctx, npdo); err != nil {
5863
klog.Fatalf("Problem detector failed with error: %v", err)
5964
}
6065
}

0 commit comments

Comments
 (0)