Repository navigation
fix(ci): repair red nightly gates and the ACME port race - #6056
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The rate-limit and unreachable-directory tests bound a port, dropped it, and assumed nothing listened there afterwards. Under a parallel test run another process can bind the released port; a listener there that never answers stalls the challenge dial until the 30 s budget, which is how queue run 39216656008 failed. Rebinding the port reproduced that 30 s stall locally. A bound socket that never listens refuses every dial and keeps the port reserved, which each test now asserts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nightly's send-depth gate and every fuzz target have failed since #5773 gave a stats session and its wire counters references to each other: each IETF subscriber future repeated that recursive auto-trait proof and overflowed the default recursion limit. Bisected to that commit with nightly 2026-10-19. Wrap each shared session context in SendCell, as #5682 did for the origin graph, so the proof runs once at construction. No allocation or API change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The nightly generator comparison has failed since #5911 moved the workspace and the Nix wasm-bindgen CLI to 0.2.129: bench/ffi-gen keeps its own lock, still at 0.2.127, whose schema the CLI refuses. Update it and the wasm crates that pin it exactly to the workspace's versions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t audit Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`host_tracks_moq_clock` allowed a fixed 1 ms between the calibrated clock and moq-clock, but the calibration's error is half the gap between its two reads, which a preemption stretches. A loaded `just check` failed it with the host clock 1.5 ms ahead. Measure the calibration's window and use that. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 11 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Merging under the recommended course the maintainer authorized while away. Summary: fixes the ACME port race (tests hold a bound, non-listening socket), the send-depth and fuzz recursion-limit break from #5773 ( Review: Codex reviewed head c9b84a2 with no findings and a thumbs-up. CodeRabbit was rate-limited (optional). Decisions: the five provisional decisions in the PR body stand as recorded (complete this run; new quests in m1; CI: Check and Test run only in the merge queue. The known (Written by Claude Opus 5.5) |
# Conflicts: # quest/m0/README.md # quest/m1/README.md
|
The queue dropped this PR because #6050, ahead of it, edited the same (Written by Claude Opus 5.5) |
Problem
The checkpoint in #5976 left one queue failure unexplained (ACME's rate-limit test hit its 30 s watchdog) and only looked at the Nightly's stalled benchmarks. The latest Nightly had 28 failed jobs from eight independent causes, some red for days, so new regressions went unnoticed.
Approach
One commit per fix:
rs/moq-relay/src/acme/tests.rs): two tests bound a port, dropped it, and assumed it stayed dead. Another test process can bind the released port; a listener there that never answers stalls the challenge dial for the whole 30 s budget. Rebinding the port locally reproduced the exact 30 s stall. The tests now hold a bound, non-listening socket, which refuses every dial and keeps the port reserved. The helper asserts no other listener can take it.rs/moq-net/src/stats.rs): broken since #5773 on 2026-10-17 (bisected with nightly 2026-10-19). That PR made a stats session and its wire counters reference each other, so every IETF subscriber future repeated a recursive auto-trait proof past the default recursion limit. Each shared session context is now aSendCell, as #5682 did for the origin graph: the proof runs once at construction. No allocation or API change.bench/ffi-gen/Cargo.lock): broken since #5911 moved the Nix wasm-bindgen CLI to 0.2.129. ffi-gen keeps its own lock, which was still at 0.2.127. It now matches the workspace's wasm crates.rs/moq-uring/src/clock.rs):host_tracks_moq_clock, new in #5926, allowed a fixed 1 ms calibration error. A loadedjust checkhere failed it with the clock 1.5 ms ahead, because a preemption between the two calibration reads stretches the error. The test now measures the calibration's window and uses that as its slack.audit-test-costmoves to the end of m1'sRequiredwith a rewritten Plan. Three new quests cover what is not fixed here (below).The other Nightly causes were already fixed on main or have owners: the CI selection count (#5976), the stats bench import, Windows moq-video (#5966), release-build linking (
release-link), and Rust advisories (audit-deps). The scheduled Interop failure (stale wire-compat pin) was re-pinned on main.Impact
stats::Session's private field changes type only.Validation
sh/rs/send-depth.sh's check (-D recursion_depth_exceeding_limiton nightly 2026-10-19) fails on main and passes here, including after merging current main. moq-net stats unit tests pass on stable.wasm-bindgensucceed.just check: Rust tests pass (7,657 in one run). Two of three later loaded runs failed only on the pre-existingredundant_importers_switch_through_bufferbloat_on_lite_07flake (planned below); the modules after it (toml, nix, justfile, gh, py with 102 passed) were rerun separately and pass.quest check: 429 documents ok.Decisions
The maintainer was away and authorized the recommended course, so each of these was chosen provisionally under it. Any can be revisited before merge.
SendCellrather than boxing for the stats graph. It matches #5682 and costs no allocation.Follow-ups
redundant_importers_switch_through_bufferbloat_on_lite_07failed 3 of 10 isolated local runs on main and 2 of 3 loadedjust checkruns here. When the importer is killed, the jitter clock reads the stalled route as -6e6 ppm drift and fails the export instead of switching to the survivor. Likely a product bug. Recommend starting this first.close_codeandfixed_targettime out on macOS only. 120 stressed Linux runs passed.Cargo.lock. bench/ffi-gen's separate lock can still drift, so consider covering it there.(Written by Claude Opus 5.5)
🤖 Generated with Claude Code