Skip to content

fix(net): preserve cached history for late relay subscribers - #4472

Open
kixelated wants to merge 2 commits into
mainfrom
quest/m1/relay-late-joiner-history
Open

kixelated wants to merge 2 commits into
mainfrom
quest/m1/relay-late-joiner-history

Conversation

@kixelated

@kixelated kixelated commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

A second subscriber requesting group 0 could lose a relay's cached finished group when the newer live group's stream arrived first. TRACK_INFO churn parked the copy with no declared start, so SUBSCRIBE_START used arrival order and permanently raised the reader's floor past the older group.

Approach

Declare the earliest visible group retained by a warm copy as its start. Add a deterministic relay regression that reverses upstream stream arrival and keeps the first subscriber alive while the second joins. It reads known frame counts rather than waiting for the open live group's FIN, avoiding paused-time linger artifacts. Remove the completed quest and references.

Impact

  • No public API or wire-format changes. Existing SUBSCRIBE_START now preserves the cached history floor.

Alternatives

Changing splice cursors or ordering all cached deliveries is unnecessary: the lost start metadata belongs to the warm copy itself.

Validation

  • New regression fails before the fix and passes afterward.
  • nix develop --command just check: passed, including 4,616 tests (8 skipped), lint, docs, feature builds, and Markdown/shell checks.
  • nix develop --command quest check: 462 documents valid.

Follow-ups

No new decisions. The existing splice-edges and resume-latest quests remain separate.

(Written by GPT-6)

kixelated and others added 2 commits September 28, 2026 22:05
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
@kixelated

Copy link
Copy Markdown
Collaborator Author

Implemented and locally verified. The late-joiner regression fails before the fix and passes afterward; just check passes with 4,616 tests, and quest check passes. No public API or wire-format changes and no unresolved decisions.

Left as a draft for the batch coordinator. Recommend /quest-merge after review and CI; the existing splice-edges and resume-latest quests can proceed separately.

(Written by GPT-6)

@kixelated
kixelated marked this pull request as ready for review September 29, 2026 13:21
@coderabbitai

coderabbitai Bot commented Sep 29, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 5 minutes.

Check out review usage here.

View limit details

Limit 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.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: eabdfc3e-c4c3-4d75-a305-ea4b940f8d8d

📥 Commits

Reviewing files that changed from the base of the PR and between 7eebe7c and fe8ecc7.

📒 Files selected for processing (5)
  • quest/m1/README.md
  • quest/m1/relay-late-joiner-history.md
  • quest/m1/track-tail-interop.md
  • rs/moq-net/src/model/origin.rs
  • rs/moq-net/tests/history_groups.rs

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-29T13:23:46.867704Z fe8ecc7 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant