2
2
mirror of https://github.com/octoleo/restic.git synced 2024-11-27 07:16:40 +00:00

Catch SIGTERM, run cleanup

The previous code only ran cleanup (lock release for example) on SIGINT.  For
anyone running restic in a container, the signal is going to be SIGTERM which
means containerized execution would leave locks behind.

While this could be addressed via interposing dumb-init to translate the signal,
a `kill` invocation is going to default to SIGTERM, so the same problem exists
for non container users.

Signed-off-by: Brian Harring <ferringb@gmail.com>
This commit is contained in:
Brian Harring 2024-02-19 11:09:25 +01:00
parent cfbeb2cde5
commit 30e979d252
No known key found for this signature in database
GPG Key ID: AAF3CB6981BFAE49

View File

@ -19,7 +19,7 @@ var cleanupHandlers struct {
func init() { func init() {
cleanupHandlers.ch = make(chan os.Signal, 1) cleanupHandlers.ch = make(chan os.Signal, 1)
go CleanupHandler(cleanupHandlers.ch) go CleanupHandler(cleanupHandlers.ch)
signal.Notify(cleanupHandlers.ch, syscall.SIGINT) signal.Notify(cleanupHandlers.ch, syscall.SIGINT, syscall.SIGTERM)
} }
// AddCleanupHandler adds the function f to the list of cleanup handlers so // AddCleanupHandler adds the function f to the list of cleanup handlers so
@ -70,7 +70,7 @@ func CleanupHandler(c <-chan os.Signal) {
code := 0 code := 0
if s == syscall.SIGINT { if s == syscall.SIGINT || s == syscall.SIGTERM {
code = 130 code = 130
} else { } else {
code = 1 code = 1