Repository navigation
acpmux: bound peer starts and reads without blocking last on subscriptions - #26998
Conversation
|
Bead |
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
web and size checks: green Shipped in:
|
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
6e6cddd to
30b6c5f
Compare
|
Orphaned: no activity for 12 h, and no lane holds a lease on it. The orphan sweep could not merge |
|
Owned by an agent session · took over from an earlier session · session |
A newer verdict blocks 179c9bf (no independent SHIP at the head).
|
Review (codex gpt-6.1-sol high, sweep, via the review router; full diff from merge base 35e4794 to this head): BLOCK at 179c9bf [P2] [blocking] files/cmux-tui/crates/acpmux/src/server/remote_guard/hint.rs:69 - Dropping |
The 30-second bound on a forwarded session/new dropped slow valid starts (a pooled start may take a claim wait plus three 90-second stages), so the caller saw a failure while the session finished on the peer, and a retry could leave a duplicate orphan. The deadline is now the peer's whole session/new budget plus 15 seconds (LinkTimings::start, 300 s, ACPMUX_PEER_START_SECS to override): the peer answers a slow start or fails it itself first, and only a hung handler reaches the timeout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-159afad10a5ab45ea16c
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Review (codex gpt-6-astra high, next-review): BLOCK at 5644313 BLOCK at 5644313
|
|
Review (claude opus-5-5 medium, cross-family): SHIP at 4ba421e Visual verdict: unchanged by this diff Read the full diff and the Follow-ups: [follow-up] A large history page ( |
Status: awaiting final-head regression proof/review (#27048 has landed).
Connected peers could hold interactive requests for ten minutes. This change bounds forwarded history reads at 30 seconds and forwarded session creation just past the peer's own whole start budget (300 seconds,
ACPMUX_PEER_START_SECS), so a slow valid start answers instead of being dropped and orphaned, givesacpmux lastone 30-second budget across session resolution and pagination, and collects briefs concurrently under one shared 10-second deadline.lastpreviously resolved through_acpmux/info, then used_acpmux/attachbefore paging_acpmux/events. It now reads a newest-events snapshot without opening a live subscription on the shared peer link. A running session can return its latest partial reply immediately. These read methods do not intentionally wait for the turn to finish; the observed deployed stall was not traced to a specific remote RPC. The confirmed problems are the unnecessary attachment and the generic 600-second read deadline.Leo: "I do a hell of a lot of routing to remote machines, right? ... Are we covering the edge cases for when, you know, something isn't going right, if there's recovery, whatever, stuff like that."
Additional request (private host identifiers omitted): "acpmux last / hangs past 30 s ... while those peers show "connected", and the same acpmux last run on the host answers in under a second (a running session, turn in progress). Find where the forwarded read waits ... and give it the same bounded deadline and readable error; a running session's last reply should come back at once. Include a test."
The peer-origin briefs filter from #26912 and dead-peer fast refusal remain intact. Prompts and explicit waits retain their existing turn-length behavior. Each deadline ends when its request answers, fails or times out; cancellation removes pending peer replies through the existing guard. There is no retry loop or new background worker.
Live
_acpmux/attachretains its existing subscription lifecycle and timeout; the new server read budget applies to_acpmux/info,_acpmux/events, and_acpmux/history.Risk: only a peer whose handler hangs past its own start budget reaches the creation timeout; such a creation may still complete there, so its error asks the caller to inspect that host before retrying. The history reads are safe to retry. Existing policy and folder-recovery hints remain intact.
Validation:
6e6cddda9f5ba66763dc5f9e689c2a7a880ddb6f, stacked on reviewed perf(acpmux): stream session summaries into list snapshots #27048 head9d674ff806d5165422c7e571b3c0bc0f8496ba87; final review and green 40776972768 pending.ec9b0e1.pr-overlapwas attempted; its GraphQL call is unsupported by the broker. Searches found no duplicate handler fix. The list-streaming implementation is untouched.Agent session: agent session