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 diff --git a/choreographer/utils/_tmpfile.py b/choreographer/utils/_tmpfile.py index 339ab05d..abdbc104 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(f"Extra manual clean executing {i}.") + self._delete_manually() + i += 1 # testing doesn't look threads so I guess we'll block extra_clean()