Repository navigation
feat(stovepipe): associate build issues with repairs using entity CAS - #934
Merged
Merged
Conversation
This was referenced Oct 23, 2026
mnoah1
marked this pull request as ready for review
October 23, 2026 21:08
mnoah1
requested review from
a team,
behinddwalls and
sbalabanov
as code owners
October 23, 2026 21:08
prathshenoy
approved these changes
Oct 26, 2026
Add an opaque FixID and optimistic-lock version to build observations. Reuse the per-build lookup from the issue-tracking handoff and persist mutable entity fields through the standard Update contract. Test Plan: Run the storage and buildanalysis unit targets and TestMySQLStorage/BuildIssue integration tests. Run make lint check-tidy check-gazelle check-mocks. Revert Plan: Revert this commit; the added columns can remain unused.
mnoah1
force-pushed
the
mnoah1/stovepipe-fix-submission-state
branch
from
October 26, 2026 15:21
3ca80ca to
7eae092
Compare
mnoah1
enabled stacked auto-merge
October 26, 2026 15:21
DivyanshGarg380
pushed a commit
to DivyanshGarg380/submitqueue
that referenced
this pull request
Oct 27, 2026
## Why? Submit a repair for a newly opened issue while initially limiting recorded repairs to one issue per build. Once we get this working end to end for the first failure on each build, we can build out additional logic that can introduce multiple parallel fixes for different issues in the same build. ## What? Add a fix controller that scans the build's durable observations, skips builds with a recorded fix ID, and submits one currently open issue first seen in that build. Persist the executor's returned ID with entity CAS, including IDs returned alongside an error. Errors without an ID follow normal queue error handling; concurrent submissions or retries can produce duplicate outbound calls. ## Test Plan Run `./tool/bazel test //stovepipe/controller/fix:go_default_test`. Tests cover pagination, existing repair associations, issue recovery, executor errors, and CAS conflicts. Run `make lint check-tidy check-gazelle`. ## Revert Plan Revert the queue-wiring layer first, then this commit. ## Stack 1. uber#934 1. @ uber#935 1. uber#936
DivyanshGarg380
pushed a commit
to DivyanshGarg380/submitqueue
that referenced
this pull request
Oct 27, 2026
…#936) ## Why? Let issue tracking hand a build to the fix controller after persisting its issue records. ## What? Add the `FixRequest` protobuf and topic, a publisher carrying queue and build IDs, and the fix controller's standard `Process` delivery adapter. Issue tracking can call the publisher after its writes succeed. The adapter validates the message and delegates to the controller introduced by the previous PR. ## Test Plan Run `./tool/bazel test //stovepipe/controller/fix:go_default_test //stovepipe/core/fixrequest:go_default_test //stovepipe/core/messagequeue:go_default_test`. Run `make lint check-tidy check-gazelle check-mocks`. ## Revert Plan Revert this commit and remove any host wiring that calls the publisher. ## Issue Links None — this is the message-wiring layer of the planned repair workflow. ## Stack 1. uber#934 1. uber#935 1. @ uber#936
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?
Keep the repair association on the durable build observation so it survives issue recovery.
What?
Add an opaque
BuildIssue.FixID, a version, and the standard entityUpdateCAS operation. Reuse the existing per-build lookup. MySQL storesfix_id VARCHAR(255) NOT NULL DEFAULT ''; add this column andversion INT NOT NULL DEFAULT 0before deploying the updated readers and writers.Test Plan
Run the storage unit target and the
TestMySQLStorage/BuildIssueintegration tests. The integration tests cover omitted-column defaults, repair persistence after recovery, and concurrent CAS updates. Runmake lint check-tidy check-gazelle check-mocks.Revert Plan
Revert this commit after its dependents. The added database columns can remain unused.
Issue Links
None — this is the storage layer of the planned repair workflow.
Stack