Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EDU-3702: breaking apart namespaces page and updating anchors (project nova) #3241

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/encyclopedia/activities.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ In the context of Temporal, Activities should be designed to be safely executed

:::info

By design, completed Activities will not re-execute as part of a [Workflow Replay](/workflows#replays). However, Activities won’t record to the [Event History](/encyclopedia/retry-policies#event-history) until they return or produce an error. If an Activity fails to report to the server at all, it will be retried. Designing for idempotence, especially if you have a [Global Namespace](/namespaces#global-namespace), will improve reusability and reliability.
By design, completed Activities will not re-execute as part of a [Workflow Replay](/workflows#replays). However, Activities won’t record to the [Event History](/encyclopedia/retry-policies#event-history) until they return or produce an error. If an Activity fails to report to the server at all, it will be retried. Designing for idempotence, especially if you have a [Global Namespace](/global-namespace), will improve reusability and reliability.

:::

Expand Down
2 changes: 1 addition & 1 deletion docs/encyclopedia/clusters.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -474,7 +474,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](/clusters).

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](/namespaces#global-namespace).
This feature must be enabled through a Dynamic Config flag per [Global Namespace](/global-namespace).

When the feature is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists.

Expand Down
38 changes: 38 additions & 0 deletions docs/encyclopedia/namespaces/global-namespaces.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
id: global-namespaces
title: What is a Global Namespace?
sidebar_label: Global Namespace
description: This guide covers everything about Global Namespaces within the Temporal Platform.
slug: /global-namespace
toc_max_heading_level: 4
keywords:
- namespaces
tags:
- Concepts
- Namespaces
---

This page provides an overview of Global Namespace.

## What is a Global Namespace? {#global-namespace}

A Global Namespace is a [Namespace](/namespaces) that exists across Clusters when [Multi-Cluster Replication](/clusters#multi-cluster-replication) is set up.

- [How to register a Global Namespace](/cli/operator#create)
- [How to change the active Cluster for a Global Namespace](/cli/operator#update)

The Global Namespace feature enables Workflow Executions to progress through another Cluster in the event of a failover.

A Global Namespace may be replicated to any number of Clusters, but is active in only one Cluster at any given time.

For a failover to be successful, Worker Processes must be polling for Tasks for the Global Namespace on all Clusters.

A Global Namespace has a failover version.
Because a failover can be triggered from any Cluster, the failover version prevents certain conflicts from occurring if a failover is mistakenly triggered simultaneously on two Clusters.

Only the active Cluster dispatches [Tasks](/workers#task); however, certain conflicts are possible.
Unlike regular Namespaces, which provide at-most-once semantics for an Activity Execution, Global Namespaces can support only at-least-once semantics (see [Conflict resolution](/clusters#conflict-resolution)).
Worker Processes on the standby Clusters are idle until a failover occurs and their Cluster becomes active.

Temporal Application API calls made to a non-active Cluster are rejected with a **NamespaceNotActiveError** which contains the name of the current active Cluster.
It is the responsibility of the Temporal Application to call the Cluster that is currently active.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
id: namespaces
title: What is a Temporal Namespace?
sidebar_label: Namespaces
sidebar_label: Namespace
description: This guide covers everything about Namespaces within the Temporal Platform, highlighting their role in Workflow isolation, setting up, registering, and managing Namespaces, and the concept and benefits of Global Namespaces.
slug: /namespaces
toc_max_heading_level: 4
Expand All @@ -18,7 +18,7 @@ A Namespace is a unit of isolation within the Temporal Platform.

A single Namespace is still multi-tenant.

### Usage
## Usage

Namespaces are created on the Temporal Service, and provide a range of controls to achieve isolation on Workflow Executions.

Expand All @@ -34,7 +34,7 @@ Namespaces are created on the Temporal Service, and provide a range of controls
Workflow Executions may have the same Workflow Id if they are in different Namespaces.
- **Namespace Configuration:** Various configuration options like the [Retention Period](/clusters#retention-period) and the [Archival](/clusters#archival) destination are configured per Namespace through a special CRUD API or through the [Temporal CLI](/cli).

### Registration
## Registration

Registering a Namespace creates the Namespace on the Temporal Service.
When you register your Namespace, you must also set the [Retention Period](/clusters#retention-period) for the Namespace.
Expand Down Expand Up @@ -64,7 +64,7 @@ On self-hosted Temporal Service, you can register your Namespaces in the followi

Note that registering a Namespace takes up to 15 seconds to complete. Ensure that you are waiting for this process to complete before making calls to the Namespace.

### Manage Namespaces
## Manage Namespaces

Use a custom [Authorizer](/self-hosted-guide/security#authorizer-plugin) on your Frontend Service in the Temporal Service to set restrictions on who can create, update, or deprecate Namespaces.

Expand Down Expand Up @@ -99,7 +99,7 @@ On self-hosted Temporal Service, you can manage your registered Namespaces using
- With the Temporal CLI: [`temporal operator namespace delete`](/cli/operator#delete).
- Use the DeleteNamespace API to delete a registered Namespaces. All the running Workflow Executions on a deleted Namespace are also deleted.

### Setting
## Setting

Set Namespaces in your SDK Client to isolate your Workflow Executions to the Namespace.
If you do not set a Namespace, all Workflow Executions started using the Client will be associated with the "default" Namespace. This means, you must have a default Namespace called "default" registered with your Temporal Service. See [Registration](#registration) for details.
Expand All @@ -109,25 +109,3 @@ If you do not set a Namespace, all Workflow Executions started using the Client
- [How to list Namespaces in a Temporal Service using the Temporal CLI](/cli/operator#list)
- [How to view (describe) Namespace metadata and details using the Temporal CLI](/cli/operator#describe)

## What is a Global Namespace? {#global-namespace}

A Global Namespace is a [Namespace](/namespaces) that exists across Clusters when [Multi-Cluster Replication](/clusters#multi-cluster-replication) is set up.

- [How to register a Global Namespace](/cli/operator#create)
- [How to change the active Cluster for a Global Namespace](/cli/operator#update)

The Global Namespace feature enables Workflow Executions to progress through another Cluster in the event of a failover.

A Global Namespace may be replicated to any number of Clusters, but is active in only one Cluster at any given time.

For a failover to be successful, Worker Processes must be polling for Tasks for the Global Namespace on all Clusters.

A Global Namespace has a failover version.
Because a failover can be triggered from any Cluster, the failover version prevents certain conflicts from occurring if a failover is mistakenly triggered simultaneously on two Clusters.

Only the active Cluster dispatches [Tasks](/workers#task); however, certain conflicts are possible.
Unlike regular Namespaces, which provide at-most-once semantics for an Activity Execution, Global Namespaces can support only at-least-once semantics (see [Conflict resolution](/clusters#conflict-resolution)).
Worker Processes on the standby Clusters are idle until a failover occurs and their Cluster becomes active.

Temporal Application API calls made to a non-active Cluster are rejected with a **NamespaceNotActiveError** which contains the name of the current active Cluster.
It is the responsibility of the Temporal Application to call the Cluster that is currently active.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Temporal offers high availability as a feature for both Temporal Cloud and self-

<RelatedReadContainer>
<RelatedReadItem path="/cloud/multi-region" text="Multi-region Namespaces for Temporal Cloud" archetype="encyclopedia" />
<RelatedReadItem path="/namespaces#global-namespace" text="Global Namespace for self-hosted deployments" archetype="encyclopedia" />
<RelatedReadItem path="/global-namespace" text="Global Namespace for self-hosted deployments" archetype="encyclopedia" />
<RelatedReadItem path="/cloud/pricing" text="Multi-region Pricing" archetype="encyclopedia" />
<RelatedReadItem path="/cloud/multi-region#routing" text="PrivateLink routing for Multi-region" archetype="encyclopedia" />
</RelatedReadContainer>
2 changes: 1 addition & 1 deletion docs/glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ Learn more about the General Availability release stage

<!-- _Tags: [product-release-stages](/tags/product-release-stages), [term](/tags/term)_ -->

#### [Global Namespace](/namespaces#global-namespace)
#### [Global Namespace](/global-namespace)

A Global Namespace is a Namespace that duplicates data from an active [Temporal Service](#temporal-cluster) to a standby Service using the replication to keep both Namespaces in sync.
Global Namespaces are designed to respond to service issues like network congestion.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ The Archival URI cannot be changed after the Namespace is created.
Each Namespace supports only a single Archival URI, but each Namespace can use a different URI.
A Namespace can safely switch Archival between `enabled` and `disabled` states as long as Archival is enabled at the Temporal Service level.

Archival is supported in [Global Namespaces](/namespaces#global-namespace) (Namespaces that span multiple clusters).
Archival is supported in [Global Namespaces](/global-namespace) (Namespaces that span multiple clusters).
When Archival is running in a Global Namespace, it first runs on the active cluster; later it runs on the standby cluster. Before archiving, a history check is done to see what has been previously archived.

#### Test setup
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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](/clusters).

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](/namespaces#global-namespace).
This feature must be enabled through a Dynamic Config flag per [Global Namespace](/global-namespace).

When the feature is enabled, Tasks are sent to the Parent Task Queue partition that matches that Namespace, if it exists.

Expand Down
4 changes: 2 additions & 2 deletions docs/tctl-v1/namespace.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ This modifier is required unless the global `--namespace` modifier is specified
tctl namespace describe --namespace_id <id>
```

Example results for a [Global Namespace](/namespaces#global-namespace)
Example results for a [Global Namespace](/global-namespace)

```bash
$ tctl --ns canary-namespace n desc
Expand Down Expand Up @@ -130,7 +130,7 @@ tctl namespace register --description <value>

### --global_namespace

Specifies whether a [Namespace](/namespaces) is a [Global Namespace](/namespaces#global-namespace).
Specifies whether a [Namespace](/namespaces) is a [Global Namespace](/global-namespace).
When enabled, it controls the creation of replication tasks on updates allowing the state to be replicated across Clusters.
This is a read-only setting and cannot be changed.

Expand Down
13 changes: 12 additions & 1 deletion sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -520,7 +520,18 @@ module.exports = {
"encyclopedia/child-workflows",
"encyclopedia/visibility",
"encyclopedia/clusters",
"encyclopedia/namespaces",
{
type: "category",
label: "Namespaces",
collapsed: true,
link: {
type: "doc",
id: "encyclopedia/namespaces/namespaces",
},
items: [
"encyclopedia/namespaces/global-namespaces",
],
},
{
type: "category",
label: "Temporal Nexus",
Expand Down
Loading