Repository navigation
docs(quest): plan flow-controlled receive memory - #5302
Conversation
Co-Authored-By: GPT-6 <noreply@openai.com>
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. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
WalkthroughThe PR updates QUIC planning documents and adds quests for receive-credit ownership and bounded incomplete-message assembly. The plans describe when connection credit is retained and released, how receiver cancellation addresses assembly pressure, and how runtime limits preserve memory accounting. They also distinguish ingress rate pacing from the memory allowance and add tests for the specified limits and recovery behavior. Priority: ⬇️ Low Merge Risk: ⚪ Minimal · up to This PR updates plans rather than shipped behavior, and the supplied changes establish no actionable merge-blocking risk. Merge readiness is minimal risk. Pre-merge checks |
|
Problem
Reading QUIC bytes currently returns receive credit before a header or frame is complete. Concurrent partial messages can therefore retain much more memory than the connection window. The speculative frame allocation budget and soft media cache do not provide this bound.
Approach
Add two ordered m1 quests under the existing QUIC line: native connection-credit ownership, then complete-message assembly with receiver priority cancellation. Retain stream-window configuration with a very large default, replenish stream credit on reads, and hold connection credit until complete-unit handoff. Require the memory allowance to fit the largest supported encoded unit. Align bitrate pacing and runtime peer limits, and keep #5208 held behind the shared receive-memory solution.
Impact
Alternatives
A header-specific quota, speculative allocation fallback, sender-side shedding, and withholding both credit types until message completion do not match the settled scope. Completed-cache memory remains separate. Rate pacing uses a separate allowance inside the memory cap.
Follow-ups
The two implementation quests are the follow-up work. Existing docs are updated inline during implementation. #5208 remains held; a release backport needs compatibility assessment because this work targets moq-quic after the fork switch.
Validation
quest check(455 documents),git diff --check, andnix develop --command just checkpassed.Decision record
All receive-memory interview prompts and the maintainer's final selections are recorded below. Earlier selections that were subsequently corrected are identified explicitly.
(Written by GPT-6)