diff --git a/cotyledon/__init__.py b/cotyledon/__init__.py index a7ad4dd..317d228 100644 --- a/cotyledon/__init__.py +++ b/cotyledon/__init__.py @@ -307,7 +307,11 @@ class ServiceManager(object): os.killpg(0, signal.SIGTERM) LOG.debug("Waiting services to terminate") - os.waitpid(-1, 0) + while True: + try: + os.waitpid(0, 0) + except OSError: + break LOG.debug("Shutdown finish") _logged_sys_exit(0) diff --git a/cotyledon/tests/test_cotyledon.py b/cotyledon/tests/test_cotyledon.py index fffc25a..d9476e7 100644 --- a/cotyledon/tests/test_cotyledon.py +++ b/cotyledon/tests/test_cotyledon.py @@ -140,6 +140,8 @@ class TestCotyledon(base.TestCase): os.kill(self.subp.pid, signal.SIGTERM) self.subp.terminate() lines = self.get_lines() + self.assertEqual(b'DEBUG:cotyledon:Shutdown finish', + lines[-1]) time.sleep(0.5) lines = sorted(self.hide_pids(lines)) self.assertEqual([