1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2024-12-25 17:27:31 +00:00

Handle SIGTERM and make a clean exit

This commit is contained in:
Marian Beermann 2016-05-17 18:57:53 +02:00
parent f9638645d1
commit 6cf61024d9
No known key found for this signature in database
GPG key ID: 9B8450B91D1362C1

View file

@ -1488,6 +1488,14 @@ def sig_info_handler(signum, stack): # pragma: no cover
break
class SIGTERMReceived(BaseException):
pass
def sig_term_handler(signum, stack):
raise SIGTERMReceived
def setup_signal_handlers(): # pragma: no cover
sigs = []
if hasattr(signal, 'SIGUSR1'):
@ -1496,6 +1504,7 @@ def setup_signal_handlers(): # pragma: no cover
sigs.append(signal.SIGINFO) # kill -INFO pid (or ctrl-t)
for sig in sigs:
signal.signal(sig, sig_info_handler)
signal.signal(signal.SIGTERM, sig_term_handler)
def main(): # pragma: no cover
@ -1523,6 +1532,9 @@ def main(): # pragma: no cover
except KeyboardInterrupt:
msg = 'Keyboard interrupt.\n%s\n%s' % (traceback.format_exc(), sysinfo())
exit_code = EXIT_ERROR
except SIGTERMReceived:
msg = 'Received SIGTERM.'
exit_code = EXIT_ERROR
if msg:
logger.error(msg)
if args.show_rc: