Repository navigation
test(moq-cli): the TS passthrough jump test holds under load without pacing - #5175
Conversation
|
Outcome: the race is fixed at its cause and the PR stays a draft. The 15 ms wall-clock pacing is still there because removing it exposes a relay bug (see the description). Open decision for the maintainer: what happens to the pacing.
(Written by Claude Opus 5.5) |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…copy On moq-transport-14 the recording joins the publisher's current group when its SUBSCRIBE arrives through the relay. Under load that landed after the second copy's first group (4), so the joining FETCH skipped group 2, the first copy's tail, and "both copies crossed" failed. Take the first group before decoding the second copy, so the read always starts behind it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ups finish Once a lite subscription reached the track's end, the publisher dropped its track subscription and only then drained the group streams still in flight. On a relay that was the copy's last demand, so the relay cancelled its upstream subscription as idle while those groups' tails were still coming, and a reader behind the relay hung on the stranded group. The subscription now stays until the drain finishes. The TS passthrough relay test decodes its second copy all at once again, which is what hit this. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
b11a8a3 to
867762c
Compare
|
Iterated per the maintainer's choice of option 2: the relay bug is fixed in this PR and the 15 ms pacing is gone. Root cause: a lite publisher dropped its track subscription as soon as it reached the end, before draining its in-flight group streams. On a relay that cancelled the upstream subscription with an older group's tail still coming. The new Left to PR remains a draft. CI's Check and Quest jobs are red only from main's dangling quest links, which #5177 fixes. (Written by Claude Opus 5.5) |
|
Heads-up on overlap: #4225 fixes the same relay publisher drain cause, but keeps the track subscriber inside (Written by Claude Opus 5.5) |
# Conflicts: # quest/m1/test-flakes-2/README.md # quest/m1/test-flakes-2/ts-passthrough-jump.md # rs/moq-net/src/lite/publisher.rs
|
@codex review (Written by Claude Opus 5.5) |
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. |
|
Codex Review: Didn't find any major issues. Keep it up! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
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 29 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 |
Quest:
quest/m1/test-flakes-2/ts-passthrough-jump.md(deleted here, done).Fixes
moq-cli'sts_passthrough_crosses_a_relay_through_a_flagged_jump, which failed under load onmain. The 15 ms wall-clock pacing is gone: the second copy now decodes all at once, and a run takes about 0.6 s instead of about 4 s.Root cause
Two causes. The relay one landed on
mainfirst, in #4225; this PR now carries only the test-side fix.track::Subscriberonce its subscription reached the track's end, while its group streams were still draining. On a relay that cancelled the upstream subscription and stranded an older group's tail. fix(net): keep a lite subscription's demand until its groups drain #4225 keeps the subscriber inDrainuntil the groups finish. Its regressionfinite_relay::relay_keeps_groups_in_flight_past_the_endruns on simulated time and fails without that fix (moq-lite-05: "the track never ended"). This PR first fixed the same bug by removingDrain; after merging main it keeps fix(net): keep a lite subscription's demand until its groups drain #4225's version and drops its ownrelay_end_in_flighttest, which covered the same scenario.Decisions
Drainfix as merged and trim this PR to the test fix.Drainstate, anendedflag onTrackRun). Smaller, but it rewrites code that was just reviewed and landed.Requiredon the moq-time crate, added onmainafter this PR was opened (sub-agent pick): ✅ delete the quest anyway. With the pacing gone, the test has no wall-clock dependency left beyond its failure deadlines, so it no longer needs a controlled clock to hold under load.Test
just check: passes.just test interop --all, run twice: every cell passes except the threetail rust -> *lanes, which fail the same way onmain. Since feat(net)!: an undeclared Rust timescale means untimed #5083,create_track(name, None)is untimed, buttest/interop/clients/rust/tail.rsstill writesTimestamp::ZERO("frame timestamp doesn't match track timescale"). That is a follow-up, outside this PR. On the first run,rust -> go,rust -> c, and one relay idle-out also failed; none repeated on the second run.main's paced version fails 24/24 under the same load, every time on "moq-transport-14: both copies crossed".Public API and wire
Public API: none. Wire: none. Test and quest changes only.
(Written by Claude Opus 5.5)
🤖 Generated with Claude Code