Document Nexus with Global Namespaces (multi-region failover) for self-hosted#4906
Open
stephanos wants to merge 54 commits into
Open
Document Nexus with Global Namespaces (multi-region failover) for self-hosted#4906stephanos wants to merge 54 commits into
stephanos wants to merge 54 commits into
Conversation
Documents how Nexus Operation completion callbacks behave when a Global Namespace fails over between clusters, and the configuration required for worker-target endpoints: endpoint registry parity, replicated Namespaces, auto-forwarding, and a frontend httpPort plus advertised httpAddress on every cluster. Reorders "Build and use Nexus Services" above the new section. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
📖 Docs PR preview links
|
- Capitalize Temporal proper nouns (Cluster, Namespace, Workflow, Worker, Task Queue, Endpoint, Nexus Operation) to match sibling multi-cluster docs. - Replace em-dashes with plain punctuation; drop "e.g."/"via" per style guide. - Add that caller and handler Namespaces can be active on different Clusters (per-Namespace active cluster), so cross-Cluster completion forwarding is a steady state, handled automatically once httpAddress is advertised. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Move the target-type scope into a note that also mentions external-target Endpoints (--target-url) for completeness. - Vale pass: fix Worker casing, use contractions, split the long intro sentence, and use "automatic forwarding" instead of "auto-forwarding". Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…tion - Split auto-forwarding into its two required parts: the static dcRedirectionPolicy (defaults to no redirection) and the per-Namespace system.enableNamespaceNotActiveAutoForwarding dynamic config. - Trim the httpAddress step to the Nexus-specific delta (httpPort + httpAddress) and defer base clusterMetadata/rpcAddress setup to the Multi-Cluster Replication page it links to. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ion entry - Link dcRedirectionPolicy to references/configuration, its canonical entry. - Clarify that the per-Cluster clusterInformation entry already contains the replication fields (enabled, rpcName, rpcAddress, initialFailoverVersion) and that httpAddress is added to it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Step 3 repeated the httpPort/httpAddress config already shown in Enable Nexus. Reference that section and keep only the multi-cluster delta: set them on every Cluster, plus the operator cluster upsert caveat. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Compress the 'What to expect on failover' list from five verbose bullets to four, folding the async-replication caveat into the permanent-loss point. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
It conflated the dynamic cluster-connection flow with the static-config instruction; httpAddress is set in static clusterInformation. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Explain system.enableNamespaceNotActiveAutoForwarding (per-Namespace, defaults to true) and note it has the opposite default of dcRedirectionPolicy. - Redraw the failover sequence so replication (not a failover-time handoff) carries state to Cluster B; remove the misleading A->B arrow. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Remove semicolon from a sequence-diagram Note (mermaid treats ; as a statement separator, causing a render-time parse error). - Reword enableNamespaceNotActiveAutoForwarding as 'make sure it isn't turned off' since it defaults to true. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Drop the literal quotes and wrap the replication note across two lines so the Note-over box doesn't overflow. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Nexus forwarding is on by default (enableNamespaceNotActiveAutoForwarding). dcRedirectionPolicy is an optional client-API convenience, not a requirement (default noop; not mandated by the multi-cluster docs). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The CI mermaid linter parses headless (no DOM) and can't handle sequence 'box'. A flowchart with subgraphs shows the same Cluster boxes containing the Namespaces and passes the linter. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
lint-mermaid runs mermaid.parse() headless, which fails on syntaxes that need browser DOM APIs (e.g. sequence-diagram 'box': 'window is not defined'). Set up a jsdom DOM before loading mermaid, and add jsdom as a devDependency (it was only a transitive dep before). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Use the sequence diagram with Cluster boxes (now that the linter parses it). - dcRedirectionPolicy: mention selected-apis-forwarding forwards StartNexusOperationExecution for standalone Nexus Operations. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
stephanos
commented
Jul 17, 2026
| default via `system.enableNamespaceNotActiveAutoForwarding` (per-Namespace | ||
| dynamic config). | ||
|
|
||
| Optionally, set the server's |
Contributor
Author
There was a problem hiding this comment.
I wasn't sure if this should be optional or recommended?
Replace the manual jsdom global-copy loop with a one-line 'import global-jsdom/register'. (jsdom-global is unmaintained and doesn't expose the globals mermaid's box syntax needs; global-jsdom does.) Swap the direct jsdom devDependency for global-jsdom. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
stephanos
commented
Jul 17, 2026
| // Set up a browser-like DOM before loading mermaid. mermaid.parse() uses DOM | ||
| // APIs for some diagram syntaxes (for example a sequence diagram `box`) and | ||
| // otherwise fails headless with "window is not defined". | ||
| import 'global-jsdom/register'; |
Contributor
Author
There was a problem hiding this comment.
This was needed to make the mermaid chart above work; the box is crucial to convey the topology clearly.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
WISOTT