Batch-scoped DLQ reconciler fails requests that another live batch owns
Maintainers usually reply within 2 days
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 55/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- go
- Domain
- distributed-systems
Research direction
Read dlq/request.go for the existing owningBatch guard, then trace failBatch and its batch.Contains fan-out. Add coverage for a request owned by another non-terminal batch and for the reconciled batch's own members; done means only requests not owned by another live batch are terminated.
Written by the indexing model from the issue text.
Description
Problem
The batch-scoped DLQ reconciler fails requests that another live batch owns. That batch may go on to merge the change, which leaves the request reported error for a change that lands.
How it is reached
A lost ack on the batch topic leaves two batch attempts for one request. If the redundant attempt's dependency-analysis message exhausts its retries (for example, a storage error while resolving dependencies), it dead-letters while still in creating. failBatch then moves it to failed and fans out over batch.Contains, terminating a request that reads batched and belongs to the first, healthy batch. TerminateRequest declines only when the request is already terminal, and batched is not terminal.
The guard to mirror
owningBatch in dlq/request.go already answers "which batch owns this request" for the request-scoped reconciler. The batch-scoped fan-out needs the inverse: skip a request when some other non-terminal batch owns it. The guard must exclude the batch being reconciled, or the batch counts as its own members' owner and the fan-out never happens.
Found in review of #590. As of 6c050082 the fan-out in failBatch has no ownership guard.
- Dominant language
- Go
- Stars
- 247
- Forks
- 16
- Avg merge
- 2d 1h
- Merged PRs (30d)
- 125
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from uber/submitqueue
-
[Bug] Land returns codes.Unknown instead of InvalidArgument for an unrecognized strategyPossibly taken @DivyanshGarg380 claimed this 14 days ago. Openbug
Difficulty 1/5 Under an hour Newbie friendliness 22/100
uber/submitqueue#996 ·
Maintainers usually reply within 2 days
-
Cancel misses a batch mid-promotion, letting a cancelled request reach speculationMay be free again @burgulvedant claimed this 14 days ago, and no pull request is open. Openbug
Difficulty 4/5 3-5 days Newbie friendliness 45/100
uber/submitqueue#825 · 1 comment ·
Maintainers usually reply within 2 days
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 52/100
uber/submitqueue#824 · 2 comments ·
Maintainers usually reply within 2 days
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 55/100
uber/submitqueue#820 ·
Maintainers usually reply within 2 days
-
bug
Difficulty 5/5 Over a week Newbie friendliness 35/100
uber/submitqueue#819 · 1 comment ·
Maintainers usually reply within 2 days
All issues in uber/submitqueue
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
kubescape/node-agent#1099 ·
Maintainers usually reply within 1 day
-
import-export
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
genealogix/glx#1498 ·
Maintainers usually reply within 2 days
-
Docs: 2 broken linksOpenBug pulumi/pulumi-terraform-bridge R2 S2
Difficulty 1/5 Under an hour Newbie friendliness 72/100
pulumi/pulumi-terraform-bridge#3713 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
ossf/pvtr-github-repo-scanner#539 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
goreleaser/goreleaser#7316 ·
Maintainers usually reply within 1 day