diff --git a/crates/common/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto b/crates/common/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto index fb8d90756..7eaa1ac77 100644 --- a/crates/common/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +++ b/crates/common/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto @@ -92,6 +92,8 @@ message WorkflowActivation { // build id, if this worker was using the deprecated Build ID-only // feature(s). common.WorkerDeploymentVersion deployment_version_for_current_task = 9; + // The last seen SDK version from the most recent WFT completed event + string last_sdk_version = 10; } message WorkflowActivationJob { diff --git a/crates/common/src/protos/mod.rs b/crates/common/src/protos/mod.rs index 49545ed3d..1121a1f63 100644 --- a/crates/common/src/protos/mod.rs +++ b/crates/common/src/protos/mod.rs @@ -519,6 +519,7 @@ pub mod coresdk { history_size_bytes: 0, continue_as_new_suggested: false, deployment_version_for_current_task: None, + last_sdk_version: String::new(), } } diff --git a/crates/sdk-core/src/internal_flags.rs b/crates/sdk-core/src/internal_flags.rs index 958e6459e..2d885ab2c 100644 --- a/crates/sdk-core/src/internal_flags.rs +++ b/crates/sdk-core/src/internal_flags.rs @@ -203,6 +203,15 @@ impl InternalFlags { Self::Disabled => Either::Right(iter::empty()), } } + + pub(crate) fn last_sdk_version(&self) -> Option<&str> { + match self { + InternalFlags::Enabled { + last_sdk_version, .. + } if !last_sdk_version.is_empty() => Some(last_sdk_version), + InternalFlags::Enabled { .. } | InternalFlags::Disabled => None, + } + } } impl CoreInternalFlags { diff --git a/crates/sdk-core/src/worker/workflow/machines/workflow_machines.rs b/crates/sdk-core/src/worker/workflow/machines/workflow_machines.rs index 834b828bc..23411f008 100644 --- a/crates/sdk-core/src/worker/workflow/machines/workflow_machines.rs +++ b/crates/sdk-core/src/worker/workflow/machines/workflow_machines.rs @@ -465,6 +465,11 @@ impl WorkflowMachines { continue_as_new_suggested: self.continue_as_new_suggested, deployment_version_for_current_task: deployment_version_for_current_task .map(Into::into), + last_sdk_version: (*self.observed_internal_flags) + .borrow() + .last_sdk_version() + .unwrap_or_default() + .to_owned(), } }