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:
parent
cfbeb2cde5
commit
30e979d252
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user