From ce8bf83d0171766be5d692cbbe379f6bd19e03ce Mon Sep 17 00:00:00 2001 From: stuart-wells Date: Tue, 18 Aug 2026 10:02:13 -0700 Subject: [PATCH 1/3] Adding field for gradual ramp requests --- temporal/api/workflowservice/v1/request_response.proto | 3 +++ 1 file changed, 3 insertions(+) diff --git a/temporal/api/workflowservice/v1/request_response.proto b/temporal/api/workflowservice/v1/request_response.proto index c3dd95769..557b0400c 100644 --- a/temporal/api/workflowservice/v1/request_response.proto +++ b/temporal/api/workflowservice/v1/request_response.proto @@ -124,6 +124,9 @@ message UpdateNamespaceRequest { string delete_bad_binary = 6; // promote local namespace to global namespace. Ignored if namespace is already global namespace. bool promote_namespace = 7; + // Duration over which replication traffic should ramp to 100% for passive clusters added by + // this request. An unset or non-positive duration disables the ramp for this request. + google.protobuf.Duration replication_ramp_duration = 8; } message UpdateNamespaceResponse { From e73aa02fa02bfae7a30b278fc10449c90ce7d20c Mon Sep 17 00:00:00 2001 From: stuart-wells Date: Tue, 18 Aug 2026 10:32:24 -0700 Subject: [PATCH 2/3] Adding remade openapi files. --- openapi/openapiv2.json | 4 ++++ openapi/openapiv3.yaml | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index 1391f113a..70b555ff5 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -13146,6 +13146,10 @@ "promoteNamespace": { "type": "boolean", "description": "promote local namespace to global namespace. Ignored if namespace is already global namespace." + }, + "replicationRampDuration": { + "type": "string", + "description": "Duration over which replication traffic should ramp to 100% for passive clusters added by\nthis request. An unset or non-positive duration disables the ramp for this request." } } }, diff --git a/openapi/openapiv3.yaml b/openapi/openapiv3.yaml index ab3e297e5..823bad6fb 100644 --- a/openapi/openapiv3.yaml +++ b/openapi/openapiv3.yaml @@ -18397,6 +18397,12 @@ components: promoteNamespace: type: boolean description: promote local namespace to global namespace. Ignored if namespace is already global namespace. + replicationRampDuration: + pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$ + type: string + description: |- + Duration over which replication traffic should ramp to 100% for passive clusters added by + this request. An unset or non-positive duration disables the ramp for this request. UpdateNamespaceResponse: type: object properties: From 5ab9536c34a0ac1eddf22270f7a9cf8f3f7f4ea3 Mon Sep 17 00:00:00 2001 From: stuart-wells Date: Tue, 18 Aug 2026 16:21:42 -0700 Subject: [PATCH 3/3] Moving replication_ramp_duration into NsRepliCon --- openapi/openapiv2.json | 8 ++++---- openapi/openapiv3.yaml | 12 ++++++------ temporal/api/replication/v1/message.proto | 4 ++++ .../api/workflowservice/v1/request_response.proto | 3 --- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index 70b555ff5..70e94bb26 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -13146,10 +13146,6 @@ "promoteNamespace": { "type": "boolean", "description": "promote local namespace to global namespace. Ignored if namespace is already global namespace." - }, - "replicationRampDuration": { - "type": "string", - "description": "Duration over which replication traffic should ramp to 100% for passive clusters added by\nthis request. An unset or non-positive duration disables the ramp for this request." } } }, @@ -17255,6 +17251,10 @@ }, "state": { "$ref": "#/definitions/v1ReplicationState" + }, + "replicationRampDuration": { + "type": "string", + "description": "Ramp duration for passive clusters added by an UpdateNamespace request; unset or non-positive disables gradual connect.\nThis field is not persisted and is omitted from namespace responses." } } }, diff --git a/openapi/openapiv3.yaml b/openapi/openapiv3.yaml index 823bad6fb..767827a61 100644 --- a/openapi/openapiv3.yaml +++ b/openapi/openapiv3.yaml @@ -13564,6 +13564,12 @@ components: - REPLICATION_STATE_HANDOVER type: string format: enum + replicationRampDuration: + pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$ + type: string + description: |- + Ramp duration for passive clusters added by an UpdateNamespace request; unset or non-positive disables gradual connect. + This field is not persisted and is omitted from namespace responses. NewWorkflowExecutionInfo: type: object properties: @@ -18397,12 +18403,6 @@ components: promoteNamespace: type: boolean description: promote local namespace to global namespace. Ignored if namespace is already global namespace. - replicationRampDuration: - pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$ - type: string - description: |- - Duration over which replication traffic should ramp to 100% for passive clusters added by - this request. An unset or non-positive duration disables the ramp for this request. UpdateNamespaceResponse: type: object properties: diff --git a/temporal/api/replication/v1/message.proto b/temporal/api/replication/v1/message.proto index 0c2f614eb..f69f29ea3 100644 --- a/temporal/api/replication/v1/message.proto +++ b/temporal/api/replication/v1/message.proto @@ -9,6 +9,7 @@ option java_outer_classname = "MessageProto"; option ruby_package = "Temporalio::Api::Replication::V1"; option csharp_namespace = "Temporalio.Api.Replication.V1"; +import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; import "temporal/api/enums/v1/namespace.proto"; @@ -21,6 +22,9 @@ message NamespaceReplicationConfig { string active_cluster_name = 1; repeated ClusterReplicationConfig clusters = 2; temporal.api.enums.v1.ReplicationState state = 3; + // Ramp duration for passive clusters added by an UpdateNamespace request; unset or non-positive disables gradual connect. + // This field is not persisted and is omitted from namespace responses. + google.protobuf.Duration replication_ramp_duration = 4; } // Represents a historical replication status of a Namespace diff --git a/temporal/api/workflowservice/v1/request_response.proto b/temporal/api/workflowservice/v1/request_response.proto index 557b0400c..c3dd95769 100644 --- a/temporal/api/workflowservice/v1/request_response.proto +++ b/temporal/api/workflowservice/v1/request_response.proto @@ -124,9 +124,6 @@ message UpdateNamespaceRequest { string delete_bad_binary = 6; // promote local namespace to global namespace. Ignored if namespace is already global namespace. bool promote_namespace = 7; - // Duration over which replication traffic should ramp to 100% for passive clusters added by - // this request. An unset or non-positive duration disables the ramp for this request. - google.protobuf.Duration replication_ramp_duration = 8; } message UpdateNamespaceResponse {