@@ -15,16 +15,10 @@ pub(crate) use driven_workflow::DrivenWorkflow;
1515pub ( crate ) use history_update:: HistoryUpdate ;
1616
1717use crate :: {
18- MetricsContext ,
19- abstractions:: {
18+ MetricsContext , abstractions:: {
2019 MeteredPermitDealer , TrackedOwnedMeteredSemPermit , UsedMeteredSemPermit , dbg_panic,
2120 take_cell:: TakeCell ,
22- } ,
23- internal_flags:: InternalFlags ,
24- pollers:: TrackedPermittedTqResp ,
25- protosext:: { ValidPollWFTQResponse , protocol_messages:: IncomingProtocolMessage } ,
26- telemetry:: { VecDisplayer , set_trace_subscriber_for_current_thread} ,
27- worker:: {
21+ } , internal_flags:: InternalFlags , pollers:: TrackedPermittedTqResp , protosext:: { ValidPollWFTQResponse , protocol_messages:: IncomingProtocolMessage } , telemetry:: { VecDisplayer , metrics:: { self , FailureReason } , set_trace_subscriber_for_current_thread} , worker:: {
2822 LocalActRequest , LocalActivityExecutionResult , LocalActivityResolution ,
2923 PostActivateHookData ,
3024 activities:: { ActivitiesFromWFTsHandle , LocalActivityManager } ,
@@ -37,7 +31,7 @@ use crate::{
3731 wft_poller:: validate_wft,
3832 workflow_stream:: { LocalInput , LocalInputs , WFStream } ,
3933 } ,
40- } ,
34+ }
4135} ;
4236use anyhow:: anyhow;
4337use futures_util:: { Stream , StreamExt , future:: abortable, stream, stream:: BoxStream } ;
@@ -57,19 +51,15 @@ use std::{
5751} ;
5852use temporalio_client:: MESSAGE_TOO_LARGE_KEY ;
5953use temporalio_common:: {
60- errors:: { CompleteWfError , PollError } ,
61- protos:: {
54+ errors:: { CompleteWfError , PollError } , protos:: {
6255 TaskToken ,
6356 coresdk:: {
6457 workflow_activation:: {
6558 QueryWorkflow , WorkflowActivation , WorkflowActivationJob ,
6659 remove_from_cache:: EvictionReason , workflow_activation_job,
6760 } ,
6861 workflow_commands:: * ,
69- workflow_completion,
70- workflow_completion:: {
71- Failure , WorkflowActivationCompletion , workflow_activation_completion,
72- } ,
62+ workflow_completion:: { self , Failure , WorkflowActivationCompletion , workflow_activation_completion} ,
7363 } ,
7464 temporal:: api:: {
7565 command:: v1:: { Command as ProtoCommand , Command , command:: Attributes } ,
@@ -84,8 +74,7 @@ use temporalio_common::{
8474 taskqueue:: v1:: StickyExecutionAttributes ,
8575 workflowservice:: v1:: { PollActivityTaskQueueResponse , get_system_info_response} ,
8676 } ,
87- } ,
88- worker:: { ActivitySlotKind , WorkerConfig , WorkflowSlotKind } ,
77+ } , worker:: { ActivitySlotKind , WorkerConfig , WorkflowSlotKind }
8978} ;
9079use tokio:: {
9180 sync:: {
@@ -134,6 +123,7 @@ pub(crate) struct Workflows {
134123 local_act_mgr : Option < Arc < LocalActivityManager > > ,
135124 ever_polled : AtomicBool ,
136125 default_versioning_behavior : Option < VersioningBehavior > ,
126+ metrics : MetricsContext ,
137127}
138128
139129pub ( crate ) struct WorkflowBasics {
@@ -176,6 +166,7 @@ impl Workflows {
176166 let ( fetch_tx, fetch_rx) = unbounded_channel ( ) ;
177167 let shutdown_tok = basics. shutdown_token . clone ( ) ;
178168 let task_queue = basics. worker_config . task_queue . clone ( ) ;
169+ let metrics = basics. metrics . clone ( ) ;
179170 let default_versioning_behavior = basics. default_versioning_behavior ;
180171 let extracted_wft_stream = WFTExtractor :: build (
181172 client. clone ( ) ,
@@ -267,6 +258,7 @@ impl Workflows {
267258 local_act_mgr,
268259 ever_polled : AtomicBool :: new ( false ) ,
269260 default_versioning_behavior,
261+ metrics,
270262 }
271263 }
272264
@@ -431,6 +423,10 @@ impl Workflows {
431423 ) ;
432424 self . handle_activation_failed ( run_id, completion_time, new_outcome)
433425 . await ;
426+ self . metrics . with_new_attrs ( [ metrics:: failure_reason (
427+ FailureReason :: GrpcMessageTooLarge
428+ ) ] )
429+ . wf_task_failed ( ) ;
434430 return Err ( e) ;
435431 }
436432 e => {
0 commit comments