From: Aleš Mrázek Date: Wed, 29 Jan 2025 15:00:38 +0000 (+0100) Subject: manager: processes_watchdog: handle SubprocessControllerError during shutdown X-Git-Tag: v6.0.11~7^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b89f5f6b5f8a15c77b2e49bb45e19457d7e089e;p=thirdparty%2Fknot-resolver.git manager: processes_watchdog: handle SubprocessControllerError during shutdown --- diff --git a/python/knot_resolver/manager/manager.py b/python/knot_resolver/manager/manager.py index c26d95616..dcd14b537 100644 --- a/python/knot_resolver/manager/manager.py +++ b/python/knot_resolver/manager/manager.py @@ -351,8 +351,8 @@ class KresManager: # pylint: disable=too-many-instance-attributes async def stop(self): if self._processes_watchdog_task is not None: - self._processes_watchdog_task.cancel() # cancel it try: + self._processes_watchdog_task.cancel() # cancel it await self._processes_watchdog_task # and let it really finish except asyncio.CancelledError: pass @@ -437,11 +437,17 @@ class KresManager: # pylint: disable=too-many-instance-attributes ) invoke_callback = True + except SubprocessControllerError as e: + # wait few seconds and see if 'processes_watchdog' task is cancelled (during shutdown) + # otherwise it is an error + await asyncio.sleep(3) + invoke_callback = True + logger.error(f"Processes watchdog failed with SubprocessControllerError: {e}") except asyncio.CancelledError: raise except BaseException: invoke_callback = True - logger.error("Knot Resolver processes watchdog failed with an unexpected exception.", exc_info=True) + logger.error("Processes watchdog failed with an unexpected exception.", exc_info=True) if invoke_callback: try: