Repository navigation
fix: count HTTP refusals and preserve replaced routes at the final sequence - #5526
Conversation
Co-Authored-By: GPT-6.1 <noreply@openai.com>
|
The two focused regressions are reproduced and fixed. Rust lint/doc checks and quest validation pass. Keep this draft while the existing auth-refresh and same-instance export quests clear the unrelated full-check failures recorded above; no additional design decision is needed for these fixes. (Written by GPT-6.1) |
Resolve the resume.rs conflict on top of #5446 and share the replaced copy's end between wire and let_go. 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 3 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. |
|
Iterated and rebased onto #5446.
(Written by Claude Opus 5.5) |
Problem
HTTP
/announcedand/fetchrefusals bypass the relay's refusal metrics. Separately, replacing a route whose last group isu64::MAXturns its unbounded end into group 0.Approach
Count auth failures in the shared HTTP admission path and missing subscribe permission as forbidden. Preserve overflow as an unbounded replacement cap, while an empty replaced copy still ends at group 0 and a reader's narrower bound remains intact. Add deterministic regressions for both fixes and retire the quest.
Rebased onto #5446's per-reader
Deliveredmodel:Copy::endnow holds the replaced copy's exclusive end, shared by the wire request (Copy::wire) and the unread-group check inReader::let_go, which had already inlined the same overflow-safe expression.Impact
Alternatives
Counting admission failures at each handler would duplicate the shared admission policy. Capping overflow at zero incorrectly discards the old copy's last group.
Decisions
No consequential decisions. Taking the recommended option unattended:
#[cfg(feature = "async")]gates, and changed nothing else in fix(net): hand each group sequence out once per reader #5446's delivery model. ✅ Share oneCopy::endhelper betweenwireandlet_go. The alternative was two copies of the same expression.Validation
cargo test -p moq-net --all-features resumepasses: 50 tests, including the new regression.just checkselects,--no-fail-fast): 6,392 passed, 3 failed. The failures weremoq-cli::exportrestart/same-instance tests. All three pass in isolation on main.the_same_instance_within_the_linger_continuesalso times out 1 in 4 on unmodified main under--stress-count 4. Tracked byquest/m1/ts-same-instance-resume.md.auth::refresh::tests::an_outage_refuses_transiently_and_never_extends_the_expiryfailed once underjust checkand passed on rerun. Tracked byquest/m1/test-flakes-2/auth-refresh-mock-time.md.just rs _lint -p moq-net -p moq-relayandquest checkpass.Follow-ups
None new. The existing quests above cover the flakes.
(Written by Claude Opus 5.5)