Skip to content

fix(test): the rung test holds the bottleneck past BBR3's max-bw filter - #8590

Merged
kixelated merged 2 commits into
mainfrom
fix/nightly-relay-host-time-rung-window
Nov 12, 2026
Merged

kixelated merged 2 commits into
mainfrom
fix/nightly-relay-host-time-rung-window

Conversation

@kixelated

@kixelated kixelated commented Nov 12, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Nightly Tests (rs rung-disable) (today) fails: the grant never fell below the lowest rung while the top stayed disabled. The 100 kbit/s phase lasts 12s (20s to 32s), but BBR3's max-bw filter keeps the 500 kbit/s samples longer than that. On the previous four nightlies the grant fell below the lowest rung at 28.0s, 30.3s, 31.0s, and 31.4s, and today it was still at 262 kbit/s when the path reopened at 32s. Locally it ranged from 21.4s to 30.9s.

The other failing Nightly jobs are covered by moq-dev/moq#8510 (uring, features, drill-sensitivity, including the upstream_links host-clock abort) and moq-dev/moq#8509 (armv7).

Approach

The rung test keeps the 100 kbit/s bottleneck for 20s (RECOVER 32s to 40s). The filter holds two ProbeBW cycles, and the cycle the drop lands in must retire as well. That is up to three cycles, each a probe wait of up to 3s plus probe rounds at the RTT of the 500ms queue, so about 15s. The comment at the constant records this.

Impact

  • No public API or wire change. Test only.
  • rs rung-disable (nightly only) now takes 43-71s instead of about 40s. Recovery from 100 kbit/s ranged from 1.5s to 30s after the reopen, which is still well inside the 110s END.

Validation

  • just rs rung-disable six times locally with this change: all passed. The grant fell below the lowest rung at 23.0s to 31.5s, and the top rung resumed at 41.5s to 70.1s. Before the change, six runs passed, but one dropped at 30.9s, 1.1s before the window closed.
  • just check passes.

Caused by

  • moq-dev/moq#7671 sized the below-lowest phase at 12s, which leaves too little margin for the BBR3 filter on a hosted runner.

Models

  • Size: S
  • Implementer: Claude Code, claude-opus-5-5, unknown effort

Review

Rewritten by quest review after each round.

  • Head: a8b4147

  • Base: origin/main at 3628a31

  • Reviewer: Codex, gpt-6.1-sol, medium effort

  • Session: 01a1d17a-721c-76f0-b989-e762f147dd9b, round 1

  • Score: 9/10, The longer bottleneck phase lets BBR3's bandwidth filter expire without weakening assertions or extending the deadline; source review found no actionable defects, but tests were not run as instructed.

  • Findings: none

… BBR3's filter

upstream_links runs relays over real TCP and a 50ms publish loop; without the
quic feature no UDP socket exempts the process, so KIO_DENY_HOST_TIMERS aborts
tiered_regions in the --no-default-features run.

The rung test's 100 kbit/s phase was 12s, shorter than BBR3's two-cycle max-bw
filter takes to forget the 500 kbit/s samples at a 500ms queue; nightly saw
the grant fall 8-12s in and missed it once. Hold it for 20s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review November 12, 2026 20:35
@coderabbitai

coderabbitai Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You'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 13 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: faf9221d-a12a-44b9-b176-0e82c99d3f5c
Commits

Reviewing files that changed from the base of the PR and between 18fc33e and a8b4147.

Files selected for processing: 1

  • rs/moq-ffi/src/test/rung.rs
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Share

#8510 now carries the same fix in run_cluster_test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated kixelated changed the title fix(test): nightly relay links opt into host time, rung test outlasts BBR3's filter fix(test): the rung test holds the bottleneck past BBR3's max-bw filter Nov 12, 2026

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes: the single rs/moq-ffi/src/test/rung.rs hunk, plus how RECOVER, BELOW_LOWEST and END are used elsewhere in the test.

  • RECOVER 32s → 40s: the sub-lowest-rung phase grows from 12s to 20s so it outlasts BBR3's max-bw filter. A comment records the reasoning. The step schedule (rung.rs:34), the elapsed >= RECOVER assertions (:156, :185) and the below-lowest window check (:180) all derive from the constant. The reported worst-case resume of about 70s still fits inside the 110s END.

Pullfrog  | View workflow run | Using claude-sonnet-5-5 | 𝕏

@kixelated
kixelated added this pull request to the merge queue Nov 12, 2026
Merged via the queue into main with commit 48c6030 Nov 12, 2026
8 checks passed
@kixelated
kixelated deleted the fix/nightly-relay-host-time-rung-window branch November 12, 2026 21:55
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