Skip to content

feat(stovepipe): publish build repair requests to the fix queue - #936

Merged
mnoah1 merged 1 commit into
mnoah1/stovepipe-fix-controllerfrom
mnoah1/stovepipe-fix-queue
Oct 26, 2026
Merged

mnoah1 merged 1 commit into
mnoah1/stovepipe-fix-controllerfrom
mnoah1/stovepipe-fix-queue

Conversation

@mnoah1

@mnoah1 mnoah1 commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

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. feat(stovepipe): associate build issues with repairs using entity CAS #934
  2. feat(stovepipe): select and submit one repair per build #935
  3. @ feat(stovepipe): publish build repair requests to the fix queue #936

Define FixRequest and its topic, publish a queue-scoped build identity, and connect queue delivery validation to the fix controller.

Test Plan: Run the fix, fixrequest, messagequeue, storage, and buildanalysis unit targets. Run make lint check-tidy check-gazelle check-mocks.

Revert Plan: Revert this commit.
@mnoah1
mnoah1 force-pushed the mnoah1/stovepipe-fix-queue branch from f5cf295 to 0c80c59 Compare October 26, 2026 15:21
@mnoah1
mnoah1 enabled stacked auto-merge October 26, 2026 15:21
@mnoah1
mnoah1 added this pull request to the merge queue Oct 26, 2026
Merged via the queue into main with commit 1852113 Oct 26, 2026
19 checks passed
@mnoah1
mnoah1 deleted the mnoah1/stovepipe-fix-queue branch October 26, 2026 15:47
DivyanshGarg380 pushed a commit to DivyanshGarg380/submitqueue that referenced this pull request Oct 27, 2026
…uber#934)

## 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 entity
`Update` CAS operation. Reuse the existing per-build lookup. MySQL
stores `fix_id VARCHAR(255) NOT NULL DEFAULT ''`; add this column and
`version INT NOT NULL DEFAULT 0` before deploying the updated readers
and writers.

## Test Plan
Run the storage unit target and the `TestMySQLStorage/BuildIssue`
integration tests. The integration tests cover omitted-column defaults,
repair persistence after recovery, and concurrent CAS updates. Run `make
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
1. @ uber#934
1. uber#935
1. uber#936
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants