From ef7c7fe78941e8295e2694f1a751bdb3daa2b28e Mon Sep 17 00:00:00 2001 From: Shahab Tajik Date: Thu, 21 Nov 2024 18:50:43 +0100 Subject: [PATCH] Minor enhancements to execution info (#487) * Add Deployment APIs * Move UpdateDeploymentMemo to deployment dir * Address feedback & rename deployment_name * Addressed comments * Addressed feedback * WIP git rid of stamp * Deprecate WorkerVersionStamp * Rename RedirectInfo to DeploymentTransition * undo enum comment change * regen files * Deprecate WorkerVersionStamp and replace it with Deployment * Deprecate WorkerVersionStamp and replace it with Deployment * Remove WorkerVersionStamp.deployment_series_name * Minor enhancements to execution info --- openapi/openapiv2.json | 14 +++----------- openapi/openapiv3.yaml | 23 +++++++---------------- temporal/api/workflow/v1/message.proto | 23 +++++++---------------- 3 files changed, 17 insertions(+), 43 deletions(-) diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index c5fdbfb1..97f79317 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -5554,14 +5554,6 @@ "deployment": { "$ref": "#/definitions/v1Deployment", "description": "The target deployment of the transition. Null means a so-far-versioned workflow is\ntransitioning to unversioned workers." - }, - "setOverride": { - "$ref": "#/definitions/v1VersioningOverride", - "description": "Override should be set upon completion of the transition. If this is a PINNED\noverride, transition `deployment` must match `set_override.deployment`." - }, - "unsetOverride": { - "type": "boolean", - "description": "Override should be unset upon completion of the transition." } } }, @@ -5590,11 +5582,11 @@ }, "versioningOverride": { "$ref": "#/definitions/v1VersioningOverride", - "description": "Present if user has set an execution-specific versioning override. This override takes\nprecedence over SDK-sent `behavior` and `deployment`." + "description": "Present if user has set an execution-specific versioning override. This override takes\nprecedence over SDK-sent `behavior` (and `deployment` when override is PINNED)." }, "deploymentTransition": { "$ref": "#/definitions/VersioningInfoDeploymentTransition", - "description": "When present, indicates the workflow is transitioning to a different deployment.\nA deployment transition can only exist during the lifetime of a pending workflow task.\nIf the pending workflow task completes (at the next WorkflowTaskCompleted event), the\ntransition is considered complete and the workflow's deployment is updated. If the\npending workflow task fails or times out, then the transition is canceled and workflow\nremains on the previous deployment." + "description": "When present, indicates the workflow is transitioning to a different deployment.\nA deployment transition can only exist when there is a pending/started workflow task.\nOnce the pending workflow task completes on the transition deployment, the transition\ncompletes and the workflow's deployment (or versioning override) is updated." } } }, @@ -12639,7 +12631,7 @@ }, "versioningInfo": { "$ref": "#/definitions/WorkflowExecutionInfoVersioningInfo", - "description": "Holds all the information about versioning for this particular execution." + "description": "Holds all the information about versioning for this particular execution.\nExperimental. Versioning info is experimental and might change in the future." } } }, diff --git a/openapi/openapiv3.yaml b/openapi/openapiv3.yaml index a92155dc..a7c3cb2a 100644 --- a/openapi/openapiv3.yaml +++ b/openapi/openapiv3.yaml @@ -9690,15 +9690,6 @@ components: description: |- The target deployment of the transition. Null means a so-far-versioned workflow is transitioning to unversioned workers. - setOverride: - allOf: - - $ref: '#/components/schemas/VersioningOverride' - description: |- - Override should be set upon completion of the transition. If this is a PINNED - override, transition `deployment` must match `set_override.deployment`. - unsetOverride: - type: boolean - description: Override should be unset upon completion of the transition. VersioningOverride: type: object properties: @@ -10094,7 +10085,9 @@ components: versioningInfo: allOf: - $ref: '#/components/schemas/WorkflowExecutionInfo_VersioningInfo' - description: Holds all the information about versioning for this particular execution. + description: |- + Holds all the information about versioning for this particular execution. + Experimental. Versioning info is experimental and might change in the future. WorkflowExecutionInfo_VersioningInfo: type: object properties: @@ -10120,17 +10113,15 @@ components: - $ref: '#/components/schemas/VersioningOverride' description: |- Present if user has set an execution-specific versioning override. This override takes - precedence over SDK-sent `behavior` and `deployment`. + precedence over SDK-sent `behavior` (and `deployment` when override is PINNED). deploymentTransition: allOf: - $ref: '#/components/schemas/VersioningInfo_DeploymentTransition' description: |- When present, indicates the workflow is transitioning to a different deployment. - A deployment transition can only exist during the lifetime of a pending workflow task. - If the pending workflow task completes (at the next WorkflowTaskCompleted event), the - transition is considered complete and the workflow's deployment is updated. If the - pending workflow task fails or times out, then the transition is canceled and workflow - remains on the previous deployment. + A deployment transition can only exist when there is a pending/started workflow task. + Once the pending workflow task completes on the transition deployment, the transition + completes and the workflow's deployment (or versioning override) is updated. WorkflowExecutionOptions: type: object properties: diff --git a/temporal/api/workflow/v1/message.proto b/temporal/api/workflow/v1/message.proto index 2f25fbc5..7e0ffbb3 100644 --- a/temporal/api/workflow/v1/message.proto +++ b/temporal/api/workflow/v1/message.proto @@ -104,6 +104,7 @@ message WorkflowExecutionInfo { string first_run_id = 21; // Holds all the information about versioning for this particular execution. + // Experimental. Versioning info is experimental and might change in the future. VersioningInfo versioning_info = 22; message VersioningInfo { @@ -115,30 +116,20 @@ message WorkflowExecutionInfo { // Must be present if and only if `behavior` is set. temporal.api.deployment.v1.Deployment deployment = 2; // Present if user has set an execution-specific versioning override. This override takes - // precedence over SDK-sent `behavior` and `deployment`. + // precedence over SDK-sent `behavior` (and `deployment` when override is PINNED). VersioningOverride versioning_override = 3; // When present, indicates the workflow is transitioning to a different deployment. - // A deployment transition can only exist during the lifetime of a pending workflow task. - // If the pending workflow task completes (at the next WorkflowTaskCompleted event), the - // transition is considered complete and the workflow's deployment is updated. If the - // pending workflow task fails or times out, then the transition is canceled and workflow - // remains on the previous deployment. + // A deployment transition can only exist when there is a pending/started workflow task. + // Once the pending workflow task completes on the transition deployment, the transition + // completes and the workflow's deployment (or versioning override) is updated. DeploymentTransition deployment_transition = 4; message DeploymentTransition { // The target deployment of the transition. Null means a so-far-versioned workflow is // transitioning to unversioned workers. temporal.api.deployment.v1.Deployment deployment = 1; - // If present, it means the transition is initiated by a safe versioning override - // request. Such override change is only applied to the workflow when and if the - // transition successfully completes. - oneof apply_override { - // Override should be set upon completion of the transition. If this is a PINNED - // override, transition `deployment` must match `set_override.deployment`. - temporal.api.workflow.v1.VersioningOverride set_override = 2; - // Override should be unset upon completion of the transition. - bool unset_override = 3; - } + + // Later: safe transition info } } }