1.7 KiB
ECP-0073: Archive Relay Affinity Override
Status: Implemented
Context
wt-archive workers discover streams from /api/public-streams and subscribe to the listed relay_url. In practice, cdn.moq.dev resolves to region-local relay IPs, and broadcasts published from one region are not consistently visible from another region endpoint.
For archive nodes running in a different region than publishers, this causes workers to connect successfully but wait indefinitely for broadcast announcements.
Decision
Add an explicit Nix module option:
services.every-channel.ec-node.archive.relayUrlOverride(nullable string)
When set, archive workers ignore per-entry relay_url from directory listings and always subscribe through the configured override URL.
This allows operators to pin archive ingestion to the same relay endpoint used by publishers without changing public directory payloads.
Why
- Restores deterministic archival ingestion across regions.
- Keeps deployment-level control in Nix (no app-level migration needed).
- Reversible with a single config change.
Alternatives considered
- Keep subscribing to directory-provided
relay_urlonly. Rejected because cross-region visibility is inconsistent in practice. - Rewrite directory entries per-region. Rejected because this mixes deployment affinity into public directory payloads.
Rollout
- Set
archive.relayUrlOverrideon archive hosts that need relay affinity. - If override uses an IP literal, enable
archive.tlsDisableVerify = trueuntil SNI-preserving IP overrides are implemented. - Rebuild host and verify manifest growth.
Reversibility
Unset archive.relayUrlOverride to return to directory-provided relay_url behavior.