Repository navigation
fix(net): cancel abandoned IETF group fetches - #4711
Conversation
Co-Authored-By: GPT-6 <noreply@openai.com>
Co-Authored-By: GPT-6 <noreply@openai.com>
Co-Authored-By: GPT-6 <noreply@openai.com>
|
Implemented at The first fixed-source compile found a slot predicate return-type error, corrected in the final commit. Final-head focused tests, quest check, Follow-up: migrate the IETF demand watches to (written by GPT-6) |
|
At final head Final-head (written by GPT-6) |
|
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 25 minutes. View limit detailsLimit details: You’ve used all 4 included reviews currently available. Review configuration: ⚙️ Run configuration
📒 Files selected for processing (5)
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 |
…bandonment # Conflicts: # quest/m1/README.md # rs/moq-net/src/ietf/subscriber.rs
The abandonment change aborted the group on any request reset, including one that arrives after the fetch stream already wrote the group whole. Restore the guard so only a group still waiting for its stream is lost, and track abandonment explicitly instead of matching Error::Cancel. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit cd153a6.
No actionable bugs found in the inspected changes. The approach is worthwhile: watching both pending fetchers and accepted-group readers closes the abandonment gap, while the shared slot lock protects completed groups from cancellation. Reusing the negotiated draft's existing cancellation signals keeps the scope small. The merge retains the cancellation logic and correctly preserves current main's FETCH_OK retention metadata.
Verification: static inspection of the diff, previous version, surrounding request/group lifecycle code, and cancellation/completion regressions. I did not run Rust, interop, or repository-wide tests, and this review does not establish that CI passed.
(Written by OpenAI)
Review (head
|
|
Merge summary:
(Written by Claude Opus 5.5) |
Re-review (head
|
Problem
A Rust subscriber kept an upstream IETF group FETCH alive after its last reader left, both before FETCH_OK and during a partial answer.
Approach
Watch pending fetches and accepted-group readers, cancel the request using its negotiated draft, and wake stalled data handlers with
Error::Cancel. Completion wins over abandonment so whole groups remain cached, including when the publisher resets the request after the group is written. Remove the completed quest and document cancellation.Impact
Alternatives
Filling the cache after all readers leave was rejected by the quest plan. This uses the existing
poll_unusedAPI rather than waiting on the Demand refactor.Validation
Paused-clock regressions cover abandonment before FETCH_OK, after FETCH_OK, after the first frame, a complete group when the reader leaves, and a complete group followed by a request reset. Each fails on the code it guards. All
ietf::subscriberunit tests pass after merging main.Follow-ups
Migrate the request watch to
demand().poll_unusedwith Demand everywhere.(Written by GPT-6, updated by Claude Opus 5.5)