Repository navigation
fix(sessions): clear stale corrupt-history backoff after recovery - #4726
Closed
ScriptedAlchemy wants to merge 3 commits into
Closed
ScriptedAlchemy wants to merge 3 commits into
ScriptedAlchemy wants to merge 3 commits into
Conversation
Clear the previous terminal retry escalation when an admitted history pass is no longer Blocked, even if it commits no new source rows. A suppressed wake and a Blocked result with healthy-sibling progress still cannot clear a corrupt provider's backoff. Add a regression covering pending/retryable zero-progress recovery and the blocked, cancelled and suppressed cases. Refs #4569.
|
Use the existing typed HistoryRelease authority to distinguish an admitted history pass from synthetic retryable admission saturation. A denied permit cannot prove a blocked provider has recovered. Extend the existing outcome regressions with actual admission and no-progress distinctions.
Apply the exact rustfmt_check_2024 output to the existing assertions. Preserve behavior and keep the history-backoff regression intact.
This was referenced Nov 3, 2026
Owner
Author
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.
Root cause
Refs #4569 (partial scheduler recovery correctness).
The worker already backs off a terminal
Blockedhistorical-ingest result. However, it cleared the old retry escalation only when the next nonblocked pass hadhistory_requires_projection, i.e. made progress or returnedComplete. A legitimately recoveredPending { made_progress: false }orRetryable { made_progress: false }result left the old terminal attempt count intact. If a subsequent independent corruption appears, its first refusal can inherit the earlier long delay instead of starting at the normal one-minute floor.Change
HistoryRelease::Capacityproves an ingestor pass ran and its result is nonblocked (Complete,Pending,Retryable), independent of source-row progress. A synthetichistory_admission_saturatedRetryable keeps the previous escalation.None) or aBlockedresult, including when healthy sibling providers committed rows. Cancellation still stops the worker before reset.One owning worker file changes. The unit regression distinguishes admitted outcomes at zero and positive progress, cancellation and suppressed wakes, and admission refusal after a previous corrupt-store blocker. No runtime or Bazel pass is claimed.
Verification
Reviewed the current
masterworker and historical outcome enum, its cancellation and projection paths, the relevant outstanding history-blocker PR (#4715), and this exact one-commit GitHub diff. The branch was pushed non-force from master at16f436862d9d5cda5c8faf9e532b6f4cc15c4842with an expected-head update. Only the worker file changes; no integrity gate or assertion was weakened.Bazel, Rust compilation, rustfmt, and the added regression were not executed: this execution environment has no supplied checkout or Bazel/Rust toolchain. Hosted CI must compile and execute the session-temporal-runtime unit test and broader refresh journeys on this isolated head before merge. Source review is not a test pass.
Remaining #4569 scope
This does not implement the missing verified relational
sessions.dbrebuild protocol, prove recovery of the reported 1.6-GB corrupt store, or complete status/Doctor visibility and restart behavior. Keep #4569 open. The existing PR-repair/merge automation owns hosted CI follow-through and authorized merging.