fix: wrap Playwright cleanup in try-except to prevent masking original errors

page.close() and browser.close() can raise if the remote Playwright
connection is already gone. Catch and log these at debug level so
cleanup failures don't mask the original loader error.
This commit is contained in:
michaelxer 2026-06-11 01:44:00 +07:00
parent ceba1ee70c
commit ce19473536

View file

@ -588,9 +588,15 @@ class SafePlaywrightURLLoader(PlaywrightURLLoader, RateLimitMixin, URLProcessing
raise e
finally:
if page:
page.close()
try:
page.close()
except Exception as e:
log.debug(f"Error closing Playwright page for {url}: {e}", exc_info=True)
finally:
browser.close()
try:
browser.close()
except Exception as e:
log.debug(f"Error closing Playwright browser: {e}", exc_info=True)
async def alazy_load(self) -> AsyncIterator[Document]:
"""Safely load URLs asynchronously with support for remote browser."""
@ -624,9 +630,15 @@ class SafePlaywrightURLLoader(PlaywrightURLLoader, RateLimitMixin, URLProcessing
raise e
finally:
if page:
await page.close()
try:
await page.close()
except Exception as e:
log.debug(f"Error closing Playwright page for {url}: {e}", exc_info=True)
finally:
await browser.close()
try:
await browser.close()
except Exception as e:
log.debug(f"Error closing Playwright browser: {e}", exc_info=True)
class SafeWebBaseLoader(WebBaseLoader):