fix(core): retry query_selector on stale document ID #235
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR fixes a race condition where
Tab.query_selectorandTab.query_selector_allwould fail if the document node ID became invalid immediately after being fetched.query_selector_all, the method now catches the specificProtocolExceptionwhen the document is stale, re-fetches the document, and retries.query_selector, the method no longer returnsNone(masking the error) when the document is stale; instead, it re-fetches and retries.Both implementations piggyback on the existing retry logic (passing the new doc as
_node). We explicitly set__last=Trueon the new document node to ensure we retry exactly once and prevent infinite recursion or double-retries.Related Issue
Closes #234
Pre-merge Checklist
./scripts/format.shand./scripts/lint.shscripts. My code is properly formatted and has no linting errors.uv run pytestand ensured all tests pass.[Unreleased]section.