From c304bf322a2f50d3dbdfa387446a89c7fffc65b6 Mon Sep 17 00:00:00 2001 From: Stephan Behnke Date: Tue, 21 Jul 2026 10:40:28 -0700 Subject: [PATCH 1/8] Document dcRedirectionPolicy request forwarding for Multi-Cluster Replication Add a "Request forwarding" section to the Multi-Cluster Replication setup guide explaining dcRedirectionPolicy: when it's needed (clients connecting to a standby Cluster) and the all-apis vs selected-apis choice. Includes a Nexus note that StartNexusOperationExecution is not covered by selected-apis-forwarding, so all-apis-forwarding is required to start Standalone Nexus Operations against a standby Cluster. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../multi-cluster-replication.mdx | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx index 04deeba163..d4289e140e 100644 --- a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx +++ b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx @@ -528,3 +528,35 @@ temporal operator cluster upsert --frontend_address="localhost:8233" --enable_co # Delete connections temporal operator cluster remove --name="someClusterName" ``` + +#### Request forwarding + +By default, a client request that reaches a standby Cluster for a Namespace whose +active Cluster is elsewhere is not automatically routed to the active Cluster. If +your clients may connect to a standby Cluster (for example, during or after a +failover), set the server's +[`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy) so those +requests are forwarded to the active Cluster: + +- `all-apis-forwarding`: forwards all client APIs for the Namespace. +- `selected-apis-forwarding`: forwards a fixed subset (start, signal, cancel, + terminate, delete, and query APIs). See + [`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy) for the + exact list. + +```yaml +dcRedirectionPolicy: + policy: "all-apis-forwarding" +``` + +If every client already connects to the active Cluster, this is not required. + +:::note Nexus + +Starting a [Standalone Nexus Operation](/standalone-nexus-operation) +(`StartNexusOperationExecution`) is not in the `selected-apis-forwarding` set, so +use `all-apis-forwarding` if clients start Standalone Nexus Operations against a +standby Cluster. Nexus Operation completion callbacks are forwarded separately and +automatically; see [Self-hosted Temporal Nexus](/production-deployment/self-hosted-guide/nexus). + +::: From b495c08796f27b562ec846311a46e4c5e79fde0e Mon Sep 17 00:00:00 2001 From: Stephan Behnke Date: Tue, 21 Jul 2026 10:42:44 -0700 Subject: [PATCH 2/8] Drop Nexus note from Request forwarding section Co-Authored-By: Claude Opus 4.8 (1M context) --- .../self-hosted-guide/multi-cluster-replication.mdx | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx index d4289e140e..db85f9ef3f 100644 --- a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx +++ b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx @@ -550,13 +550,3 @@ dcRedirectionPolicy: ``` If every client already connects to the active Cluster, this is not required. - -:::note Nexus - -Starting a [Standalone Nexus Operation](/standalone-nexus-operation) -(`StartNexusOperationExecution`) is not in the `selected-apis-forwarding` set, so -use `all-apis-forwarding` if clients start Standalone Nexus Operations against a -standby Cluster. Nexus Operation completion callbacks are forwarded separately and -automatically; see [Self-hosted Temporal Nexus](/production-deployment/self-hosted-guide/nexus). - -::: From 6daacffa5d70c88723c06d5e6bb4a54de36c4956 Mon Sep 17 00:00:00 2001 From: Stephan Behnke Date: Tue, 21 Jul 2026 10:52:06 -0700 Subject: [PATCH 3/8] Reconcile request forwarding with existing intro text MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The intro claimed forwarding was automatic and enabled via a dynamic config flag, which contradicted the new Request forwarding section and was inaccurate: dcRedirectionPolicy defaults to noop (off). Reword the intro as a short pointer, and make the Request forwarding section the single explanation of both settings — dcRedirectionPolicy (static, off by default) and system.enableNamespaceNotActiveAutoForwarding (dynamic, per-Namespace, on by default). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../multi-cluster-replication.mdx | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx index db85f9ef3f..6141cb6865 100644 --- a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx +++ b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx @@ -20,10 +20,11 @@ When necessary, for higher availability, Cluster operators can failover to any o Temporal's Multi-Cluster Replication feature is considered **experimental** and not subject to normal [versioning and support policy](/temporal-service/temporal-server#versions-and-support). -Temporal automatically forwards Start, Signal, and Query requests to the active Cluster. -This feature must be enabled through a Dynamic Config flag per [Global Namespace](/global-namespace). +When a client connects to a standby Cluster, its requests can be forwarded to the +active Cluster. This is configured with the Frontend's `dcRedirectionPolicy` and is +not enabled by default; see [Request forwarding](#request-forwarding). -When the feature is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists. +When forwarding is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists. All Visibility APIs can be used against active and standby Clusters. This enables [Temporal UI](/web-ui) to work seamlessly for Global Namespaces. @@ -531,22 +532,28 @@ temporal operator cluster remove --name="someClusterName" #### Request forwarding -By default, a client request that reaches a standby Cluster for a Namespace whose -active Cluster is elsewhere is not automatically routed to the active Cluster. If -your clients may connect to a standby Cluster (for example, during or after a -failover), set the server's -[`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy) so those -requests are forwarded to the active Cluster: - -- `all-apis-forwarding`: forwards all client APIs for the Namespace. -- `selected-apis-forwarding`: forwards a fixed subset (start, signal, cancel, - terminate, delete, and query APIs). See - [`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy) for the - exact list. +When a client connects to a standby Cluster, the Frontend can forward its requests +to the current active Cluster for the Namespace, so clients don't have to track +which Cluster is active. This is useful when clients may connect to a standby +Cluster, for example during or after a failover. Two settings control it: + +- **`dcRedirectionPolicy`** (static configuration) selects which APIs are + forwarded. It defaults to `noop` (no forwarding), so forwarding is **off unless + you set it**: + - `all-apis-forwarding`: forwards all client APIs for the Namespace. + - `selected-apis-forwarding`: forwards a fixed subset (start, signal, cancel, + terminate, delete, and query APIs). See + [`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy) for the + exact list. +- **`system.enableNamespaceNotActiveAutoForwarding`** (dynamic configuration, + per-Namespace) gates forwarding for each Namespace and is **enabled by default**. + Setting it to `false` disables forwarding for that Namespace even when a policy + is configured. ```yaml dcRedirectionPolicy: policy: "all-apis-forwarding" ``` -If every client already connects to the active Cluster, this is not required. +Forwarding applies only to [Global Namespaces](/global-namespace). If every client +already connects to the active Cluster, it is not required. From 047e2b877a1e2ca4faf9f585ed0d0793fc29cd62 Mon Sep 17 00:00:00 2001 From: Stephan Behnke Date: Tue, 21 Jul 2026 10:58:03 -0700 Subject: [PATCH 4/8] Point to dcRedirectionPolicy reference instead of a duplicate section Replace the standalone Request forwarding section with a concise intro pointer to the dcRedirectionPolicy config reference (avoids duplicating the value list). Apply the same corrected wording to the encyclopedia Multi-Cluster Replication page so both stay consistent. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../multi-cluster-replication.mdx | 9 +++-- .../multi-cluster-replication.mdx | 34 +++---------------- 2 files changed, 10 insertions(+), 33 deletions(-) diff --git a/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx b/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx index 23d13f192a..d05de334d7 100644 --- a/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx +++ b/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx @@ -33,10 +33,13 @@ When necessary, for higher availability, Cluster operators can failover to any o Temporal's Multi-Cluster Replication feature is considered **experimental** and not subject to normal [versioning and support policy](/temporal-service/temporal-server#versions-and-support). -Temporal automatically forwards Start, Signal, and Query requests to the active Cluster. -This feature must be enabled through a Dynamic Config flag per [Global Namespace](/global-namespace). +When a client connects to a standby Cluster, its requests can be forwarded to the +active Cluster. This is off by default; enable it by setting the Frontend's +[`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy) to +`selected-apis-forwarding` or `all-apis-forwarding`. Forwarding applies only to +[Global Namespaces](/global-namespace). -When the feature is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists. +When forwarding is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists. All Visibility APIs can be used against active and standby Clusters. This enables [Temporal UI](/web-ui) to work seamlessly for Global Namespaces. diff --git a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx index 6141cb6865..0c87bd3435 100644 --- a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx +++ b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx @@ -21,8 +21,10 @@ When necessary, for higher availability, Cluster operators can failover to any o Temporal's Multi-Cluster Replication feature is considered **experimental** and not subject to normal [versioning and support policy](/temporal-service/temporal-server#versions-and-support). When a client connects to a standby Cluster, its requests can be forwarded to the -active Cluster. This is configured with the Frontend's `dcRedirectionPolicy` and is -not enabled by default; see [Request forwarding](#request-forwarding). +active Cluster. This is off by default; enable it by setting the Frontend's +[`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy) to +`selected-apis-forwarding` or `all-apis-forwarding`. Forwarding applies only to +[Global Namespaces](/global-namespace). When forwarding is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists. @@ -529,31 +531,3 @@ temporal operator cluster upsert --frontend_address="localhost:8233" --enable_co # Delete connections temporal operator cluster remove --name="someClusterName" ``` - -#### Request forwarding - -When a client connects to a standby Cluster, the Frontend can forward its requests -to the current active Cluster for the Namespace, so clients don't have to track -which Cluster is active. This is useful when clients may connect to a standby -Cluster, for example during or after a failover. Two settings control it: - -- **`dcRedirectionPolicy`** (static configuration) selects which APIs are - forwarded. It defaults to `noop` (no forwarding), so forwarding is **off unless - you set it**: - - `all-apis-forwarding`: forwards all client APIs for the Namespace. - - `selected-apis-forwarding`: forwards a fixed subset (start, signal, cancel, - terminate, delete, and query APIs). See - [`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy) for the - exact list. -- **`system.enableNamespaceNotActiveAutoForwarding`** (dynamic configuration, - per-Namespace) gates forwarding for each Namespace and is **enabled by default**. - Setting it to `false` disables forwarding for that Namespace even when a policy - is configured. - -```yaml -dcRedirectionPolicy: - policy: "all-apis-forwarding" -``` - -Forwarding applies only to [Global Namespaces](/global-namespace). If every client -already connects to the active Cluster, it is not required. From a4129d92f3c03e0e42565c7c5c09522db62371ed Mon Sep 17 00:00:00 2001 From: Stephan Behnke Date: Tue, 21 Jul 2026 10:59:57 -0700 Subject: [PATCH 5/8] Trim policy values from intro; keep 'the feature' wording Leave the selected/all-apis-forwarding value list to the linked dcRedirectionPolicy reference, and restore the original 'When the feature is enabled' phrasing. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../temporal-service/multi-cluster-replication.mdx | 7 +++---- .../self-hosted-guide/multi-cluster-replication.mdx | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx b/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx index d05de334d7..94ecb46497 100644 --- a/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx +++ b/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx @@ -35,11 +35,10 @@ Temporal's Multi-Cluster Replication feature is considered **experimental** and When a client connects to a standby Cluster, its requests can be forwarded to the active Cluster. This is off by default; enable it by setting the Frontend's -[`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy) to -`selected-apis-forwarding` or `all-apis-forwarding`. Forwarding applies only to -[Global Namespaces](/global-namespace). +[`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy). Forwarding +applies only to [Global Namespaces](/global-namespace). -When forwarding is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists. +When the feature is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists. All Visibility APIs can be used against active and standby Clusters. This enables [Temporal UI](/web-ui) to work seamlessly for Global Namespaces. diff --git a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx index 0c87bd3435..4a0d8a39a2 100644 --- a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx +++ b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx @@ -22,11 +22,10 @@ Temporal's Multi-Cluster Replication feature is considered **experimental** and When a client connects to a standby Cluster, its requests can be forwarded to the active Cluster. This is off by default; enable it by setting the Frontend's -[`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy) to -`selected-apis-forwarding` or `all-apis-forwarding`. Forwarding applies only to -[Global Namespaces](/global-namespace). +[`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy). Forwarding +applies only to [Global Namespaces](/global-namespace). -When forwarding is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists. +When the feature is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists. All Visibility APIs can be used against active and standby Clusters. This enables [Temporal UI](/web-ui) to work seamlessly for Global Namespaces. From 752e157b02871dd4b3c7b00098d83e96992e0950 Mon Sep 17 00:00:00 2001 From: Stephan Behnke Date: Tue, 21 Jul 2026 11:01:19 -0700 Subject: [PATCH 6/8] Reword: forwarding is enabled for Global Namespaces Co-Authored-By: Claude Opus 4.8 (1M context) --- .../encyclopedia/temporal-service/multi-cluster-replication.mdx | 2 +- .../self-hosted-guide/multi-cluster-replication.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx b/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx index 94ecb46497..4bf4031d77 100644 --- a/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx +++ b/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx @@ -36,7 +36,7 @@ Temporal's Multi-Cluster Replication feature is considered **experimental** and When a client connects to a standby Cluster, its requests can be forwarded to the active Cluster. This is off by default; enable it by setting the Frontend's [`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy). Forwarding -applies only to [Global Namespaces](/global-namespace). +is enabled for [Global Namespaces](/global-namespace). When the feature is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists. diff --git a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx index 4a0d8a39a2..112ca7088e 100644 --- a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx +++ b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx @@ -23,7 +23,7 @@ Temporal's Multi-Cluster Replication feature is considered **experimental** and When a client connects to a standby Cluster, its requests can be forwarded to the active Cluster. This is off by default; enable it by setting the Frontend's [`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy). Forwarding -applies only to [Global Namespaces](/global-namespace). +is enabled for [Global Namespaces](/global-namespace). When the feature is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists. From 63ed67d2b1f60f347d18e11a0d87de21adf26a17 Mon Sep 17 00:00:00 2001 From: Stephan Behnke Date: Tue, 21 Jul 2026 11:02:01 -0700 Subject: [PATCH 7/8] Drop the Global Namespaces forwarding-scope sentence Co-Authored-By: Claude Opus 4.8 (1M context) --- .../temporal-service/multi-cluster-replication.mdx | 3 +-- .../self-hosted-guide/multi-cluster-replication.mdx | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx b/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx index 4bf4031d77..7137ceeeac 100644 --- a/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx +++ b/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx @@ -35,8 +35,7 @@ Temporal's Multi-Cluster Replication feature is considered **experimental** and When a client connects to a standby Cluster, its requests can be forwarded to the active Cluster. This is off by default; enable it by setting the Frontend's -[`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy). Forwarding -is enabled for [Global Namespaces](/global-namespace). +[`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy). When the feature is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists. diff --git a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx index 112ca7088e..957133070c 100644 --- a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx +++ b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx @@ -22,8 +22,7 @@ Temporal's Multi-Cluster Replication feature is considered **experimental** and When a client connects to a standby Cluster, its requests can be forwarded to the active Cluster. This is off by default; enable it by setting the Frontend's -[`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy). Forwarding -is enabled for [Global Namespaces](/global-namespace). +[`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy). When the feature is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists. From 716a77e94975c35f93a215ce27a34143459b565e Mon Sep 17 00:00:00 2001 From: Stephan Behnke Date: Tue, 21 Jul 2026 11:02:47 -0700 Subject: [PATCH 8/8] =?UTF-8?q?Drop=20'Frontend's'=20=E2=80=94=20dcRedirec?= =?UTF-8?q?tionPolicy=20is=20a=20top-level=20config=20key?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- .../encyclopedia/temporal-service/multi-cluster-replication.mdx | 2 +- .../self-hosted-guide/multi-cluster-replication.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx b/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx index 7137ceeeac..06ccc883d0 100644 --- a/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx +++ b/docs/encyclopedia/temporal-service/multi-cluster-replication.mdx @@ -34,7 +34,7 @@ When necessary, for higher availability, Cluster operators can failover to any o Temporal's Multi-Cluster Replication feature is considered **experimental** and not subject to normal [versioning and support policy](/temporal-service/temporal-server#versions-and-support). When a client connects to a standby Cluster, its requests can be forwarded to the -active Cluster. This is off by default; enable it by setting the Frontend's +active Cluster. This is off by default; enable it by setting [`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy). When the feature is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists. diff --git a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx index 957133070c..5d2a942e02 100644 --- a/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx +++ b/docs/production-deployment/self-hosted-guide/multi-cluster-replication.mdx @@ -21,7 +21,7 @@ When necessary, for higher availability, Cluster operators can failover to any o Temporal's Multi-Cluster Replication feature is considered **experimental** and not subject to normal [versioning and support policy](/temporal-service/temporal-server#versions-and-support). When a client connects to a standby Cluster, its requests can be forwarded to the -active Cluster. This is off by default; enable it by setting the Frontend's +active Cluster. This is off by default; enable it by setting [`dcRedirectionPolicy`](/references/configuration#dcredirectionpolicy). When the feature is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists.