Merge "Clean up watchdog threads"

This commit is contained in:
Zuul 2024-05-02 18:17:12 +00:00 committed by Gerrit Code Review
commit ec3224cc18
4 changed files with 17 additions and 1 deletions

View File

@ -4853,6 +4853,14 @@ class Watchdog(object):
if self._run_gth is None:
self._run_gth = eventlet.spawn(self.run)
def kill(self):
"""
Stop the watchdog greenthread.
"""
if self._run_gth is not None:
self._run_gth.kill()
self._run_gth = None
def run(self):
while True:
self._run()

View File

@ -460,7 +460,10 @@ def run_server(conf, logger, sock, global_conf=None, ready_callback=None,
except socket.error as err:
if err.errno != errno.EINVAL:
raise
pool.waitall()
finally:
pool.waitall()
if hasattr(app._pipeline_final_app, 'watchdog'):
app._pipeline_final_app.watchdog.kill()
class StrategyBase(object):

View File

@ -634,6 +634,7 @@ class TestWSGI(unittest.TestCase, ConfigAssertMixin):
server_sock, server_app, server_logger = args
self.assertEqual(sock, server_sock)
self.assertIsInstance(server_app, swift.proxy.server.Application)
self.assertIsNone(server_app.watchdog._run_gth)
self.assertEqual(20, server_app.client_timeout)
self.assertIsInstance(server_logger, wsgi.NullLogger)
self.assertTrue('custom_pool' in kwargs)

View File

@ -335,6 +335,10 @@ def setup_servers(the_object_server=object_server, extra_conf=None):
def teardown_servers(context):
for server in context["test_coros"]:
server.kill()
# We didn't start the proxy w/ run_server, so we have to kill the
# watchdog ourselves
context["test_servers"][0].watchdog.kill()
assert context["test_servers"][0].watchdog._run_gth is None
rmtree(os.path.dirname(context["testdir"]))
utils.logs.SysLogHandler = context["orig_SysLogHandler"]
storage_policy._POLICIES = context["orig_POLICIES"]