diff --git a/crates/common/protos/local/temporal/sdk/core/nexus/nexus.proto b/crates/common/protos/local/temporal/sdk/core/nexus/nexus.proto index a0230887c..b758b0b0a 100644 --- a/crates/common/protos/local/temporal/sdk/core/nexus/nexus.proto +++ b/crates/common/protos/local/temporal/sdk/core/nexus/nexus.proto @@ -61,6 +61,9 @@ message NexusTask { // Only set when variant is `task` and the header was present with a valid value. // Represented as an absolute timestamp. google.protobuf.Timestamp request_deadline = 3; + // The endpoint this request was addressed to. Extracted from the request for convenient access. + // Only set when variant is `task`. + string endpoint = 4; } message CancelNexusTask { diff --git a/crates/sdk-core/src/worker/nexus.rs b/crates/sdk-core/src/worker/nexus.rs index fea9f7474..c219f876c 100644 --- a/crates/sdk-core/src/worker/nexus.rs +++ b/crates/sdk-core/src/worker/nexus.rs @@ -413,6 +413,13 @@ where } } + let endpoint = t + .resp + .request + .as_ref() + .map(|r| r.endpoint.clone()) + .unwrap_or_default(); + let (service, operation, request_kind) = t .resp .request @@ -456,6 +463,7 @@ where Some(Ok(NexusTask { variant: Some(nexus_task::Variant::Task(t.resp)), request_deadline, + endpoint, })) }, Err(e) => Some(Err(PollError::TonicError(e))) @@ -463,6 +471,7 @@ where TaskStreamInput::Cancel(c) => Some(Ok(NexusTask { variant: Some(nexus_task::Variant::CancelTask(c)), request_deadline: None, + endpoint: String::new(), })), TaskStreamInput::SourceComplete => { source_done.cancel();