diff --git a/patroni/__init__.py b/patroni/__init__.py index ef1f29c5..706df5fa 100644 --- a/patroni/__init__.py +++ b/patroni/__init__.py @@ -1,5 +1,6 @@ import logging import signal +import sys import time from patroni.api import RestApiServer @@ -65,7 +66,9 @@ class Patroni(object): self._received_sighup = True def sigterm_handler(self, *args): - self._received_sigterm = True + if not self._received_sigterm: + self._received_sigterm = True + sys.exit() @property def noloadbalance(self): @@ -112,7 +115,7 @@ class Patroni(object): def setup_signal_handlers(self): signal.signal(signal.SIGHUP, self.sighup_handler) - signal.signal(signal.SIGHUP, self.sigterm_handler) + signal.signal(signal.SIGTERM, self.sigterm_handler) signal.signal(signal.SIGCHLD, sigchld_handler) diff --git a/tests/test_patroni.py b/tests/test_patroni.py index ef2a5fc0..af8b36b0 100644 --- a/tests/test_patroni.py +++ b/tests/test_patroni.py @@ -69,7 +69,7 @@ class TestPatroni(unittest.TestCase): self.assertRaises(SleepException, self.p.run) def test_sigterm_handler(self): - self.p.sigterm_handler() + self.assertRaises(SystemExit, self.p.sigterm_handler) def test_schedule_next_run(self): self.p.ha.dcs.watch = Mock(return_value=True)