Repository navigation
fix(playback): bound stale-pin recovery re-list with the shared damper - #238
Merged
Merged
Conversation
The stale-pin recovery re-lists the provider directly to bypass the provider floor, but did so outside virtualRecoveryRelists, the damper that bounds the sibling fallback and the other floor-bypassing recovery resolves. A burst of dead-pin cold starts could therefore keep a failing provider hot without the shared backpressure. Route the recovery's re-list through virtualRecoveryRelists with the fallback's acquire/accounting semantics: acquire before listing, clear once a listing answers with candidates, and let an empty or failed answer keep accumulating toward the bound. An exhausted budget preserves the caller's terminal so the version-fallback walk proceeds to its alternates, matching the sibling fallback's deterministic yield. The 500ms recovery sub-budget, single-retry bound, transient-only semantics, session-bound refusal, and fingerprint matching are unchanged. Add a dedicated test proving the damper engages on the recovery path (budget exhausted -> recovery skips the listing with no side effects, no sleeps) plus one pinning the clear-on-answer accounting. Refs #237
Collaborator
Author
|
Ready for review: damper-bound recovery re-list with shared accounting, full suites + |
Collaborator
Review — APPROVESmall, safe, one-concern fix. Verified against head
Tests: Non-blocking nits:
Safe to merge as-is. |
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.
Problem
Closes #237
Follow-up from PR #234 (merged). The stale-pin recovery re-list ran outside the
virtualRecoveryRelistsdamper bounding the sibling fallback.Approach
Route the recovery re-list through the shared damper with identical acquire/accounting semantics: exhausted budget yields deterministically to alternates (terminal preserved); answered listings clear the key; empty/failed answers accumulate. 500ms sub-budget, single-retry bound, transient-only semantics, session-bound refusal, and fingerprint matching unchanged.
Validation
-race; gofmt/vet cleanRisks
Under damper exhaustion the recovery skips its re-list where it previously attempted one — same deterministic yield as the sibling fallback. No API, migration, or config impact.
Checklist
AI Disclosure