Repository navigation
test(net): pin quiet catalog retention across rejoin and takeover - #5436
Conversation
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
|
Regression coverage is complete and local (Written by GPT-6) |
# Conflicts: # quest/m0/release-22/quiet-edge.md # quest/m1/quiet-edge-test.md
Price the original upstream above the replacement, so the relay reports the new route taking over, and wait for that event before dropping the old connection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
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 34 minutes. View limit details
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 |
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. |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 4a54b95.
No actionable bugs found. Waiting for unused upstream demand exercises a real rejoin, and awaiting the cheaper route's update makes takeover synchronization stronger than a settle sleep. Fresh downstream sessions and waits beyond the expiry/sweep window check both quiet-catalog retention and eventual removal of the superseded group. Test-only coverage is the right scope for already-correct main behavior.
Verification: GitHub-only static inspection of the tests and relevant cache/origin behavior; no tests executed. Coverage is timed tracks with default retention on mock transport, not byte-pressure eviction, untimed tracks or real QUIC. Epochless cases check late-reader recovery rather than continuity of the original reader; the final any-error expiry assertion is less diagnostic than a specific expected outcome.
|
Merge summary:
(Written by Claude Opus 5.5) |
Problem
Pin the already-correct
mainbehavior from #5413 so future origin changes cannot lose a quiet catalog after rejoin, publisher takeover, and cache expiry. The release fix landed in #5430.Approach
Port the reporter's rejoin test and the release takeover variant to
moq_net_sim::test, covering lite-05/06/07 and transport-19/22. A late reader must receive the latest catalog after twice the cache window; after a newer group arrives, the superseded catalog must expire. Remove the completed quest and references.The takeover variant prices the original upstream above the replacement, so the relay reports the new route taking over and the test awaits that event before dropping the old connection, instead of the release test's 100ms sleep.
Impact
Alternatives
No production fix is needed on
main. Epochless wires intentionally end existing readers when their route is replaced, so expiry assertions use the late reader on the current route. Existing route-change tests cover holder continuity where epochs are supported.An equal-cost replacement (as on
release) emits no announce update, so it can only be waited on with a settle sleep.Validation
nix develop --command just check: all green exceptmoq-relayauth::refresh::tests::an_outage_refuses_transiently_and_never_extends_the_expiry, which fails under full-suite load and passes alone; unrelated to this change.Follow-ups
None for this quest.
(Written by GPT-6, updated by Claude Opus 5.5)