Repository navigation
feat(submitqueue): Add queuepause Store contract and QueuePause entity - #862
Merged
Merged
Conversation
manjari25
requested review from
a team,
behinddwalls and
sbalabanov
as code owners
October 14, 2026 17:37
behinddwalls
added this pull request to stack #868
October 14, 2026 19:49
behinddwalls
left a comment
Collaborator
There was a problem hiding this comment.
Two independent booleans, with the zero value meaning not paused, looks like the right shape to me: all four combinations mean something, and absence naturally reads as unpaused. Inline: one suggested field (Reason), one naming nit, and a note on how the error doc relates to the freeze fail-open question. I'd deliberately leave out Queue (lookups are by key), Version (nothing in SubmitQueue writes this yet) and expiry (automatic unpausing is a behavior decision).
manjari25
force-pushed
the
manjari/queue-pause-1-contract
branch
from
October 14, 2026 20:17
d1a293e to
0b5ce36
Compare
behinddwalls
approved these changes
Oct 15, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 15, 2026
Tmwakalasya
pushed a commit
to Tmwakalasya/submitqueue
that referenced
this pull request
Oct 15, 2026
## Why? The pause RFC still presented two options as an open comparison, but the stack in uber#862 to uber#865 and the e2e tests implement one of them. An RFC describes what is on main, so it now records the design that shipped and only the alternative it rejected. ## What? - Rewrites the pause RFC around the shipped design: a separate `queuepause` extension, reject (`FailedPrecondition`, carrying the operator's reason) and freeze, both failing closed on a read error. A cancelled context is passed through. - Documents the `noop`, `file` and `fake` stores, `QUEUE_PAUSE_CONFIG_PATH`, and the shared wiring helper. - Adds the requirements an implementation of `queuepause.Store` must meet, such as failing closed on read errors, strict parsing, and failing at construction on bad configuration. - States that the gateway's own request-log consumer is not frozen, so status and history keep materializing during a freeze. - Keeps the queue-config option only as a short rejected alternative, and drops the resolved fail-open question. - Corrects the consumer gate RFC: orchestrator stages share one consumer group, and production pause is a separate mechanism that wraps the gate. Updates the RFC index entry. ## Test Plan Docs only, no runnable change. `make lint` passes. ## Issue
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?
Operators need to pause a queue at runtime without redeploying (see the pause and unpause RFC). The pause state needs its own source, separate from queue config, so each deployment can back it with whatever it uses for runtime config.
What?
entity.QueuePause: two independent switches,RejectLandsandFreezeProcessing. The zero value means not paused.queuepause.Store: a singleGet(ctx, queue)contract. A queue with no entry returns the zero state, and an error means the backend could not be read, never that the queue is unpaused.Test Plan
bazel build //submitqueue/extension/queuepause/... //submitqueue/entity/...make lintmake check-gazellemake check-tidyCI
Issue