Conversation
Co-Authored-By: GPT-6 Astra <codex@openai.com>
Co-Authored-By: GPT-6 Astra <codex@openai.com>
Co-Authored-By: GPT-6 Astra <codex@openai.com>
Co-Authored-By: GPT-6 Astra <codex@openai.com>
Co-Authored-By: GPT-6 Astra <codex@openai.com>
|
Warning Review limit reachedNext included review available in 26 minutes. View limit detailsLimit details: You’ve used all 4 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (33)
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 |
Verdict: request changes |
Automated reviewWhat this doesAdds one-call typed catalog readers ( Strengths
Concerns
Recommendation rationaleDirectly closes a known unbounded-subscription issue with a shared policy, reduces boilerplate for catalog readers, and keeps wire format unchanged. Complexity is mostly the consumer glue plus the cap — worth it. MERGE This is an automated review, not the maintainer's decision |

Problem
Reading a Hang catalog requires manual track wiring in Rust and JS.
moqsrccan open an unbounded number of pending rendition subscriptions from one catalog update. JS also lacks a timeline consumer and typed JSON failure signals.Approach
Add one-call typed catalog readers in Rust and JS. Reject catalog updates above 64 combined video, audio, and text renditions before subscribers reconcile media tracks. Add a JS timeline reader, expose the media retention age, and align JSON schemas and errors with Rust. Preserve the mux consumer's existing error variants.
Impact
Catalog::<E>::subscribe,catalog::Consumer<E>,Catalog::check_renditions,catalog::MAX_RENDITIONS,Error::{TooManyRenditions, EscapingBroadcast}, andcontainer::MAX_AGE.Catalog.watch,Catalog.checkRenditions,Catalog.TooManyRenditions,Catalog.MAX_RENDITIONS, andTimeline.{Consumer, Entry, Event}.DesyncandMissingSnapshoterrors and optionalStream.Config.schema. Unexpected snapshot frame read failures now propagate; only explicit retention gap codes resync.Tests
just checkpassed locally. Focused Rust Hang/mux and JS Hang/JSON regression tests passed. All PR CI jobs passed, including Test and WASM (after rerunning a Nix cache download failure). The local fulljust testcompiled the workspace but nextest could not list the unrelatedmoq-uring::bench/echo_noqbenchmark because worker setup hitCannot allocate memory (os error 12)on the shared host.Alternatives
A cap in
moqsrcalone would leave other catalog readers with the same unbounded policy. The shared catalog validation rejects the complete update before media subscriptions are opened.Follow-ups
None.
Closes #3137.
(written by GPT-6 Astra)