Retry a target which Real Vuforia has not yet made visible - #3542
Merged
Conversation
The target_id fixture creates a target, is given its ID, and then waits for it to process. Real Vuforia sometimes answers that wait with UnknownTarget, because the target it just created is not yet visible to the read path, and the fixture fails at setup. UnknownTargetError is not in TRANSIENT_VWS_EXCEPTIONS, so the existing tenacity retry re-raises on the first attempt. Add a separate retry for this case rather than widening that tuple: it also decides what pytest-retry retries during tests, where an unexpected UnknownTargetError is a result worth seeing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
adamtheturtle
temporarily deployed
to
development
September 4, 2026 22:56 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 4, 2026 22:59 — with
GitHub Actions
Inactive
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The
target_idfixture failed at setup onmain's test suite, seen on job 101147499095:Vuforia created the target and returned its ID, then answered
GET /summary/{that id}withUnknownTarget. The target had not yet become visible to the read path._add_target_which_processed_successfullyis already wrapped inRETRY_ON_TRANSIENT_VWS_FAILURE, butUnknownTargetErroris not inTRANSIENT_VWS_EXCEPTIONS, so tenacity re-raised on the first attempt — the log showsattempt #1; slept for 0.0.What this changes
A separate
RETRY_ON_TARGET_NOT_YET_VISIBLE(2 seconds, up to the existing 10 attempts), applied to a new_wait_for_target_processedhelper which the fixture calls in place of the client method directly.Why not widen TRANSIENT_VWS_EXCEPTIONS
That tuple does double duty: it also decides which failures
pytest-retryretries during tests, intest_query.py:2055andtest_database_summary.py:48. AddingUnknownTargetErrorthere would mean a test which unexpectedly gotUnknownTarget— a genuine mock/real divergence, which is the thing this suite exists to catch — would be retried away instead of reported.The new retry is documented as usable only by code which has just been handed a target's ID by Vuforia, and therefore knows the target exists.
Verification
test_get_target.pyandtest_invalid_json.pywith--skip-real: 170 passed, 85 skipped.pre-commit,pre-pushandmanual.The mock backends are immediately consistent, so this never retries against them; it costs nothing except on Real Vuforia.
No behaviour change in
src/, so no newsfragment.🤖 Generated with Claude Code