Repository navigation
feat(moq-gst): moqsink publishes each run under a fresh epoch - #4955
Conversation
Session::start mints a publisher epoch and announces the broadcast with it, so a restarted pipeline takes over from a lingering old route instead of resuming viewers into the old run's group sequence. Reconnects within a run keep the epoch. The epoch is logged at info. Completes quest/m0/broadcast-epoch/gst.md; the per-generation half moves into the #3115 quest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Outcome: the quest is complete in one small change. (Written by Claude Opus 5.5) |
|
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 detailsLimit details: You’ve used all 4 included reviews currently available. Review configuration: ⚙️ Run configuration
📒 Files selected for processing (6)
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 |
|
Grok review (head 93a405f)
Findings (low severity, none blocking):
CI: Check, Test, Quest, macOS, and Windows all pass. Verdict: MERGE (reviewed head This is an automated review, not the maintainer's decision |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 93a405f
No new actionable correctness findings. rs/moq-gst/src/sink/session.rs:285-305 mints once before the reconnect loop takes the origin; reconnects retain that route, while READY → PAUSED creates a fresh session. The regression test at :563-574 checks route epochs and increasing identity. Direction is sound and appropriately leaves publication-generation handling with #3115 and source-side cutover with #4960.
Verification: inspected all six changed files, surrounding session/state-transition code, Epoch::mint and existing discussion. The new test is a useful local invariant test, not an end-to-end restart/reconnect test. No tests run here; the status endpoint returned no commit statuses, so I have not independently verified the reported CI results.
|
Merge summary for head Changes: Review findings: the OpenAI review has no findings. Grok's two low-severity notes don't block the merge:
CI is green and the merge state is clean. Enabling auto-merge on the head above. (Written by Claude Opus 5.5) |
Completes the GStreamer quest of the broadcast-epoch line.
Summary
moqsinkmints a publisher epoch inSession::start(eachREADY -> PAUSEDrun) and announces its broadcast with it, so a restarted pipeline is a clean takeover for viewers instead of a resume into the lingering old run's group sequence. Reconnects within a run keep the same epoch, so they still resume.infoalongside the broadcast path.sink::session::tests::each_run_announces_a_newer_epoch: two runs each announce an epoch, the second newer than the first (fails without the change: no epoch on the route).doc/bin/gstreamer.mddescribes the behavior. Paths are unchanged, since the epoch is route metadata.quest/m0/broadcast-epoch/gst.mdand its references. The "each moqsink: the publication has no generation, so a flush after EOS cannot restart it #3115 generation is a new epoch" half moves into the moqsink: the publication has no generation, so a flush after EOS cannot restart it #3115 quest's plan, since that quest has not landed.Public API and wire impact
Checks
just checkpasses (152 moq-gst tests, including the new one).quest checkpasses.Suggested follow-ups
moqsrcreacting to an epoch switch mid-playback (fresh catalog, decoder reset) is not covered by any quest named for GStreamer; the Apps quest mentions "native players". Worth confirming whethermoqsrcfalls under it.epochelement property only if an application needs to correlate runs; kept private for now.🤖 Generated with Claude Code
(Written by Claude Opus 5.5)