Skip to content

feat(relay)!: delete the removed cluster mesh and linger flags - #4818

Merged
kixelated merged 3 commits into
mainfrom
quest/m1/cluster-shims
Oct 6, 2026
Merged

kixelated merged 3 commits into
mainfrom
quest/m1/cluster-shims

Conversation

@kixelated

Copy link
Copy Markdown
Collaborator

Problem

cluster::Config carried hidden mesh and linger fields (plus the private linger_arg behind --cluster-linger) only so deprecated() could refuse --cluster-mesh and --cluster-linger by name. Both refusals have shipped (linger in moq-relay 0.15.0, mesh in 0.17.0 via #4601), so the shims are dead weight under the no-shim rule.

Approach

  • Delete mesh, linger, linger_arg, their settings.rs registry entries, and the deserialize_bool_or_string helper that only mesh used.
  • deprecated() stays, with only its bare-host --cluster-connect refusal; Cluster::new and config.rs still check it.
  • --cluster-mesh, --cluster-linger, and TOML mesh / linger now fail as unknown flags and fields (unknown_flags = "error", deny_unknown_fields).
  • Drop the two entries from tests/released_cli.rs, and the tests that only pinned the refusals.
  • Docs: upgrade guide's Unreleased section gains a bullet; the relay README drops the "errors at startup" sentence. doc/bin/relay/ never mentioned either flag.
  • Deletes quest/m1/cluster-shims.md.

Impact

  • Public API (Rust, breaking): moq_relay::cluster::Config loses the #[doc(hidden)] pub fields mesh: Option<String> and linger: Option<Duration>.
  • CLI / config (breaking): --cluster-mesh, --cluster-linger, and TOML cluster.mesh / cluster.linger are rejected as unknown instead of refused by name. MOQ_CLUSTER_MESH and MOQ_CLUSTER_LINGER are no longer read, so they are silently ignored.
  • Wire: none.

Alternatives

  • Keep the env vars as hidden args that error, so a relay skipping 0.17 still fails loud on MOQ_CLUSTER_MESH. Rejected as a shim; the upgrade guide tells operators to drop them.

Follow-ups

  • The bare-host --cluster-connect refusal is the same kind of shim, shipped since 0.15. It could go in a separate quest once the maintainer decides how long it stays.

🤖 Generated with Claude Code

(Written by Claude Opus 5.5)

kixelated and others added 2 commits October 4, 2026 21:27
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
cluster::Config drops the hidden mesh, linger, and linger_arg fields that only existed to refuse --cluster-mesh and --cluster-linger by name. Both refusals have shipped (linger in 0.15.0, mesh in 0.17.0), so the flags and TOML keys are now unknown like any other. deprecated() keeps the bare-host --cluster-connect refusal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated

Copy link
Copy Markdown
Collaborator Author

Outcome: quest implemented, just check and the full moq-relay / moq-cli nextest suites pass locally. Left as a draft for the maintainer.

Open decisions:

  • MOQ_CLUSTER_MESH / MOQ_CLUSTER_LINGER are now silently ignored rather than refused, since env vars have no unknown-variable check. Recommendation: accept it (the quest's no-shim intent, and the upgrade guide says to drop them).
  • Kept the bare-host --cluster-connect refusal in deprecated(), per the Grok note on quest: delete relay-mesh-refusal-release, its condition cleared #4807. Recommendation: remove it in a follow-up quest when the maintainer picks a cutoff release.

(Written by Claude Opus 5.5)

@kixelated
kixelated marked this pull request as ready for review October 5, 2026 20:36
@coderabbitai

coderabbitai Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You'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 12 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2b45d946-9b9b-41b2-a74f-da00869d62c7
📥 Commits

Reviewing files that changed from the base of the PR and between 7538729 and 3e93690.

📒 Files selected for processing (10)
  • doc/setup/upgrade.md
  • quest/m1/README.md
  • quest/m1/cluster-shims.md
  • rs/moq-cli/src/args.rs
  • rs/moq-relay/README.md
  • rs/moq-relay/src/cache.rs
  • rs/moq-relay/src/cluster.rs
  • rs/moq-relay/src/config.rs
  • rs/moq-relay/src/settings.rs
  • rs/moq-relay/tests/released_cli.rs
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review by review (OpenAI)

Reviewed commit: 2f525f0

No actionable correctness findings in the full 10-file diff and relevant parser/construction context. The direction is consistent with removing already-refused settings: CLI/TOML remain strict, and rs/moq-relay/src/cluster.rs:642-655 correctly retains the independent bare-host cluster-connect refusal. The silently ignored removed environment variables are an explicitly documented compatibility decision (doc/setup/upgrade.md:44-48), already raised in the discussion, not a newly discovered regression.

Verification limits: static review only; I did not run builds or tests. GitHub currently reports merge conflicts, so this is a review of this commit, not confirmation of merge readiness.

@kixelated

Copy link
Copy Markdown
Collaborator Author

Grok review of head 2f525f0e (first review)

Deleting the mesh/linger shims is a clean, correctly scoped removal. deprecated() keeps only the bare-host --cluster-connect refusal, Config still has deny_unknown_fields and unknown_flags = "error", and a search of the org finds no other users of the removed flags or env vars outside the files this PR edits.

Findings

  1. The branch conflicts with main and is 74 commits behind it. CI (Check, Test, macOS, Windows, Quest) passed on a stale base. rs/moq-relay/src/cluster.rs is busy right now (for example, feat(relay): upstream cluster links and tls:// qmux #4816 rewrites cluster link handling in the same file), so rebase it and let CI re-run before merging.

  2. MOQ_CLUSTER_MESH / MOQ_CLUSTER_LINGER are now silently ignored (rs/moq-relay/src/cluster.rs, settings.rs). A relay upgraded straight from 0.16 or earlier, with MOQ_CLUSTER_MESH=true in its unit or container env, will boot with no error and without the gossip peers it used to find, so it comes up isolated. The upgrade note covers it and the PR rejects keeping a shim, which is a fair call. If you want a cheap safety net that isn't a parsed field, a one-line startup warn! when either env var is present would make the failure visible in logs.

  3. The new behavior has no test. The PR deletes removed_mesh_is_refused, toml_mesh_is_refused, cli_does_not_clobber_toml_linger and the moq-cli --cluster-mesh assertion, but adds nothing that pins what it claims: --cluster-mesh / --cluster-linger fail as unknown flags, and TOML cluster.mesh / cluster.linger fail as unknown fields. Flipping two of the deleted tests to assert the unknown-flag/field error is a few lines and guards against a future #[serde(default)] or flatten change quietly reopening them.

Verdict: MERGE once it's rebased onto main and CI is green. Reviewed head 2f525f0e0480ce01ded6216428d87aa881589e23.

This is an automated review, not the maintainer's decision
(Written by Grok)

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adversarial review by Codex (codex-cli 0.160.0), run on the merged head 3e936901957eaa42f8a89faa49e08241beff86e5 (branch diff against origin/main).

Verdict: approve. No material correctness findings. Removed CLI flags and TOML fields stay rejected through unknown_flags = "error" and deny_unknown_fields; ignoring MOQ_CLUSTER_MESH / MOQ_CLUSTER_LINGER is documented in the upgrade guide; runtime clustering behavior is unchanged. Codex reviewed statically.

Since the previous review: a merge of origin/main, whose only conflict was doc/setup/upgrade.md (kept both sides' Unreleased bullets). just check passes locally on this head.

(Written by Claude Opus 5.5)

@kixelated

Copy link
Copy Markdown
Collaborator Author

Merge summary:

  • Merged origin/main; the only conflict was the Unreleased list in doc/setup/upgrade.md, resolved by keeping both sides.
  • just check passes locally on 3e936901957eaa42f8a89faa49e08241beff86e5.
  • Reviews: the OpenAI review on 2f525f0 and a Codex adversarial review on the merged head both found nothing actionable. CodeRabbit was rate limited.
  • No --cluster-mesh / --cluster-linger mention is left in user-facing docs that presents them as live flags. The upgrade guide keeps its migration notes (the 0.14 to 0.15 flag table, the gossip-removal note, and the new Unreleased bullet), and the CHANGELOGs keep their history.
  • Decisions carried as recommended: MOQ_CLUSTER_MESH / MOQ_CLUSTER_LINGER are now silently ignored (documented in the upgrade guide). The bare-host --cluster-connect refusal stays, pending a follow-up quest once a cutoff release is picked.

Enabling auto-merge pinned to the head SHA.

(Written by Claude Opus 5.5)

@kixelated
kixelated enabled auto-merge (squash) October 6, 2026 07:37
@kixelated
kixelated merged commit 2a58cb8 into main Oct 6, 2026
6 of 7 checks passed
@kixelated
kixelated deleted the quest/m1/cluster-shims branch October 6, 2026 08:34
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