@@ -404,16 +404,23 @@ impl MutableFinalize for HistoryForReplayTunnelHandle {}
404404////////////////////////////////////////////////////////////////////////////////////////////////////
405405
406406mod config {
407- use std:: { sync:: Arc , time:: Duration } ;
407+ use std:: {
408+ collections:: { HashMap , HashSet } ,
409+ sync:: Arc ,
410+ time:: Duration ,
411+ } ;
408412
409413 use temporal_sdk_core:: {
410414 ResourceBasedSlotsOptions , ResourceBasedSlotsOptionsBuilder , ResourceSlotOptions ,
411415 SlotSupplierOptions as CoreSlotSupplierOptions , TunerHolder , TunerHolderOptionsBuilder ,
412- api:: worker:: {
413- ActivitySlotKind , LocalActivitySlotKind , PollerBehavior as CorePollerBehavior ,
414- SlotKind , WorkerConfig , WorkerConfigBuilder , WorkerConfigBuilderError ,
415- WorkerDeploymentOptions as CoreWorkerDeploymentOptions ,
416- WorkerDeploymentVersion as CoreWorkerDeploymentVersion , WorkflowSlotKind ,
416+ api:: {
417+ errors:: WorkflowErrorType as CoreWorkflowErrorType ,
418+ worker:: {
419+ ActivitySlotKind , LocalActivitySlotKind , PollerBehavior as CorePollerBehavior ,
420+ SlotKind , WorkerConfig , WorkerConfigBuilder , WorkerConfigBuilderError ,
421+ WorkerDeploymentOptions as CoreWorkerDeploymentOptions ,
422+ WorkerDeploymentVersion as CoreWorkerDeploymentVersion , WorkflowSlotKind ,
423+ } ,
417424 } ,
418425 protos:: temporal:: api:: enums:: v1:: VersioningBehavior as CoreVersioningBehavior ,
419426 } ;
@@ -447,6 +454,8 @@ mod config {
447454 max_activities_per_second : Option < f64 > ,
448455 max_task_queue_activities_per_second : Option < f64 > ,
449456 shutdown_grace_time : Option < Duration > ,
457+ workflow_failure_errors : HashSet < WorkflowErrorType > ,
458+ workflow_types_to_failure_errors : HashMap < String , HashSet < WorkflowErrorType > > ,
450459 }
451460
452461 #[ derive( TryFromJs ) ]
@@ -513,6 +522,10 @@ mod config {
513522 . max_task_queue_activities_per_second ( self . max_task_queue_activities_per_second )
514523 . max_worker_activities_per_second ( self . max_activities_per_second )
515524 . graceful_shutdown_period ( self . shutdown_grace_time )
525+ . workflow_failure_errors ( into_core_workflow_error_set ( self . workflow_failure_errors ) )
526+ . workflow_types_to_failure_errors ( into_core_workflow_error_map_of_sets (
527+ self . workflow_types_to_failure_errors ,
528+ ) )
516529 . build ( )
517530 }
518531 }
@@ -584,6 +597,33 @@ mod config {
584597 }
585598 }
586599
600+ #[ derive( TryFromJs , Hash , Eq , PartialEq ) ]
601+ pub enum WorkflowErrorType {
602+ Nondeterminism ,
603+ }
604+
605+ impl From < WorkflowErrorType > for CoreWorkflowErrorType {
606+ fn from ( val : WorkflowErrorType ) -> Self {
607+ match val {
608+ WorkflowErrorType :: Nondeterminism => Self :: Nondeterminism ,
609+ }
610+ }
611+ }
612+
613+ fn into_core_workflow_error_set (
614+ val : HashSet < WorkflowErrorType > ,
615+ ) -> HashSet < CoreWorkflowErrorType > {
616+ val. into_iter ( ) . map ( Into :: into) . collect ( )
617+ }
618+
619+ fn into_core_workflow_error_map_of_sets (
620+ val : HashMap < String , HashSet < WorkflowErrorType > > ,
621+ ) -> HashMap < String , HashSet < CoreWorkflowErrorType > > {
622+ val. into_iter ( )
623+ . map ( |( k, v) | ( k, into_core_workflow_error_set ( v) ) )
624+ . collect ( )
625+ }
626+
587627 #[ derive( TryFromJs ) ]
588628 #[ allow( clippy:: struct_field_names) ]
589629 pub ( super ) struct WorkerTuner {
0 commit comments