Repository navigation
Conversation
Summary: Let queues register multiple repair backends and let each backend group its own issue openings. Submission receipts identify accepted work or a terminal skip for each input item; metadata stays in versioned storage. This contract change builds on repair-state persistence. Controller and reference-server callers migrate in the next PR in the stack. Test Plan: `./tool/bazel build //stovepipe/extension/fixer/...` builds the contract, generated mock, and no-op implementation. `make mocks` regenerated the mock, and lint, tidy, and Gazelle checks verify the generated sources and build metadata. Caller compilation requires the next PR. Revert Plan: Revert the dependent dispatch change before reverting this contract change.
Summary: Offer each registered executor all outstanding issue openings in one batch. Persist pending rows before dispatch and retain per-item acceptance or skips while preserving executor metadata through versioned updates. Restore durable history on replay and preserve independent error causes and valid partial receipts. This builds on the batch executor contract. The existing DLQ behavior remains in place until the next PR migrates recovery to per-executor repair records. Test Plan: `./tool/bazel test //stovepipe/... //service/stovepipe/server:go_default_test --test_output=errors` exercises 28 targets covering batching across pages, multiple executors, partial acceptance, failed writes, version conflicts, history replay, and preservation of retry classification. Lint, tidy, and Gazelle checks verify the repository metadata. Revert Plan: Revert the dependent DLQ change first, then revert this PR together with its executor-contract prerequisite.
Summary: Recover every executor's durable submission or skip without submitting backend work. Pending or missing eligible repair records retain an acceptance-unknown event. Wire the executor registry into recovery and remove the superseded build-level selection and history helpers. This is the final layer of the repair-executor stack, building on normal batch dispatch. Test Plan: `TestFixDLQRetainsAllDispositionsWithoutSubmitting`, `TestFixDLQRetainsUnknownAcceptance`, and `TestFixDLQDiscardsInvalidMessages` cover retained outcomes, unknown acceptance, invalid deliveries, and the absence of executor submissions. The 28-target Stovepipe suite also verifies reference-server wiring. Lint, tidy, and Gazelle checks verify the repository metadata. Revert Plan: Revert this PR together with the dependent dispatch and executor-contract changes before deploying the earlier build-level repair flow.
This was referenced Nov 6, 2026
mnoah1
marked this pull request as ready for review
November 6, 2026 22:32
mnoah1
requested review from
a team,
behinddwalls and
sbalabanov
as code owners
November 6, 2026 22:32
prathshenoy
approved these changes
Nov 10, 2026
mnoah1
force-pushed
the
mnoah1/stovepipe-batch-repairs
branch
from
November 10, 2026 17:15
1148984 to
da4488f
Compare
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.
Why?
With multiple issues and fixer backends, a dead-lettered fix request can contain several accepted or skipped submissions alongside work whose acceptance is unknown. The existing DLQ handler reads one build-level repair association and cannot restore all of those histories.
What?
Extend the fix DLQ handler to walk the build's observations and registered executors, read their
IssueRepairrecords, and restore history for every durable acceptance or skip. Pending records, and eligible issues without a record, retainfix_submission_abandonedwith reasonacceptance_unknown. Recovery never callsSubmitor changes issue recovery state.Pass the executor registry through the DLQ wiring, update recovery tests, and remove the superseded single-fix selection and history helpers. This completes DLQ support for the fixer behavior introduced by #1033.
Test Plan
TestFixDLQRetainsAllDispositionsWithoutSubmitting,TestFixDLQRetainsUnknownAcceptance, andTestFixDLQDiscardsInvalidMessagescover retained outcomes, unknown acceptance, invalid deliveries, and the absence of executor submissions. The 28-target Stovepipe suite also verifies reference-server wiring. Lint, tidy, and Gazelle checks verify the repository metadata.Revert Plan
Revert this PR, then revert #1033 and #1034 before deploying the earlier build-level repair flow.
Issue Links
No issue was provided. Final part of the repair-executor stack; based on #1033.
Stack