Skip to content

docs(platform): design the runnerhub per-router bounded send queue (RIG-1611) - #577

Open
rigel-mintaka wants to merge 1 commit into
mainfrom
compass-comms/rig-1611-runnerhub-send-queue
Open

docs(platform): design the runnerhub per-router bounded send queue (RIG-1611)#577
rigel-mintaka wants to merge 1 commit into
mainfrom
compass-comms/rig-1611-runnerhub-send-queue

Conversation

@rigel-mintaka

Copy link
Copy Markdown
Contributor

Close the delivery consumer's head-of-line blocking: the Server's single
delivery-consumer goroutine funnels every deliver/steer/sweep/settle inline
through the per-Runner commandRouter's sendMu + flow-control-blocking
BidiStream.Send, so one wedged Runner Sessions stream stalls delivery to
every other session (including sessions on healthy Runners), settle/start
draining, and bus-lag observation.

The fix lives at the router, not in delivery: a bounded per-router outbound
queue drained by one sender goroutine, with send1/push/dispatch becoming
non-blocking enqueues. Overflow is per traffic class — deliver = synchronous
refusal reusing the existing cursor/D2-sweep backstop, signal = best-effort
drop, command = fail-fast (preserving OQ6 idempotent retry). The delivery
consumer is untouched; no wire change; per-session ascending-seq order is
preserved by the per-router FIFO.

Server-side counterpart to the merged runner-side concurrent-dispatch work
(SEA-1575); lands independently. Design record only — impl is filed as
follow-up slices on merge-freeze.

Ledger-impact: none

Co-authored-by: Matt Wilkinson matt@rigel.build

@linear-code

linear-code Bot commented Aug 24, 2026

Copy link
Copy Markdown

RIG-1611

@rigel-mintaka
rigel-mintaka marked this pull request as ready for review August 24, 2026 03:24
@github-actions

github-actions Bot commented Aug 24, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://compass-comms-rig-1611-runne.compass-eng-docs.pages.dev

Deployed from compass-comms/rig-1611-runnerhub-send-queue at 2ab279f.

Changed pages:

…IG-1611)

Close the delivery consumer's head-of-line blocking: the Server's single
delivery-consumer goroutine funnels every deliver/steer/sweep/settle inline
through the per-Runner `commandRouter`'s `sendMu` + flow-control-blocking
`BidiStream.Send`, so one wedged Runner Sessions stream stalls delivery to
every other session (including sessions on healthy Runners), settle/start
draining, and bus-lag observation.

The fix lives at the router, not in delivery: a bounded per-router outbound
queue drained by one sender goroutine, with `send1`/`push`/`dispatch` becoming
non-blocking enqueues. Overflow is per traffic class — deliver = synchronous
refusal reusing the existing cursor/D2-sweep backstop, signal = best-effort
drop, command = fail-fast (preserving OQ6 idempotent retry). The delivery
consumer is untouched; no wire change; per-session ascending-seq order is
preserved by the per-router FIFO.

Server-side counterpart to the merged runner-side concurrent-dispatch work
(SEA-1575); lands independently. Design record only — impl is filed as
follow-up slices on merge-freeze.

Ledger-impact: none

Co-authored-by: Matt Wilkinson <matt@rigel.build>
@rigel-mintaka
rigel-mintaka force-pushed the compass-comms/rig-1611-runnerhub-send-queue branch from 3f3d7bd to 2ab279f Compare August 24, 2026 03:39
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.

1 participant