From 1a3bed6f6e2a85f19c1911a35e406d052d426b75 Mon Sep 17 00:00:00 2001 From: Andrew Pikul Date: Tue, 28 Jan 2025 12:39:22 -0500 Subject: [PATCH 1/3] Improve logging around close --- choreographer/browser_async.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/choreographer/browser_async.py b/choreographer/browser_async.py index 2b272597..29a36214 100644 --- a/choreographer/browser_async.py +++ b/choreographer/browser_async.py @@ -169,20 +169,23 @@ async def _is_closed(self, wait: int | None = 0) -> bool: async def _close(self) -> None: if await self._is_closed(): + _logger.debug("No _close(), already is closed") return try: await self.send_command("Browser.close") except (BrowserClosedError, BrowserFailedError): + _logger.debug("Browser is closed trying to send Browser.close") return except ChannelClosedError: - pass + _logger.debug("Can send browser.close on close channel") await asyncio.to_thread(self._channel.close) if await self._is_closed(): + _logger.debug("Browser is closed after closing channel") return - + _logger.info("Must kill browser.") await asyncio.to_thread(kill, self.subprocess) if await self._is_closed(wait=4): return @@ -206,7 +209,7 @@ async def close(self) -> None: _logger.info("Broker cleaned up.") if self._logger_pipe: os.close(self._logger_pipe) - _logger.info("Logging pipe closed.") + _logger.info("Logging pipe closed.") self._channel.close() _logger.info("Browser channel closed.") self._browser_impl.clean() # threading this just seems to cause problems From b5c5dfe962eb883727f3bb02deb4ba801ab4d21d Mon Sep 17 00:00:00 2001 From: Andrew Pikul Date: Tue, 28 Jan 2025 12:39:33 -0500 Subject: [PATCH 2/3] Now tried eliminating temp dir 5 times --- choreographer/utils/_tmpfile.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/choreographer/utils/_tmpfile.py b/choreographer/utils/_tmpfile.py index 339ab05d..3795cf01 100644 --- a/choreographer/utils/_tmpfile.py +++ b/choreographer/utils/_tmpfile.py @@ -185,10 +185,13 @@ def remove_readonly( _logger.info(f"shutil.rmtree() failed to delete temporary file. Error {e}") def extra_clean() -> None: - _logger.info("Extra manual clean waiting 3 seconds.") - time.sleep(1) - _logger.info("Extra manual clean executing.") - self._delete_manually() + i = 0 + tries = 5 + while self.path.exists() and i < tries: + time.sleep(1) + _logger.info("Extra manual clean executing.") + self._delete_manually() + i += 1 # testing doesn't look threads so I guess we'll block extra_clean() From b3b2dcf1fcde3e54b75b56fd18e918603843b7a9 Mon Sep 17 00:00:00 2001 From: Andrew Pikul Date: Tue, 28 Jan 2025 12:47:46 -0500 Subject: [PATCH 3/3] Add remove counter to logging --- choreographer/utils/_tmpfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/choreographer/utils/_tmpfile.py b/choreographer/utils/_tmpfile.py index 3795cf01..abdbc104 100644 --- a/choreographer/utils/_tmpfile.py +++ b/choreographer/utils/_tmpfile.py @@ -189,7 +189,7 @@ def extra_clean() -> None: tries = 5 while self.path.exists() and i < tries: time.sleep(1) - _logger.info("Extra manual clean executing.") + _logger.info(f"Extra manual clean executing {i}.") self._delete_manually() i += 1