From ac7be081bc31d7a7bcb255ac87f114e5c6340089 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Tue, 3 Feb 2026 12:06:21 -0800 Subject: [PATCH 01/14] Define CancelActivityNexusTask transfer task type --- api/enums/v1/task.go-helpers.pb.go | 1 + api/enums/v1/task.pb.go | 11 +- api/persistence/v1/executions.pb.go | 499 ++++++++++-------- common/dynamicconfig/constants.go | 5 + .../serialization/task_serializers.go | 38 ++ .../serialization/task_serializers_test.go | 13 + .../temporal/server/api/enums/v1/task.proto | 3 + .../api/persistence/v1/executions.proto | 10 + .../workflow_task_completed_handler.go | 8 + service/history/configs/config.go | 22 +- .../tasks/cancel_activity_nexus_task.go | 71 +++ service/history/tasks/utils.go | 6 + .../transfer_queue_active_task_executor.go | 3 + .../transfer_queue_standby_task_executor.go | 3 + 14 files changed, 470 insertions(+), 223 deletions(-) create mode 100644 service/history/tasks/cancel_activity_nexus_task.go diff --git a/api/enums/v1/task.go-helpers.pb.go b/api/enums/v1/task.go-helpers.pb.go index fdf9ecdb97..4a171504f0 100644 --- a/api/enums/v1/task.go-helpers.pb.go +++ b/api/enums/v1/task.go-helpers.pb.go @@ -57,6 +57,7 @@ var ( "ReplicationSyncVersionedTransition": 31, "ChasmPure": 32, "Chasm": 33, + "TransferCancelActivityNexus": 34, } ) diff --git a/api/enums/v1/task.pb.go b/api/enums/v1/task.pb.go index 2b902a95b2..0d382d7c91 100644 --- a/api/enums/v1/task.pb.go +++ b/api/enums/v1/task.pb.go @@ -126,6 +126,8 @@ const ( TASK_TYPE_CHASM_PURE TaskType = 32 // A task with side effects generated by a CHASM component. TASK_TYPE_CHASM TaskType = 33 + // A task to cancel a running activity via Nexus control queue. + TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS TaskType = 34 ) // Enum value maps for TaskType. @@ -162,6 +164,7 @@ var ( 31: "TASK_TYPE_REPLICATION_SYNC_VERSIONED_TRANSITION", 32: "TASK_TYPE_CHASM_PURE", 33: "TASK_TYPE_CHASM", + 34: "TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS", } TaskType_value = map[string]int32{ "TASK_TYPE_UNSPECIFIED": 0, @@ -195,6 +198,7 @@ var ( "TASK_TYPE_REPLICATION_SYNC_VERSIONED_TRANSITION": 31, "TASK_TYPE_CHASM_PURE": 32, "TASK_TYPE_CHASM": 33, + "TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS": 34, } ) @@ -278,6 +282,8 @@ func (x TaskType) String() string { return "ChasmPure" case TASK_TYPE_CHASM: return "Chasm" + case TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS: + return "TransferCancelActivityNexus" default: return strconv.Itoa(int(x)) } @@ -367,7 +373,7 @@ const file_temporal_server_api_enums_v1_task_proto_rawDesc = "" + "TaskSource\x12\x1b\n" + "\x17TASK_SOURCE_UNSPECIFIED\x10\x00\x12\x17\n" + "\x13TASK_SOURCE_HISTORY\x10\x01\x12\x1a\n" + - "\x16TASK_SOURCE_DB_BACKLOG\x10\x02*\xb6\t\n" + + "\x16TASK_SOURCE_DB_BACKLOG\x10\x02*\xe4\t\n" + "\bTaskType\x12\x19\n" + "\x15TASK_TYPE_UNSPECIFIED\x10\x00\x12!\n" + "\x1dTASK_TYPE_REPLICATION_HISTORY\x10\x01\x12'\n" + @@ -400,7 +406,8 @@ const file_temporal_server_api_enums_v1_task_proto_rawDesc = "" + "\x1eTASK_TYPE_REPLICATION_SYNC_HSM\x10\x1e\x123\n" + "/TASK_TYPE_REPLICATION_SYNC_VERSIONED_TRANSITION\x10\x1f\x12\x18\n" + "\x14TASK_TYPE_CHASM_PURE\x10 \x12\x13\n" + - "\x0fTASK_TYPE_CHASM\x10!\"\x04\b\t\x10\t\"\x04\b\v\x10\v\"\x04\b\x17\x10\x17*\\\n" + + "\x0fTASK_TYPE_CHASM\x10!\x12,\n" + + "(TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS\x10\"\"\x04\b\t\x10\t\"\x04\b\v\x10\v\"\x04\b\x17\x10\x17*\\\n" + "\fTaskPriority\x12\x1d\n" + "\x19TASK_PRIORITY_UNSPECIFIED\x10\x00\x12\x16\n" + "\x12TASK_PRIORITY_HIGH\x10\x01\x12\x15\n" + diff --git a/api/persistence/v1/executions.pb.go b/api/persistence/v1/executions.pb.go index d14e49bf16..346fe898fa 100644 --- a/api/persistence/v1/executions.pb.go +++ b/api/persistence/v1/executions.pb.go @@ -1366,6 +1366,7 @@ type TransferTaskInfo struct { // // *TransferTaskInfo_CloseExecutionTaskDetails_ // *TransferTaskInfo_ChasmTaskInfo + // *TransferTaskInfo_CancelActivityNexusTaskDetails_ TaskDetails isTransferTaskInfo_TaskDetails `protobuf_oneof:"task_details"` // Stamp represents the "version" of the entity's internal state for which the transfer task was created. // It increases monotonically when the entity's options are modified. @@ -1528,6 +1529,15 @@ func (x *TransferTaskInfo) GetChasmTaskInfo() *ChasmTaskInfo { return nil } +func (x *TransferTaskInfo) GetCancelActivityNexusTaskDetails() *TransferTaskInfo_CancelActivityNexusTaskDetails { + if x != nil { + if x, ok := x.TaskDetails.(*TransferTaskInfo_CancelActivityNexusTaskDetails_); ok { + return x.CancelActivityNexusTaskDetails + } + } + return nil +} + func (x *TransferTaskInfo) GetStamp() int32 { if x != nil { return x.Stamp @@ -1548,10 +1558,16 @@ type TransferTaskInfo_ChasmTaskInfo struct { ChasmTaskInfo *ChasmTaskInfo `protobuf:"bytes,18,opt,name=chasm_task_info,json=chasmTaskInfo,proto3,oneof"` } +type TransferTaskInfo_CancelActivityNexusTaskDetails_ struct { + CancelActivityNexusTaskDetails *TransferTaskInfo_CancelActivityNexusTaskDetails `protobuf:"bytes,19,opt,name=cancel_activity_nexus_task_details,json=cancelActivityNexusTaskDetails,proto3,oneof"` +} + func (*TransferTaskInfo_CloseExecutionTaskDetails_) isTransferTaskInfo_TaskDetails() {} func (*TransferTaskInfo_ChasmTaskInfo) isTransferTaskInfo_TaskDetails() {} +func (*TransferTaskInfo_CancelActivityNexusTaskDetails_) isTransferTaskInfo_TaskDetails() {} + // replication column type ReplicationTaskInfo struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -4122,6 +4138,59 @@ func (x *TransferTaskInfo_CloseExecutionTaskDetails) GetCanSkipVisibilityArchiva return false } +type TransferTaskInfo_CancelActivityNexusTaskDetails struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Scheduled event IDs of activities to cancel (batched by worker). + ScheduledEventIds []int64 `protobuf:"varint,1,rep,packed,name=scheduled_event_ids,json=scheduledEventIds,proto3" json:"scheduled_event_ids,omitempty"` + WorkerInstanceKey string `protobuf:"bytes,2,opt,name=worker_instance_key,json=workerInstanceKey,proto3" json:"worker_instance_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) Reset() { + *x = TransferTaskInfo_CancelActivityNexusTaskDetails{} + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransferTaskInfo_CancelActivityNexusTaskDetails) ProtoMessage() {} + +func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) ProtoReflect() protoreflect.Message { + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransferTaskInfo_CancelActivityNexusTaskDetails.ProtoReflect.Descriptor instead. +func (*TransferTaskInfo_CancelActivityNexusTaskDetails) Descriptor() ([]byte, []int) { + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{5, 1} +} + +func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) GetScheduledEventIds() []int64 { + if x != nil { + return x.ScheduledEventIds + } + return nil +} + +func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) GetWorkerInstanceKey() string { + if x != nil { + return x.WorkerInstanceKey + } + return "" +} + // Deprecated. Clean up with versioning-2. [cleanup-old-wv] type ActivityInfo_UseWorkflowBuildIdInfo struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -4136,7 +4205,7 @@ type ActivityInfo_UseWorkflowBuildIdInfo struct { func (x *ActivityInfo_UseWorkflowBuildIdInfo) Reset() { *x = ActivityInfo_UseWorkflowBuildIdInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[35] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4148,7 +4217,7 @@ func (x *ActivityInfo_UseWorkflowBuildIdInfo) String() string { func (*ActivityInfo_UseWorkflowBuildIdInfo) ProtoMessage() {} func (x *ActivityInfo_UseWorkflowBuildIdInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[35] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4193,7 +4262,7 @@ type ActivityInfo_PauseInfo struct { func (x *ActivityInfo_PauseInfo) Reset() { *x = ActivityInfo_PauseInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[36] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4205,7 +4274,7 @@ func (x *ActivityInfo_PauseInfo) String() string { func (*ActivityInfo_PauseInfo) ProtoMessage() {} func (x *ActivityInfo_PauseInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[36] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4283,7 +4352,7 @@ type ActivityInfo_PauseInfo_Manual struct { func (x *ActivityInfo_PauseInfo_Manual) Reset() { *x = ActivityInfo_PauseInfo_Manual{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[37] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4295,7 +4364,7 @@ func (x *ActivityInfo_PauseInfo_Manual) String() string { func (*ActivityInfo_PauseInfo_Manual) ProtoMessage() {} func (x *ActivityInfo_PauseInfo_Manual) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[37] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4340,7 +4409,7 @@ type Callback_Nexus struct { func (x *Callback_Nexus) Reset() { *x = Callback_Nexus{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[38] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4352,7 +4421,7 @@ func (x *Callback_Nexus) String() string { func (*Callback_Nexus) ProtoMessage() {} func (x *Callback_Nexus) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[38] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4402,7 +4471,7 @@ type Callback_HSM struct { func (x *Callback_HSM) Reset() { *x = Callback_HSM{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[39] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4414,7 +4483,7 @@ func (x *Callback_HSM) String() string { func (*Callback_HSM) ProtoMessage() {} func (x *Callback_HSM) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[39] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4474,7 +4543,7 @@ type CallbackInfo_WorkflowClosed struct { func (x *CallbackInfo_WorkflowClosed) Reset() { *x = CallbackInfo_WorkflowClosed{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[41] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4486,7 +4555,7 @@ func (x *CallbackInfo_WorkflowClosed) String() string { func (*CallbackInfo_WorkflowClosed) ProtoMessage() {} func (x *CallbackInfo_WorkflowClosed) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[41] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4514,7 +4583,7 @@ type CallbackInfo_Trigger struct { func (x *CallbackInfo_Trigger) Reset() { *x = CallbackInfo_Trigger{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[42] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4526,7 +4595,7 @@ func (x *CallbackInfo_Trigger) String() string { func (*CallbackInfo_Trigger) ProtoMessage() {} func (x *CallbackInfo_Trigger) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[42] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4736,7 +4805,8 @@ const file_temporal_server_api_persistence_v1_executions_proto_rawDesc = "" + "\rRequestIDInfo\x12?\n" + "\n" + "event_type\x18\x01 \x01(\x0e2 .temporal.api.enums.v1.EventTypeR\teventType\x12\x19\n" + - "\bevent_id\x18\x02 \x01(\x03R\aeventId\"\xdf\a\n" + + "\bevent_id\x18\x02 \x01(\x03R\aeventId\"\x86\n" + + "\n" + "\x10TransferTaskInfo\x12!\n" + "\fnamespace_id\x18\x01 \x01(\tR\vnamespaceId\x12\x1f\n" + "\vworkflow_id\x18\x02 \x01(\tR\n" + @@ -4756,10 +4826,14 @@ const file_temporal_server_api_persistence_v1_executions_proto_rawDesc = "" + "\x0fvisibility_time\x18\r \x01(\v2\x1a.google.protobuf.TimestampR\x0evisibilityTime\x12,\n" + "\x12delete_after_close\x18\x0f \x01(\bR\x10deleteAfterClose\x12\x91\x01\n" + "\x1cclose_execution_task_details\x18\x10 \x01(\v2N.temporal.server.api.persistence.v1.TransferTaskInfo.CloseExecutionTaskDetailsH\x00R\x19closeExecutionTaskDetails\x12[\n" + - "\x0fchasm_task_info\x18\x12 \x01(\v21.temporal.server.api.persistence.v1.ChasmTaskInfoH\x00R\rchasmTaskInfo\x12\x14\n" + + "\x0fchasm_task_info\x18\x12 \x01(\v21.temporal.server.api.persistence.v1.ChasmTaskInfoH\x00R\rchasmTaskInfo\x12\xa1\x01\n" + + "\"cancel_activity_nexus_task_details\x18\x13 \x01(\v2S.temporal.server.api.persistence.v1.TransferTaskInfo.CancelActivityNexusTaskDetailsH\x00R\x1ecancelActivityNexusTaskDetails\x12\x14\n" + "\x05stamp\x18\x11 \x01(\x05R\x05stamp\x1a\\\n" + "\x19CloseExecutionTaskDetails\x12?\n" + - "\x1ccan_skip_visibility_archival\x18\x01 \x01(\bR\x19canSkipVisibilityArchivalB\x0e\n" + + "\x1ccan_skip_visibility_archival\x18\x01 \x01(\bR\x19canSkipVisibilityArchival\x1a\x80\x01\n" + + "\x1eCancelActivityNexusTaskDetails\x12.\n" + + "\x13scheduled_event_ids\x18\x01 \x03(\x03R\x11scheduledEventIds\x12.\n" + + "\x13worker_instance_key\x18\x02 \x01(\tR\x11workerInstanceKeyB\x0e\n" + "\ftask_detailsJ\x04\b\x0e\x10\x0f\"\xd8\b\n" + "\x13ReplicationTaskInfo\x12!\n" + "\fnamespace_id\x18\x01 \x01(\tR\vnamespaceId\x12\x1f\n" + @@ -5051,7 +5125,7 @@ func file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP() []by return file_temporal_server_api_persistence_v1_executions_proto_rawDescData } -var file_temporal_server_api_persistence_v1_executions_proto_msgTypes = make([]protoimpl.MessageInfo, 43) +var file_temporal_server_api_persistence_v1_executions_proto_msgTypes = make([]protoimpl.MessageInfo, 44) var file_temporal_server_api_persistence_v1_executions_proto_goTypes = []any{ (*ShardInfo)(nil), // 0: temporal.server.api.persistence.v1.ShardInfo (*WorkflowExecutionInfo)(nil), // 1: temporal.server.api.persistence.v1.WorkflowExecutionInfo @@ -5087,209 +5161,211 @@ var file_temporal_server_api_persistence_v1_executions_proto_goTypes = []any{ nil, // 31: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SubStateMachinesByTypeEntry nil, // 32: temporal.server.api.persistence.v1.WorkflowExecutionInfo.ChildrenInitializedPostResetPointEntry nil, // 33: temporal.server.api.persistence.v1.WorkflowExecutionState.RequestIdsEntry - (*TransferTaskInfo_CloseExecutionTaskDetails)(nil), // 34: temporal.server.api.persistence.v1.TransferTaskInfo.CloseExecutionTaskDetails - (*ActivityInfo_UseWorkflowBuildIdInfo)(nil), // 35: temporal.server.api.persistence.v1.ActivityInfo.UseWorkflowBuildIdInfo - (*ActivityInfo_PauseInfo)(nil), // 36: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo - (*ActivityInfo_PauseInfo_Manual)(nil), // 37: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.Manual - (*Callback_Nexus)(nil), // 38: temporal.server.api.persistence.v1.Callback.Nexus - (*Callback_HSM)(nil), // 39: temporal.server.api.persistence.v1.Callback.HSM - nil, // 40: temporal.server.api.persistence.v1.Callback.Nexus.HeaderEntry - (*CallbackInfo_WorkflowClosed)(nil), // 41: temporal.server.api.persistence.v1.CallbackInfo.WorkflowClosed - (*CallbackInfo_Trigger)(nil), // 42: temporal.server.api.persistence.v1.CallbackInfo.Trigger - (*timestamppb.Timestamp)(nil), // 43: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 44: google.protobuf.Duration - (v1.WorkflowTaskType)(0), // 45: temporal.server.api.enums.v1.WorkflowTaskType - (v11.SuggestContinueAsNewReason)(0), // 46: temporal.api.enums.v1.SuggestContinueAsNewReason - (*v12.ResetPoints)(nil), // 47: temporal.api.workflow.v1.ResetPoints - (*v14.VersionHistories)(nil), // 48: temporal.server.api.history.v1.VersionHistories - (*v15.VectorClock)(nil), // 49: temporal.server.api.clock.v1.VectorClock - (*v16.BaseExecutionInfo)(nil), // 50: temporal.server.api.workflow.v1.BaseExecutionInfo - (*v13.WorkerVersionStamp)(nil), // 51: temporal.api.common.v1.WorkerVersionStamp - (*VersionedTransition)(nil), // 52: temporal.server.api.persistence.v1.VersionedTransition - (*StateMachineTimerGroup)(nil), // 53: temporal.server.api.persistence.v1.StateMachineTimerGroup - (*StateMachineTombstoneBatch)(nil), // 54: temporal.server.api.persistence.v1.StateMachineTombstoneBatch - (*v12.WorkflowExecutionVersioningInfo)(nil), // 55: temporal.api.workflow.v1.WorkflowExecutionVersioningInfo - (*v13.Priority)(nil), // 56: temporal.api.common.v1.Priority - (v11.WorkflowTaskFailedCause)(0), // 57: temporal.api.enums.v1.WorkflowTaskFailedCause - (v11.TimeoutType)(0), // 58: temporal.api.enums.v1.TimeoutType - (v1.WorkflowExecutionState)(0), // 59: temporal.server.api.enums.v1.WorkflowExecutionState - (v11.WorkflowExecutionStatus)(0), // 60: temporal.api.enums.v1.WorkflowExecutionStatus - (v11.EventType)(0), // 61: temporal.api.enums.v1.EventType - (v1.TaskType)(0), // 62: temporal.server.api.enums.v1.TaskType - (*ChasmTaskInfo)(nil), // 63: temporal.server.api.persistence.v1.ChasmTaskInfo - (v1.TaskPriority)(0), // 64: temporal.server.api.enums.v1.TaskPriority - (*v14.VersionHistoryItem)(nil), // 65: temporal.server.api.history.v1.VersionHistoryItem - (v1.WorkflowBackoffType)(0), // 66: temporal.server.api.enums.v1.WorkflowBackoffType - (*StateMachineTaskInfo)(nil), // 67: temporal.server.api.persistence.v1.StateMachineTaskInfo - (*v17.Failure)(nil), // 68: temporal.api.failure.v1.Failure - (*v13.Payloads)(nil), // 69: temporal.api.common.v1.Payloads - (*v13.ActivityType)(nil), // 70: temporal.api.common.v1.ActivityType - (*v18.Deployment)(nil), // 71: temporal.api.deployment.v1.Deployment - (*v18.WorkerDeploymentVersion)(nil), // 72: temporal.api.deployment.v1.WorkerDeploymentVersion - (v11.ParentClosePolicy)(0), // 73: temporal.api.enums.v1.ParentClosePolicy - (v1.ChecksumFlavor)(0), // 74: temporal.server.api.enums.v1.ChecksumFlavor - (*v13.Link)(nil), // 75: temporal.api.common.v1.Link - (*v19.HistoryEvent)(nil), // 76: temporal.api.history.v1.HistoryEvent - (v1.CallbackState)(0), // 77: temporal.server.api.enums.v1.CallbackState - (v1.NexusOperationState)(0), // 78: temporal.server.api.enums.v1.NexusOperationState - (v11.NexusOperationCancellationState)(0), // 79: temporal.api.enums.v1.NexusOperationCancellationState - (*QueueState)(nil), // 80: temporal.server.api.persistence.v1.QueueState - (*v13.Payload)(nil), // 81: temporal.api.common.v1.Payload - (*UpdateInfo)(nil), // 82: temporal.server.api.persistence.v1.UpdateInfo - (*StateMachineMap)(nil), // 83: temporal.server.api.persistence.v1.StateMachineMap - (*StateMachineRef)(nil), // 84: temporal.server.api.persistence.v1.StateMachineRef + (*TransferTaskInfo_CloseExecutionTaskDetails)(nil), // 34: temporal.server.api.persistence.v1.TransferTaskInfo.CloseExecutionTaskDetails + (*TransferTaskInfo_CancelActivityNexusTaskDetails)(nil), // 35: temporal.server.api.persistence.v1.TransferTaskInfo.CancelActivityNexusTaskDetails + (*ActivityInfo_UseWorkflowBuildIdInfo)(nil), // 36: temporal.server.api.persistence.v1.ActivityInfo.UseWorkflowBuildIdInfo + (*ActivityInfo_PauseInfo)(nil), // 37: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo + (*ActivityInfo_PauseInfo_Manual)(nil), // 38: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.Manual + (*Callback_Nexus)(nil), // 39: temporal.server.api.persistence.v1.Callback.Nexus + (*Callback_HSM)(nil), // 40: temporal.server.api.persistence.v1.Callback.HSM + nil, // 41: temporal.server.api.persistence.v1.Callback.Nexus.HeaderEntry + (*CallbackInfo_WorkflowClosed)(nil), // 42: temporal.server.api.persistence.v1.CallbackInfo.WorkflowClosed + (*CallbackInfo_Trigger)(nil), // 43: temporal.server.api.persistence.v1.CallbackInfo.Trigger + (*timestamppb.Timestamp)(nil), // 44: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 45: google.protobuf.Duration + (v1.WorkflowTaskType)(0), // 46: temporal.server.api.enums.v1.WorkflowTaskType + (v11.SuggestContinueAsNewReason)(0), // 47: temporal.api.enums.v1.SuggestContinueAsNewReason + (*v12.ResetPoints)(nil), // 48: temporal.api.workflow.v1.ResetPoints + (*v14.VersionHistories)(nil), // 49: temporal.server.api.history.v1.VersionHistories + (*v15.VectorClock)(nil), // 50: temporal.server.api.clock.v1.VectorClock + (*v16.BaseExecutionInfo)(nil), // 51: temporal.server.api.workflow.v1.BaseExecutionInfo + (*v13.WorkerVersionStamp)(nil), // 52: temporal.api.common.v1.WorkerVersionStamp + (*VersionedTransition)(nil), // 53: temporal.server.api.persistence.v1.VersionedTransition + (*StateMachineTimerGroup)(nil), // 54: temporal.server.api.persistence.v1.StateMachineTimerGroup + (*StateMachineTombstoneBatch)(nil), // 55: temporal.server.api.persistence.v1.StateMachineTombstoneBatch + (*v12.WorkflowExecutionVersioningInfo)(nil), // 56: temporal.api.workflow.v1.WorkflowExecutionVersioningInfo + (*v13.Priority)(nil), // 57: temporal.api.common.v1.Priority + (v11.WorkflowTaskFailedCause)(0), // 58: temporal.api.enums.v1.WorkflowTaskFailedCause + (v11.TimeoutType)(0), // 59: temporal.api.enums.v1.TimeoutType + (v1.WorkflowExecutionState)(0), // 60: temporal.server.api.enums.v1.WorkflowExecutionState + (v11.WorkflowExecutionStatus)(0), // 61: temporal.api.enums.v1.WorkflowExecutionStatus + (v11.EventType)(0), // 62: temporal.api.enums.v1.EventType + (v1.TaskType)(0), // 63: temporal.server.api.enums.v1.TaskType + (*ChasmTaskInfo)(nil), // 64: temporal.server.api.persistence.v1.ChasmTaskInfo + (v1.TaskPriority)(0), // 65: temporal.server.api.enums.v1.TaskPriority + (*v14.VersionHistoryItem)(nil), // 66: temporal.server.api.history.v1.VersionHistoryItem + (v1.WorkflowBackoffType)(0), // 67: temporal.server.api.enums.v1.WorkflowBackoffType + (*StateMachineTaskInfo)(nil), // 68: temporal.server.api.persistence.v1.StateMachineTaskInfo + (*v17.Failure)(nil), // 69: temporal.api.failure.v1.Failure + (*v13.Payloads)(nil), // 70: temporal.api.common.v1.Payloads + (*v13.ActivityType)(nil), // 71: temporal.api.common.v1.ActivityType + (*v18.Deployment)(nil), // 72: temporal.api.deployment.v1.Deployment + (*v18.WorkerDeploymentVersion)(nil), // 73: temporal.api.deployment.v1.WorkerDeploymentVersion + (v11.ParentClosePolicy)(0), // 74: temporal.api.enums.v1.ParentClosePolicy + (v1.ChecksumFlavor)(0), // 75: temporal.server.api.enums.v1.ChecksumFlavor + (*v13.Link)(nil), // 76: temporal.api.common.v1.Link + (*v19.HistoryEvent)(nil), // 77: temporal.api.history.v1.HistoryEvent + (v1.CallbackState)(0), // 78: temporal.server.api.enums.v1.CallbackState + (v1.NexusOperationState)(0), // 79: temporal.server.api.enums.v1.NexusOperationState + (v11.NexusOperationCancellationState)(0), // 80: temporal.api.enums.v1.NexusOperationCancellationState + (*QueueState)(nil), // 81: temporal.server.api.persistence.v1.QueueState + (*v13.Payload)(nil), // 82: temporal.api.common.v1.Payload + (*UpdateInfo)(nil), // 83: temporal.server.api.persistence.v1.UpdateInfo + (*StateMachineMap)(nil), // 84: temporal.server.api.persistence.v1.StateMachineMap + (*StateMachineRef)(nil), // 85: temporal.server.api.persistence.v1.StateMachineRef } var file_temporal_server_api_persistence_v1_executions_proto_depIdxs = []int32{ - 43, // 0: temporal.server.api.persistence.v1.ShardInfo.update_time:type_name -> google.protobuf.Timestamp + 44, // 0: temporal.server.api.persistence.v1.ShardInfo.update_time:type_name -> google.protobuf.Timestamp 26, // 1: temporal.server.api.persistence.v1.ShardInfo.replication_dlq_ack_level:type_name -> temporal.server.api.persistence.v1.ShardInfo.ReplicationDlqAckLevelEntry 27, // 2: temporal.server.api.persistence.v1.ShardInfo.queue_states:type_name -> temporal.server.api.persistence.v1.ShardInfo.QueueStatesEntry - 44, // 3: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_execution_timeout:type_name -> google.protobuf.Duration - 44, // 4: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_run_timeout:type_name -> google.protobuf.Duration - 44, // 5: temporal.server.api.persistence.v1.WorkflowExecutionInfo.default_workflow_task_timeout:type_name -> google.protobuf.Duration - 43, // 6: temporal.server.api.persistence.v1.WorkflowExecutionInfo.start_time:type_name -> google.protobuf.Timestamp - 43, // 7: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_update_time:type_name -> google.protobuf.Timestamp - 44, // 8: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_timeout:type_name -> google.protobuf.Duration - 43, // 9: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_started_time:type_name -> google.protobuf.Timestamp - 43, // 10: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_scheduled_time:type_name -> google.protobuf.Timestamp - 43, // 11: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_original_scheduled_time:type_name -> google.protobuf.Timestamp - 45, // 12: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_type:type_name -> temporal.server.api.enums.v1.WorkflowTaskType - 46, // 13: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_suggest_continue_as_new_reasons:type_name -> temporal.api.enums.v1.SuggestContinueAsNewReason - 44, // 14: temporal.server.api.persistence.v1.WorkflowExecutionInfo.sticky_schedule_to_start_timeout:type_name -> google.protobuf.Duration - 44, // 15: temporal.server.api.persistence.v1.WorkflowExecutionInfo.retry_initial_interval:type_name -> google.protobuf.Duration - 44, // 16: temporal.server.api.persistence.v1.WorkflowExecutionInfo.retry_maximum_interval:type_name -> google.protobuf.Duration - 43, // 17: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_execution_expiration_time:type_name -> google.protobuf.Timestamp - 47, // 18: temporal.server.api.persistence.v1.WorkflowExecutionInfo.auto_reset_points:type_name -> temporal.api.workflow.v1.ResetPoints + 45, // 3: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_execution_timeout:type_name -> google.protobuf.Duration + 45, // 4: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_run_timeout:type_name -> google.protobuf.Duration + 45, // 5: temporal.server.api.persistence.v1.WorkflowExecutionInfo.default_workflow_task_timeout:type_name -> google.protobuf.Duration + 44, // 6: temporal.server.api.persistence.v1.WorkflowExecutionInfo.start_time:type_name -> google.protobuf.Timestamp + 44, // 7: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_update_time:type_name -> google.protobuf.Timestamp + 45, // 8: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_timeout:type_name -> google.protobuf.Duration + 44, // 9: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_started_time:type_name -> google.protobuf.Timestamp + 44, // 10: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_scheduled_time:type_name -> google.protobuf.Timestamp + 44, // 11: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_original_scheduled_time:type_name -> google.protobuf.Timestamp + 46, // 12: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_type:type_name -> temporal.server.api.enums.v1.WorkflowTaskType + 47, // 13: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_suggest_continue_as_new_reasons:type_name -> temporal.api.enums.v1.SuggestContinueAsNewReason + 45, // 14: temporal.server.api.persistence.v1.WorkflowExecutionInfo.sticky_schedule_to_start_timeout:type_name -> google.protobuf.Duration + 45, // 15: temporal.server.api.persistence.v1.WorkflowExecutionInfo.retry_initial_interval:type_name -> google.protobuf.Duration + 45, // 16: temporal.server.api.persistence.v1.WorkflowExecutionInfo.retry_maximum_interval:type_name -> google.protobuf.Duration + 44, // 17: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_execution_expiration_time:type_name -> google.protobuf.Timestamp + 48, // 18: temporal.server.api.persistence.v1.WorkflowExecutionInfo.auto_reset_points:type_name -> temporal.api.workflow.v1.ResetPoints 28, // 19: temporal.server.api.persistence.v1.WorkflowExecutionInfo.search_attributes:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.SearchAttributesEntry 29, // 20: temporal.server.api.persistence.v1.WorkflowExecutionInfo.memo:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.MemoEntry - 48, // 21: temporal.server.api.persistence.v1.WorkflowExecutionInfo.version_histories:type_name -> temporal.server.api.history.v1.VersionHistories + 49, // 21: temporal.server.api.persistence.v1.WorkflowExecutionInfo.version_histories:type_name -> temporal.server.api.history.v1.VersionHistories 2, // 22: temporal.server.api.persistence.v1.WorkflowExecutionInfo.execution_stats:type_name -> temporal.server.api.persistence.v1.ExecutionStats - 43, // 23: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_run_expiration_time:type_name -> google.protobuf.Timestamp - 43, // 24: temporal.server.api.persistence.v1.WorkflowExecutionInfo.execution_time:type_name -> google.protobuf.Timestamp - 49, // 25: temporal.server.api.persistence.v1.WorkflowExecutionInfo.parent_clock:type_name -> temporal.server.api.clock.v1.VectorClock - 43, // 26: temporal.server.api.persistence.v1.WorkflowExecutionInfo.close_time:type_name -> google.protobuf.Timestamp - 50, // 27: temporal.server.api.persistence.v1.WorkflowExecutionInfo.base_execution_info:type_name -> temporal.server.api.workflow.v1.BaseExecutionInfo - 51, // 28: temporal.server.api.persistence.v1.WorkflowExecutionInfo.most_recent_worker_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp + 44, // 23: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_run_expiration_time:type_name -> google.protobuf.Timestamp + 44, // 24: temporal.server.api.persistence.v1.WorkflowExecutionInfo.execution_time:type_name -> google.protobuf.Timestamp + 50, // 25: temporal.server.api.persistence.v1.WorkflowExecutionInfo.parent_clock:type_name -> temporal.server.api.clock.v1.VectorClock + 44, // 26: temporal.server.api.persistence.v1.WorkflowExecutionInfo.close_time:type_name -> google.protobuf.Timestamp + 51, // 27: temporal.server.api.persistence.v1.WorkflowExecutionInfo.base_execution_info:type_name -> temporal.server.api.workflow.v1.BaseExecutionInfo + 52, // 28: temporal.server.api.persistence.v1.WorkflowExecutionInfo.most_recent_worker_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp 30, // 29: temporal.server.api.persistence.v1.WorkflowExecutionInfo.update_infos:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.UpdateInfosEntry - 52, // 30: temporal.server.api.persistence.v1.WorkflowExecutionInfo.transition_history:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 53, // 30: temporal.server.api.persistence.v1.WorkflowExecutionInfo.transition_history:type_name -> temporal.server.api.persistence.v1.VersionedTransition 31, // 31: temporal.server.api.persistence.v1.WorkflowExecutionInfo.sub_state_machines_by_type:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.SubStateMachinesByTypeEntry - 53, // 32: temporal.server.api.persistence.v1.WorkflowExecutionInfo.state_machine_timers:type_name -> temporal.server.api.persistence.v1.StateMachineTimerGroup - 52, // 33: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 52, // 34: temporal.server.api.persistence.v1.WorkflowExecutionInfo.visibility_last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 52, // 35: temporal.server.api.persistence.v1.WorkflowExecutionInfo.signal_request_ids_last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 54, // 36: temporal.server.api.persistence.v1.WorkflowExecutionInfo.sub_state_machine_tombstone_batches:type_name -> temporal.server.api.persistence.v1.StateMachineTombstoneBatch - 55, // 37: temporal.server.api.persistence.v1.WorkflowExecutionInfo.versioning_info:type_name -> temporal.api.workflow.v1.WorkflowExecutionVersioningInfo - 52, // 38: temporal.server.api.persistence.v1.WorkflowExecutionInfo.previous_transition_history:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 52, // 39: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_transition_history_break_point:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 54, // 32: temporal.server.api.persistence.v1.WorkflowExecutionInfo.state_machine_timers:type_name -> temporal.server.api.persistence.v1.StateMachineTimerGroup + 53, // 33: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 53, // 34: temporal.server.api.persistence.v1.WorkflowExecutionInfo.visibility_last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 53, // 35: temporal.server.api.persistence.v1.WorkflowExecutionInfo.signal_request_ids_last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 55, // 36: temporal.server.api.persistence.v1.WorkflowExecutionInfo.sub_state_machine_tombstone_batches:type_name -> temporal.server.api.persistence.v1.StateMachineTombstoneBatch + 56, // 37: temporal.server.api.persistence.v1.WorkflowExecutionInfo.versioning_info:type_name -> temporal.api.workflow.v1.WorkflowExecutionVersioningInfo + 53, // 38: temporal.server.api.persistence.v1.WorkflowExecutionInfo.previous_transition_history:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 53, // 39: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_transition_history_break_point:type_name -> temporal.server.api.persistence.v1.VersionedTransition 32, // 40: temporal.server.api.persistence.v1.WorkflowExecutionInfo.children_initialized_post_reset_point:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.ChildrenInitializedPostResetPointEntry - 56, // 41: temporal.server.api.persistence.v1.WorkflowExecutionInfo.priority:type_name -> temporal.api.common.v1.Priority + 57, // 41: temporal.server.api.persistence.v1.WorkflowExecutionInfo.priority:type_name -> temporal.api.common.v1.Priority 25, // 42: temporal.server.api.persistence.v1.WorkflowExecutionInfo.pause_info:type_name -> temporal.server.api.persistence.v1.WorkflowPauseInfo - 57, // 43: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_workflow_task_failure_cause:type_name -> temporal.api.enums.v1.WorkflowTaskFailedCause - 58, // 44: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_workflow_task_timed_out_type:type_name -> temporal.api.enums.v1.TimeoutType - 59, // 45: temporal.server.api.persistence.v1.WorkflowExecutionState.state:type_name -> temporal.server.api.enums.v1.WorkflowExecutionState - 60, // 46: temporal.server.api.persistence.v1.WorkflowExecutionState.status:type_name -> temporal.api.enums.v1.WorkflowExecutionStatus - 52, // 47: temporal.server.api.persistence.v1.WorkflowExecutionState.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 43, // 48: temporal.server.api.persistence.v1.WorkflowExecutionState.start_time:type_name -> google.protobuf.Timestamp + 58, // 43: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_workflow_task_failure_cause:type_name -> temporal.api.enums.v1.WorkflowTaskFailedCause + 59, // 44: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_workflow_task_timed_out_type:type_name -> temporal.api.enums.v1.TimeoutType + 60, // 45: temporal.server.api.persistence.v1.WorkflowExecutionState.state:type_name -> temporal.server.api.enums.v1.WorkflowExecutionState + 61, // 46: temporal.server.api.persistence.v1.WorkflowExecutionState.status:type_name -> temporal.api.enums.v1.WorkflowExecutionStatus + 53, // 47: temporal.server.api.persistence.v1.WorkflowExecutionState.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 44, // 48: temporal.server.api.persistence.v1.WorkflowExecutionState.start_time:type_name -> google.protobuf.Timestamp 33, // 49: temporal.server.api.persistence.v1.WorkflowExecutionState.request_ids:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionState.RequestIdsEntry - 61, // 50: temporal.server.api.persistence.v1.RequestIDInfo.event_type:type_name -> temporal.api.enums.v1.EventType - 62, // 51: temporal.server.api.persistence.v1.TransferTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 43, // 52: temporal.server.api.persistence.v1.TransferTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 62, // 50: temporal.server.api.persistence.v1.RequestIDInfo.event_type:type_name -> temporal.api.enums.v1.EventType + 63, // 51: temporal.server.api.persistence.v1.TransferTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 44, // 52: temporal.server.api.persistence.v1.TransferTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp 34, // 53: temporal.server.api.persistence.v1.TransferTaskInfo.close_execution_task_details:type_name -> temporal.server.api.persistence.v1.TransferTaskInfo.CloseExecutionTaskDetails - 63, // 54: temporal.server.api.persistence.v1.TransferTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo - 62, // 55: temporal.server.api.persistence.v1.ReplicationTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 43, // 56: temporal.server.api.persistence.v1.ReplicationTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 64, // 57: temporal.server.api.persistence.v1.ReplicationTaskInfo.priority:type_name -> temporal.server.api.enums.v1.TaskPriority - 52, // 58: temporal.server.api.persistence.v1.ReplicationTaskInfo.versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 6, // 59: temporal.server.api.persistence.v1.ReplicationTaskInfo.task_equivalents:type_name -> temporal.server.api.persistence.v1.ReplicationTaskInfo - 65, // 60: temporal.server.api.persistence.v1.ReplicationTaskInfo.last_version_history_item:type_name -> temporal.server.api.history.v1.VersionHistoryItem - 62, // 61: temporal.server.api.persistence.v1.VisibilityTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 43, // 62: temporal.server.api.persistence.v1.VisibilityTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 43, // 63: temporal.server.api.persistence.v1.VisibilityTaskInfo.close_time:type_name -> google.protobuf.Timestamp - 63, // 64: temporal.server.api.persistence.v1.VisibilityTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo - 62, // 65: temporal.server.api.persistence.v1.TimerTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 58, // 66: temporal.server.api.persistence.v1.TimerTaskInfo.timeout_type:type_name -> temporal.api.enums.v1.TimeoutType - 66, // 67: temporal.server.api.persistence.v1.TimerTaskInfo.workflow_backoff_type:type_name -> temporal.server.api.enums.v1.WorkflowBackoffType - 43, // 68: temporal.server.api.persistence.v1.TimerTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 63, // 69: temporal.server.api.persistence.v1.TimerTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo - 62, // 70: temporal.server.api.persistence.v1.ArchivalTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 43, // 71: temporal.server.api.persistence.v1.ArchivalTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 62, // 72: temporal.server.api.persistence.v1.OutboundTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 43, // 73: temporal.server.api.persistence.v1.OutboundTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 67, // 74: temporal.server.api.persistence.v1.OutboundTaskInfo.state_machine_info:type_name -> temporal.server.api.persistence.v1.StateMachineTaskInfo - 63, // 75: temporal.server.api.persistence.v1.OutboundTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo - 43, // 76: temporal.server.api.persistence.v1.ActivityInfo.scheduled_time:type_name -> google.protobuf.Timestamp - 43, // 77: temporal.server.api.persistence.v1.ActivityInfo.started_time:type_name -> google.protobuf.Timestamp - 44, // 78: temporal.server.api.persistence.v1.ActivityInfo.schedule_to_start_timeout:type_name -> google.protobuf.Duration - 44, // 79: temporal.server.api.persistence.v1.ActivityInfo.schedule_to_close_timeout:type_name -> google.protobuf.Duration - 44, // 80: temporal.server.api.persistence.v1.ActivityInfo.start_to_close_timeout:type_name -> google.protobuf.Duration - 44, // 81: temporal.server.api.persistence.v1.ActivityInfo.heartbeat_timeout:type_name -> google.protobuf.Duration - 44, // 82: temporal.server.api.persistence.v1.ActivityInfo.retry_initial_interval:type_name -> google.protobuf.Duration - 44, // 83: temporal.server.api.persistence.v1.ActivityInfo.retry_maximum_interval:type_name -> google.protobuf.Duration - 43, // 84: temporal.server.api.persistence.v1.ActivityInfo.retry_expiration_time:type_name -> google.protobuf.Timestamp - 68, // 85: temporal.server.api.persistence.v1.ActivityInfo.retry_last_failure:type_name -> temporal.api.failure.v1.Failure - 69, // 86: temporal.server.api.persistence.v1.ActivityInfo.last_heartbeat_details:type_name -> temporal.api.common.v1.Payloads - 43, // 87: temporal.server.api.persistence.v1.ActivityInfo.last_heartbeat_update_time:type_name -> google.protobuf.Timestamp - 70, // 88: temporal.server.api.persistence.v1.ActivityInfo.activity_type:type_name -> temporal.api.common.v1.ActivityType - 35, // 89: temporal.server.api.persistence.v1.ActivityInfo.use_workflow_build_id_info:type_name -> temporal.server.api.persistence.v1.ActivityInfo.UseWorkflowBuildIdInfo - 51, // 90: temporal.server.api.persistence.v1.ActivityInfo.last_worker_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp - 52, // 91: temporal.server.api.persistence.v1.ActivityInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 43, // 92: temporal.server.api.persistence.v1.ActivityInfo.first_scheduled_time:type_name -> google.protobuf.Timestamp - 43, // 93: temporal.server.api.persistence.v1.ActivityInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp - 71, // 94: temporal.server.api.persistence.v1.ActivityInfo.last_started_deployment:type_name -> temporal.api.deployment.v1.Deployment - 72, // 95: temporal.server.api.persistence.v1.ActivityInfo.last_deployment_version:type_name -> temporal.api.deployment.v1.WorkerDeploymentVersion - 56, // 96: temporal.server.api.persistence.v1.ActivityInfo.priority:type_name -> temporal.api.common.v1.Priority - 36, // 97: temporal.server.api.persistence.v1.ActivityInfo.pause_info:type_name -> temporal.server.api.persistence.v1.ActivityInfo.PauseInfo - 43, // 98: temporal.server.api.persistence.v1.TimerInfo.expiry_time:type_name -> google.protobuf.Timestamp - 52, // 99: temporal.server.api.persistence.v1.TimerInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 73, // 100: temporal.server.api.persistence.v1.ChildExecutionInfo.parent_close_policy:type_name -> temporal.api.enums.v1.ParentClosePolicy - 49, // 101: temporal.server.api.persistence.v1.ChildExecutionInfo.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 52, // 102: temporal.server.api.persistence.v1.ChildExecutionInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 56, // 103: temporal.server.api.persistence.v1.ChildExecutionInfo.priority:type_name -> temporal.api.common.v1.Priority - 52, // 104: temporal.server.api.persistence.v1.RequestCancelInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 52, // 105: temporal.server.api.persistence.v1.SignalInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 74, // 106: temporal.server.api.persistence.v1.Checksum.flavor:type_name -> temporal.server.api.enums.v1.ChecksumFlavor - 38, // 107: temporal.server.api.persistence.v1.Callback.nexus:type_name -> temporal.server.api.persistence.v1.Callback.Nexus - 39, // 108: temporal.server.api.persistence.v1.Callback.hsm:type_name -> temporal.server.api.persistence.v1.Callback.HSM - 75, // 109: temporal.server.api.persistence.v1.Callback.links:type_name -> temporal.api.common.v1.Link - 76, // 110: temporal.server.api.persistence.v1.HSMCompletionCallbackArg.last_event:type_name -> temporal.api.history.v1.HistoryEvent - 19, // 111: temporal.server.api.persistence.v1.CallbackInfo.callback:type_name -> temporal.server.api.persistence.v1.Callback - 42, // 112: temporal.server.api.persistence.v1.CallbackInfo.trigger:type_name -> temporal.server.api.persistence.v1.CallbackInfo.Trigger - 43, // 113: temporal.server.api.persistence.v1.CallbackInfo.registration_time:type_name -> google.protobuf.Timestamp - 77, // 114: temporal.server.api.persistence.v1.CallbackInfo.state:type_name -> temporal.server.api.enums.v1.CallbackState - 43, // 115: temporal.server.api.persistence.v1.CallbackInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp - 68, // 116: temporal.server.api.persistence.v1.CallbackInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure - 43, // 117: temporal.server.api.persistence.v1.CallbackInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp - 44, // 118: temporal.server.api.persistence.v1.NexusOperationInfo.schedule_to_close_timeout:type_name -> google.protobuf.Duration - 43, // 119: temporal.server.api.persistence.v1.NexusOperationInfo.scheduled_time:type_name -> google.protobuf.Timestamp - 78, // 120: temporal.server.api.persistence.v1.NexusOperationInfo.state:type_name -> temporal.server.api.enums.v1.NexusOperationState - 43, // 121: temporal.server.api.persistence.v1.NexusOperationInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp - 68, // 122: temporal.server.api.persistence.v1.NexusOperationInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure - 43, // 123: temporal.server.api.persistence.v1.NexusOperationInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp - 44, // 124: temporal.server.api.persistence.v1.NexusOperationInfo.schedule_to_start_timeout:type_name -> google.protobuf.Duration - 44, // 125: temporal.server.api.persistence.v1.NexusOperationInfo.start_to_close_timeout:type_name -> google.protobuf.Duration - 43, // 126: temporal.server.api.persistence.v1.NexusOperationInfo.started_time:type_name -> google.protobuf.Timestamp - 43, // 127: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.requested_time:type_name -> google.protobuf.Timestamp - 79, // 128: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.state:type_name -> temporal.api.enums.v1.NexusOperationCancellationState - 43, // 129: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp - 68, // 130: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure - 43, // 131: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp - 43, // 132: temporal.server.api.persistence.v1.WorkflowPauseInfo.pause_time:type_name -> google.protobuf.Timestamp - 80, // 133: temporal.server.api.persistence.v1.ShardInfo.QueueStatesEntry.value:type_name -> temporal.server.api.persistence.v1.QueueState - 81, // 134: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SearchAttributesEntry.value:type_name -> temporal.api.common.v1.Payload - 81, // 135: temporal.server.api.persistence.v1.WorkflowExecutionInfo.MemoEntry.value:type_name -> temporal.api.common.v1.Payload - 82, // 136: temporal.server.api.persistence.v1.WorkflowExecutionInfo.UpdateInfosEntry.value:type_name -> temporal.server.api.persistence.v1.UpdateInfo - 83, // 137: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SubStateMachinesByTypeEntry.value:type_name -> temporal.server.api.persistence.v1.StateMachineMap - 24, // 138: temporal.server.api.persistence.v1.WorkflowExecutionInfo.ChildrenInitializedPostResetPointEntry.value:type_name -> temporal.server.api.persistence.v1.ResetChildInfo - 4, // 139: temporal.server.api.persistence.v1.WorkflowExecutionState.RequestIdsEntry.value:type_name -> temporal.server.api.persistence.v1.RequestIDInfo - 43, // 140: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.pause_time:type_name -> google.protobuf.Timestamp - 37, // 141: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.manual:type_name -> temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.Manual - 40, // 142: temporal.server.api.persistence.v1.Callback.Nexus.header:type_name -> temporal.server.api.persistence.v1.Callback.Nexus.HeaderEntry - 84, // 143: temporal.server.api.persistence.v1.Callback.HSM.ref:type_name -> temporal.server.api.persistence.v1.StateMachineRef - 41, // 144: temporal.server.api.persistence.v1.CallbackInfo.Trigger.workflow_closed:type_name -> temporal.server.api.persistence.v1.CallbackInfo.WorkflowClosed - 145, // [145:145] is the sub-list for method output_type - 145, // [145:145] is the sub-list for method input_type - 145, // [145:145] is the sub-list for extension type_name - 145, // [145:145] is the sub-list for extension extendee - 0, // [0:145] is the sub-list for field type_name + 64, // 54: temporal.server.api.persistence.v1.TransferTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo + 35, // 55: temporal.server.api.persistence.v1.TransferTaskInfo.cancel_activity_nexus_task_details:type_name -> temporal.server.api.persistence.v1.TransferTaskInfo.CancelActivityNexusTaskDetails + 63, // 56: temporal.server.api.persistence.v1.ReplicationTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 44, // 57: temporal.server.api.persistence.v1.ReplicationTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 65, // 58: temporal.server.api.persistence.v1.ReplicationTaskInfo.priority:type_name -> temporal.server.api.enums.v1.TaskPriority + 53, // 59: temporal.server.api.persistence.v1.ReplicationTaskInfo.versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 6, // 60: temporal.server.api.persistence.v1.ReplicationTaskInfo.task_equivalents:type_name -> temporal.server.api.persistence.v1.ReplicationTaskInfo + 66, // 61: temporal.server.api.persistence.v1.ReplicationTaskInfo.last_version_history_item:type_name -> temporal.server.api.history.v1.VersionHistoryItem + 63, // 62: temporal.server.api.persistence.v1.VisibilityTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 44, // 63: temporal.server.api.persistence.v1.VisibilityTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 44, // 64: temporal.server.api.persistence.v1.VisibilityTaskInfo.close_time:type_name -> google.protobuf.Timestamp + 64, // 65: temporal.server.api.persistence.v1.VisibilityTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo + 63, // 66: temporal.server.api.persistence.v1.TimerTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 59, // 67: temporal.server.api.persistence.v1.TimerTaskInfo.timeout_type:type_name -> temporal.api.enums.v1.TimeoutType + 67, // 68: temporal.server.api.persistence.v1.TimerTaskInfo.workflow_backoff_type:type_name -> temporal.server.api.enums.v1.WorkflowBackoffType + 44, // 69: temporal.server.api.persistence.v1.TimerTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 64, // 70: temporal.server.api.persistence.v1.TimerTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo + 63, // 71: temporal.server.api.persistence.v1.ArchivalTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 44, // 72: temporal.server.api.persistence.v1.ArchivalTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 63, // 73: temporal.server.api.persistence.v1.OutboundTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 44, // 74: temporal.server.api.persistence.v1.OutboundTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 68, // 75: temporal.server.api.persistence.v1.OutboundTaskInfo.state_machine_info:type_name -> temporal.server.api.persistence.v1.StateMachineTaskInfo + 64, // 76: temporal.server.api.persistence.v1.OutboundTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo + 44, // 77: temporal.server.api.persistence.v1.ActivityInfo.scheduled_time:type_name -> google.protobuf.Timestamp + 44, // 78: temporal.server.api.persistence.v1.ActivityInfo.started_time:type_name -> google.protobuf.Timestamp + 45, // 79: temporal.server.api.persistence.v1.ActivityInfo.schedule_to_start_timeout:type_name -> google.protobuf.Duration + 45, // 80: temporal.server.api.persistence.v1.ActivityInfo.schedule_to_close_timeout:type_name -> google.protobuf.Duration + 45, // 81: temporal.server.api.persistence.v1.ActivityInfo.start_to_close_timeout:type_name -> google.protobuf.Duration + 45, // 82: temporal.server.api.persistence.v1.ActivityInfo.heartbeat_timeout:type_name -> google.protobuf.Duration + 45, // 83: temporal.server.api.persistence.v1.ActivityInfo.retry_initial_interval:type_name -> google.protobuf.Duration + 45, // 84: temporal.server.api.persistence.v1.ActivityInfo.retry_maximum_interval:type_name -> google.protobuf.Duration + 44, // 85: temporal.server.api.persistence.v1.ActivityInfo.retry_expiration_time:type_name -> google.protobuf.Timestamp + 69, // 86: temporal.server.api.persistence.v1.ActivityInfo.retry_last_failure:type_name -> temporal.api.failure.v1.Failure + 70, // 87: temporal.server.api.persistence.v1.ActivityInfo.last_heartbeat_details:type_name -> temporal.api.common.v1.Payloads + 44, // 88: temporal.server.api.persistence.v1.ActivityInfo.last_heartbeat_update_time:type_name -> google.protobuf.Timestamp + 71, // 89: temporal.server.api.persistence.v1.ActivityInfo.activity_type:type_name -> temporal.api.common.v1.ActivityType + 36, // 90: temporal.server.api.persistence.v1.ActivityInfo.use_workflow_build_id_info:type_name -> temporal.server.api.persistence.v1.ActivityInfo.UseWorkflowBuildIdInfo + 52, // 91: temporal.server.api.persistence.v1.ActivityInfo.last_worker_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp + 53, // 92: temporal.server.api.persistence.v1.ActivityInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 44, // 93: temporal.server.api.persistence.v1.ActivityInfo.first_scheduled_time:type_name -> google.protobuf.Timestamp + 44, // 94: temporal.server.api.persistence.v1.ActivityInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp + 72, // 95: temporal.server.api.persistence.v1.ActivityInfo.last_started_deployment:type_name -> temporal.api.deployment.v1.Deployment + 73, // 96: temporal.server.api.persistence.v1.ActivityInfo.last_deployment_version:type_name -> temporal.api.deployment.v1.WorkerDeploymentVersion + 57, // 97: temporal.server.api.persistence.v1.ActivityInfo.priority:type_name -> temporal.api.common.v1.Priority + 37, // 98: temporal.server.api.persistence.v1.ActivityInfo.pause_info:type_name -> temporal.server.api.persistence.v1.ActivityInfo.PauseInfo + 44, // 99: temporal.server.api.persistence.v1.TimerInfo.expiry_time:type_name -> google.protobuf.Timestamp + 53, // 100: temporal.server.api.persistence.v1.TimerInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 74, // 101: temporal.server.api.persistence.v1.ChildExecutionInfo.parent_close_policy:type_name -> temporal.api.enums.v1.ParentClosePolicy + 50, // 102: temporal.server.api.persistence.v1.ChildExecutionInfo.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 53, // 103: temporal.server.api.persistence.v1.ChildExecutionInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 57, // 104: temporal.server.api.persistence.v1.ChildExecutionInfo.priority:type_name -> temporal.api.common.v1.Priority + 53, // 105: temporal.server.api.persistence.v1.RequestCancelInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 53, // 106: temporal.server.api.persistence.v1.SignalInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 75, // 107: temporal.server.api.persistence.v1.Checksum.flavor:type_name -> temporal.server.api.enums.v1.ChecksumFlavor + 39, // 108: temporal.server.api.persistence.v1.Callback.nexus:type_name -> temporal.server.api.persistence.v1.Callback.Nexus + 40, // 109: temporal.server.api.persistence.v1.Callback.hsm:type_name -> temporal.server.api.persistence.v1.Callback.HSM + 76, // 110: temporal.server.api.persistence.v1.Callback.links:type_name -> temporal.api.common.v1.Link + 77, // 111: temporal.server.api.persistence.v1.HSMCompletionCallbackArg.last_event:type_name -> temporal.api.history.v1.HistoryEvent + 19, // 112: temporal.server.api.persistence.v1.CallbackInfo.callback:type_name -> temporal.server.api.persistence.v1.Callback + 43, // 113: temporal.server.api.persistence.v1.CallbackInfo.trigger:type_name -> temporal.server.api.persistence.v1.CallbackInfo.Trigger + 44, // 114: temporal.server.api.persistence.v1.CallbackInfo.registration_time:type_name -> google.protobuf.Timestamp + 78, // 115: temporal.server.api.persistence.v1.CallbackInfo.state:type_name -> temporal.server.api.enums.v1.CallbackState + 44, // 116: temporal.server.api.persistence.v1.CallbackInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp + 69, // 117: temporal.server.api.persistence.v1.CallbackInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure + 44, // 118: temporal.server.api.persistence.v1.CallbackInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp + 45, // 119: temporal.server.api.persistence.v1.NexusOperationInfo.schedule_to_close_timeout:type_name -> google.protobuf.Duration + 44, // 120: temporal.server.api.persistence.v1.NexusOperationInfo.scheduled_time:type_name -> google.protobuf.Timestamp + 79, // 121: temporal.server.api.persistence.v1.NexusOperationInfo.state:type_name -> temporal.server.api.enums.v1.NexusOperationState + 44, // 122: temporal.server.api.persistence.v1.NexusOperationInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp + 69, // 123: temporal.server.api.persistence.v1.NexusOperationInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure + 44, // 124: temporal.server.api.persistence.v1.NexusOperationInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp + 45, // 125: temporal.server.api.persistence.v1.NexusOperationInfo.schedule_to_start_timeout:type_name -> google.protobuf.Duration + 45, // 126: temporal.server.api.persistence.v1.NexusOperationInfo.start_to_close_timeout:type_name -> google.protobuf.Duration + 44, // 127: temporal.server.api.persistence.v1.NexusOperationInfo.started_time:type_name -> google.protobuf.Timestamp + 44, // 128: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.requested_time:type_name -> google.protobuf.Timestamp + 80, // 129: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.state:type_name -> temporal.api.enums.v1.NexusOperationCancellationState + 44, // 130: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp + 69, // 131: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure + 44, // 132: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp + 44, // 133: temporal.server.api.persistence.v1.WorkflowPauseInfo.pause_time:type_name -> google.protobuf.Timestamp + 81, // 134: temporal.server.api.persistence.v1.ShardInfo.QueueStatesEntry.value:type_name -> temporal.server.api.persistence.v1.QueueState + 82, // 135: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SearchAttributesEntry.value:type_name -> temporal.api.common.v1.Payload + 82, // 136: temporal.server.api.persistence.v1.WorkflowExecutionInfo.MemoEntry.value:type_name -> temporal.api.common.v1.Payload + 83, // 137: temporal.server.api.persistence.v1.WorkflowExecutionInfo.UpdateInfosEntry.value:type_name -> temporal.server.api.persistence.v1.UpdateInfo + 84, // 138: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SubStateMachinesByTypeEntry.value:type_name -> temporal.server.api.persistence.v1.StateMachineMap + 24, // 139: temporal.server.api.persistence.v1.WorkflowExecutionInfo.ChildrenInitializedPostResetPointEntry.value:type_name -> temporal.server.api.persistence.v1.ResetChildInfo + 4, // 140: temporal.server.api.persistence.v1.WorkflowExecutionState.RequestIdsEntry.value:type_name -> temporal.server.api.persistence.v1.RequestIDInfo + 44, // 141: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.pause_time:type_name -> google.protobuf.Timestamp + 38, // 142: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.manual:type_name -> temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.Manual + 41, // 143: temporal.server.api.persistence.v1.Callback.Nexus.header:type_name -> temporal.server.api.persistence.v1.Callback.Nexus.HeaderEntry + 85, // 144: temporal.server.api.persistence.v1.Callback.HSM.ref:type_name -> temporal.server.api.persistence.v1.StateMachineRef + 42, // 145: temporal.server.api.persistence.v1.CallbackInfo.Trigger.workflow_closed:type_name -> temporal.server.api.persistence.v1.CallbackInfo.WorkflowClosed + 146, // [146:146] is the sub-list for method output_type + 146, // [146:146] is the sub-list for method input_type + 146, // [146:146] is the sub-list for extension type_name + 146, // [146:146] is the sub-list for extension extendee + 0, // [0:146] is the sub-list for field type_name } func init() { file_temporal_server_api_persistence_v1_executions_proto_init() } @@ -5308,6 +5384,7 @@ func file_temporal_server_api_persistence_v1_executions_proto_init() { file_temporal_server_api_persistence_v1_executions_proto_msgTypes[5].OneofWrappers = []any{ (*TransferTaskInfo_CloseExecutionTaskDetails_)(nil), (*TransferTaskInfo_ChasmTaskInfo)(nil), + (*TransferTaskInfo_CancelActivityNexusTaskDetails_)(nil), } file_temporal_server_api_persistence_v1_executions_proto_msgTypes[7].OneofWrappers = []any{ (*VisibilityTaskInfo_ChasmTaskInfo)(nil), @@ -5327,11 +5404,11 @@ func file_temporal_server_api_persistence_v1_executions_proto_init() { (*Callback_Nexus_)(nil), (*Callback_Hsm)(nil), } - file_temporal_server_api_persistence_v1_executions_proto_msgTypes[36].OneofWrappers = []any{ + file_temporal_server_api_persistence_v1_executions_proto_msgTypes[37].OneofWrappers = []any{ (*ActivityInfo_PauseInfo_Manual_)(nil), (*ActivityInfo_PauseInfo_RuleId)(nil), } - file_temporal_server_api_persistence_v1_executions_proto_msgTypes[42].OneofWrappers = []any{ + file_temporal_server_api_persistence_v1_executions_proto_msgTypes[43].OneofWrappers = []any{ (*CallbackInfo_Trigger_WorkflowClosed)(nil), } type x struct{} @@ -5340,7 +5417,7 @@ func file_temporal_server_api_persistence_v1_executions_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_persistence_v1_executions_proto_rawDesc), len(file_temporal_server_api_persistence_v1_executions_proto_rawDesc)), NumEnums: 0, - NumMessages: 43, + NumMessages: 44, NumExtensions: 0, NumServices: 0, }, diff --git a/common/dynamicconfig/constants.go b/common/dynamicconfig/constants.go index 81b276f118..b85f052b86 100644 --- a/common/dynamicconfig/constants.go +++ b/common/dynamicconfig/constants.go @@ -189,6 +189,11 @@ config as the other services.`, false, `EnableActivityEagerExecution indicates if activity eager execution is enabled per namespace`, ) + EnableActivityCancellationNexusTask = NewGlobalBoolSetting( + "system.enableActivityCancellationNexusTask", + false, + `EnableActivityCancellationNexusTask enables pushing activity cancellation to workers via Nexus task`, + ) NamespaceMinRetentionGlobal = NewGlobalDurationSetting( "system.namespaceMinRetentionGlobal", 24*time.Hour, diff --git a/common/persistence/serialization/task_serializers.go b/common/persistence/serialization/task_serializers.go index 598cd194dd..13e6c2846b 100644 --- a/common/persistence/serialization/task_serializers.go +++ b/common/persistence/serialization/task_serializers.go @@ -38,6 +38,8 @@ func serializeTransferTask( transferTask = transferDeleteExecutionTaskToProto(task) case *tasks.ChasmTask: transferTask = transferChasmTaskToProto(task) + case *tasks.CancelActivityNexusTask: + transferTask = transferCancelActivityNexusTaskToProto(task) default: return nil, serviceerror.NewInternalf("Unknown transfer task type: %v", task) } @@ -86,6 +88,8 @@ func deserializeTransferTask( task = transferDeleteExecutionTaskFromProto(transferTask) case enumsspb.TASK_TYPE_CHASM: task = transferChasmTaskFromProto(transferTask) + case enumsspb.TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS: + task = transferCancelActivityNexusTaskFromProto(transferTask) default: return nil, serviceerror.NewInternalf("Unknown transfer task type: %v", transferTask.TaskType) } @@ -106,6 +110,40 @@ func transferChasmTaskFromProto(task *persistencespb.TransferTaskInfo) tasks.Tas } } +func transferCancelActivityNexusTaskToProto(task *tasks.CancelActivityNexusTask) *persistencespb.TransferTaskInfo { + return &persistencespb.TransferTaskInfo{ + NamespaceId: task.WorkflowKey.NamespaceID, + WorkflowId: task.WorkflowKey.WorkflowID, + RunId: task.WorkflowKey.RunID, + TaskId: task.TaskID, + TaskType: task.GetType(), + Version: task.Version, + VisibilityTime: timestamppb.New(task.VisibilityTimestamp), + TaskDetails: &persistencespb.TransferTaskInfo_CancelActivityNexusTaskDetails_{ + CancelActivityNexusTaskDetails: &persistencespb.TransferTaskInfo_CancelActivityNexusTaskDetails{ + ScheduledEventIds: task.ScheduledEventIDs, + WorkerInstanceKey: task.WorkerInstanceKey, + }, + }, + } +} + +func transferCancelActivityNexusTaskFromProto(task *persistencespb.TransferTaskInfo) tasks.Task { + details := task.GetCancelActivityNexusTaskDetails() + return &tasks.CancelActivityNexusTask{ + WorkflowKey: definition.NewWorkflowKey( + task.NamespaceId, + task.WorkflowId, + task.RunId, + ), + VisibilityTimestamp: task.VisibilityTime.AsTime(), + TaskID: task.TaskId, + Version: task.Version, + ScheduledEventIDs: details.GetScheduledEventIds(), + WorkerInstanceKey: details.GetWorkerInstanceKey(), + } +} + func serializeTimerTask( encoder Encoder, task tasks.Task, diff --git a/common/persistence/serialization/task_serializers_test.go b/common/persistence/serialization/task_serializers_test.go index e3ac399c6c..dd037e430f 100644 --- a/common/persistence/serialization/task_serializers_test.go +++ b/common/persistence/serialization/task_serializers_test.go @@ -169,6 +169,19 @@ func (s *taskSerializerSuite) TestTransferResetTask() { s.assertEqualTasks(resetTask) } +func (s *taskSerializerSuite) TestTransferCancelActivityNexusTask() { + cancelActivityNexusTask := &tasks.CancelActivityNexusTask{ + WorkflowKey: s.workflowKey, + VisibilityTimestamp: time.Unix(0, rand.Int63()).UTC(), + TaskID: rand.Int63(), + Version: rand.Int63(), + ScheduledEventIDs: []int64{rand.Int63(), rand.Int63(), rand.Int63()}, + WorkerInstanceKey: "test-worker-instance-key", + } + + s.assertEqualTasks(cancelActivityNexusTask) +} + func (s *taskSerializerSuite) TestTimerWorkflowTask() { workflowTaskTimer := &tasks.WorkflowTaskTimeoutTask{ WorkflowKey: s.workflowKey, diff --git a/proto/internal/temporal/server/api/enums/v1/task.proto b/proto/internal/temporal/server/api/enums/v1/task.proto index 34e026271a..c0150d2abd 100644 --- a/proto/internal/temporal/server/api/enums/v1/task.proto +++ b/proto/internal/temporal/server/api/enums/v1/task.proto @@ -59,6 +59,9 @@ enum TaskType { // A task with side effects generated by a CHASM component. TASK_TYPE_CHASM = 33; + + // A task to cancel a running activity via Nexus control queue. + TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS = 34; } // TaskPriority is only used for replication task as of May 2024 diff --git a/proto/internal/temporal/server/api/persistence/v1/executions.proto b/proto/internal/temporal/server/api/persistence/v1/executions.proto index fc3cf5b220..ad8c90c99f 100644 --- a/proto/internal/temporal/server/api/persistence/v1/executions.proto +++ b/proto/internal/temporal/server/api/persistence/v1/executions.proto @@ -350,11 +350,21 @@ message TransferTaskInfo { // by some other task, so this task doesn't need to worry about it. bool can_skip_visibility_archival = 1; } + + // Details for a Nexus task that cancels activities belonging to a specific worker. + message CancelActivityNexusTaskDetails { + // Scheduled event IDs of activities to cancel. + repeated int64 scheduled_event_ids = 1; + string worker_instance_key = 2; + } + oneof task_details { CloseExecutionTaskDetails close_execution_task_details = 16; // If the task addresses a CHASM component, this field will be set. ChasmTaskInfo chasm_task_info = 18; + + CancelActivityNexusTaskDetails cancel_activity_nexus_task_details = 19; } // Stamp represents the "version" of the entity's internal state for which the transfer task was created. // It increases monotonically when the entity's options are modified. diff --git a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go index ee23a76893..03277b7033 100644 --- a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go +++ b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go @@ -39,6 +39,7 @@ import ( "go.temporal.io/server/service/history/api" "go.temporal.io/server/service/history/configs" historyi "go.temporal.io/server/service/history/interfaces" + "go.temporal.io/server/service/history/tasks" "go.temporal.io/server/service/history/workflow" "go.temporal.io/server/service/history/workflow/update" "google.golang.org/protobuf/proto" @@ -664,6 +665,13 @@ func (handler *workflowTaskCompletedHandler) handleCommandRequestCancelActivity( return nil, err } handler.activityNotStartedCancelled = true + } else if ai.WorkerInstanceKey != "" && handler.config.EnableActivityCancellationNexusTask() { + // Activity has started and worker supports Nexus tasks - create cancel task. + handler.mutableState.AddTasks(&tasks.CancelActivityNexusTask{ + WorkflowKey: handler.mutableState.GetWorkflowKey(), + ScheduledEventIDs: []int64{ai.ScheduledEventId}, + WorkerInstanceKey: ai.WorkerInstanceKey, + }) } } return actCancelReqEvent, nil diff --git a/service/history/configs/config.go b/service/history/configs/config.go index 1f614adabf..99a6ddb7ea 100644 --- a/service/history/configs/config.go +++ b/service/history/configs/config.go @@ -354,11 +354,12 @@ type Config struct { ESProcessorFlushInterval dynamicconfig.DurationPropertyFn ESProcessorAckTimeout dynamicconfig.DurationPropertyFn - EnableCrossNamespaceCommands dynamicconfig.BoolPropertyFn - EnableActivityEagerExecution dynamicconfig.BoolPropertyFnWithNamespaceFilter - EnableActivityRetryStampIncrement dynamicconfig.BoolPropertyFn - EnableEagerWorkflowStart dynamicconfig.BoolPropertyFnWithNamespaceFilter - NamespaceCacheRefreshInterval dynamicconfig.DurationPropertyFn + EnableCrossNamespaceCommands dynamicconfig.BoolPropertyFn + EnableActivityEagerExecution dynamicconfig.BoolPropertyFnWithNamespaceFilter + EnableActivityRetryStampIncrement dynamicconfig.BoolPropertyFn + EnableActivityCancellationNexusTask dynamicconfig.BoolPropertyFn + EnableEagerWorkflowStart dynamicconfig.BoolPropertyFnWithNamespaceFilter + NamespaceCacheRefreshInterval dynamicconfig.DurationPropertyFn // ArchivalQueueProcessor settings ArchivalProcessorSchedulerWorkerCount dynamicconfig.TypedSubscribable[int] @@ -726,11 +727,12 @@ func NewConfig( ESProcessorFlushInterval: dynamicconfig.WorkerESProcessorFlushInterval.Get(dc), ESProcessorAckTimeout: dynamicconfig.WorkerESProcessorAckTimeout.Get(dc), - EnableCrossNamespaceCommands: dynamicconfig.EnableCrossNamespaceCommands.Get(dc), - EnableActivityEagerExecution: dynamicconfig.EnableActivityEagerExecution.Get(dc), - EnableActivityRetryStampIncrement: dynamicconfig.EnableActivityRetryStampIncrement.Get(dc), - EnableEagerWorkflowStart: dynamicconfig.EnableEagerWorkflowStart.Get(dc), - NamespaceCacheRefreshInterval: dynamicconfig.NamespaceCacheRefreshInterval.Get(dc), + EnableCrossNamespaceCommands: dynamicconfig.EnableCrossNamespaceCommands.Get(dc), + EnableActivityEagerExecution: dynamicconfig.EnableActivityEagerExecution.Get(dc), + EnableActivityRetryStampIncrement: dynamicconfig.EnableActivityRetryStampIncrement.Get(dc), + EnableActivityCancellationNexusTask: dynamicconfig.EnableActivityCancellationNexusTask.Get(dc), + EnableEagerWorkflowStart: dynamicconfig.EnableEagerWorkflowStart.Get(dc), + NamespaceCacheRefreshInterval: dynamicconfig.NamespaceCacheRefreshInterval.Get(dc), // Archival related ArchivalTaskBatchSize: dynamicconfig.ArchivalTaskBatchSize.Get(dc), diff --git a/service/history/tasks/cancel_activity_nexus_task.go b/service/history/tasks/cancel_activity_nexus_task.go new file mode 100644 index 0000000000..05382dd45a --- /dev/null +++ b/service/history/tasks/cancel_activity_nexus_task.go @@ -0,0 +1,71 @@ +package tasks + +import ( + "fmt" + "time" + + enumsspb "go.temporal.io/server/api/enums/v1" + "go.temporal.io/server/common/definition" +) + +var _ Task = (*CancelActivityNexusTask)(nil) + +type ( + CancelActivityNexusTask struct { + definition.WorkflowKey + VisibilityTimestamp time.Time + TaskID int64 + Version int64 + + // ScheduledEventIDs of activities to cancel (batched by worker). + ScheduledEventIDs []int64 + WorkerInstanceKey string + } +) + +func (t *CancelActivityNexusTask) GetKey() Key { + return NewImmediateKey(t.TaskID) +} + +func (t *CancelActivityNexusTask) GetVersion() int64 { + return t.Version +} + +func (t *CancelActivityNexusTask) SetVersion(version int64) { + t.Version = version +} + +func (t *CancelActivityNexusTask) GetTaskID() int64 { + return t.TaskID +} + +func (t *CancelActivityNexusTask) SetTaskID(id int64) { + t.TaskID = id +} + +func (t *CancelActivityNexusTask) GetVisibilityTime() time.Time { + return t.VisibilityTimestamp +} + +func (t *CancelActivityNexusTask) SetVisibilityTime(timestamp time.Time) { + t.VisibilityTimestamp = timestamp +} + +func (t *CancelActivityNexusTask) GetCategory() Category { + return CategoryTransfer +} + +func (t *CancelActivityNexusTask) GetType() enumsspb.TaskType { + return enumsspb.TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS +} + +func (t *CancelActivityNexusTask) String() string { + return fmt.Sprintf("CancelActivityNexusTask{WorkflowKey: %s, VisibilityTimestamp: %v, TaskID: %v, ScheduledEventIDs: %v, WorkerInstanceKey: %v, Version: %v}", + t.WorkflowKey.String(), + t.VisibilityTimestamp, + t.TaskID, + t.ScheduledEventIDs, + t.WorkerInstanceKey, + t.Version, + ) +} diff --git a/service/history/tasks/utils.go b/service/history/tasks/utils.go index 3c446342b6..6532528162 100644 --- a/service/history/tasks/utils.go +++ b/service/history/tasks/utils.go @@ -78,6 +78,12 @@ func GetTransferTaskEventID( eventID = common.FirstEventID case *ChasmTask: return getChasmTaskEventID() + case *CancelActivityNexusTask: + if len(task.ScheduledEventIDs) > 0 { + eventID = task.ScheduledEventIDs[0] + } else { + eventID = common.FirstEventID + } case *FakeTask: // no-op default: diff --git a/service/history/transfer_queue_active_task_executor.go b/service/history/transfer_queue_active_task_executor.go index 3fba82a3e8..4fda52b25a 100644 --- a/service/history/transfer_queue_active_task_executor.go +++ b/service/history/transfer_queue_active_task_executor.go @@ -145,6 +145,9 @@ func (t *transferQueueActiveTaskExecutor) Execute( err = t.processDeleteExecutionTask(ctx, task) case *tasks.ChasmTask: err = t.executeChasmSideEffectTransferTask(ctx, task) + case *tasks.CancelActivityNexusTask: + // TODO: Implement dispatch to worker control queue + err = nil default: err = errUnknownTransferTask } diff --git a/service/history/transfer_queue_standby_task_executor.go b/service/history/transfer_queue_standby_task_executor.go index 4e61c43aaf..a9738cab2d 100644 --- a/service/history/transfer_queue_standby_task_executor.go +++ b/service/history/transfer_queue_standby_task_executor.go @@ -108,6 +108,9 @@ func (t *transferQueueStandbyTaskExecutor) Execute( err = t.processDeleteExecutionTask(ctx, task, false) case *tasks.ChasmTask: err = t.executeChasmSideEffectTransferTask(ctx, task) + case *tasks.CancelActivityNexusTask: + // Cancel activity nexus task is best-effort and only processed in active cluster + err = nil default: err = errUnknownTransferTask } From 113ca15bb0750d160d3f689c70defb939e0d36ce Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Thu, 5 Feb 2026 17:26:55 -0800 Subject: [PATCH 02/14] Fix lint errors --- .../serialization/task_serializers.go | 6 +++--- service/history/configs/config.go | 20 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/common/persistence/serialization/task_serializers.go b/common/persistence/serialization/task_serializers.go index 13e6c2846b..fc2ff762af 100644 --- a/common/persistence/serialization/task_serializers.go +++ b/common/persistence/serialization/task_serializers.go @@ -112,9 +112,9 @@ func transferChasmTaskFromProto(task *persistencespb.TransferTaskInfo) tasks.Tas func transferCancelActivityNexusTaskToProto(task *tasks.CancelActivityNexusTask) *persistencespb.TransferTaskInfo { return &persistencespb.TransferTaskInfo{ - NamespaceId: task.WorkflowKey.NamespaceID, - WorkflowId: task.WorkflowKey.WorkflowID, - RunId: task.WorkflowKey.RunID, + NamespaceId: task.NamespaceID, + WorkflowId: task.WorkflowID, + RunId: task.RunID, TaskId: task.TaskID, TaskType: task.GetType(), Version: task.Version, diff --git a/service/history/configs/config.go b/service/history/configs/config.go index 99a6ddb7ea..5e7a8d8403 100644 --- a/service/history/configs/config.go +++ b/service/history/configs/config.go @@ -354,12 +354,12 @@ type Config struct { ESProcessorFlushInterval dynamicconfig.DurationPropertyFn ESProcessorAckTimeout dynamicconfig.DurationPropertyFn - EnableCrossNamespaceCommands dynamicconfig.BoolPropertyFn - EnableActivityEagerExecution dynamicconfig.BoolPropertyFnWithNamespaceFilter - EnableActivityRetryStampIncrement dynamicconfig.BoolPropertyFn + EnableCrossNamespaceCommands dynamicconfig.BoolPropertyFn + EnableActivityEagerExecution dynamicconfig.BoolPropertyFnWithNamespaceFilter + EnableActivityRetryStampIncrement dynamicconfig.BoolPropertyFn EnableActivityCancellationNexusTask dynamicconfig.BoolPropertyFn - EnableEagerWorkflowStart dynamicconfig.BoolPropertyFnWithNamespaceFilter - NamespaceCacheRefreshInterval dynamicconfig.DurationPropertyFn + EnableEagerWorkflowStart dynamicconfig.BoolPropertyFnWithNamespaceFilter + NamespaceCacheRefreshInterval dynamicconfig.DurationPropertyFn // ArchivalQueueProcessor settings ArchivalProcessorSchedulerWorkerCount dynamicconfig.TypedSubscribable[int] @@ -727,12 +727,12 @@ func NewConfig( ESProcessorFlushInterval: dynamicconfig.WorkerESProcessorFlushInterval.Get(dc), ESProcessorAckTimeout: dynamicconfig.WorkerESProcessorAckTimeout.Get(dc), - EnableCrossNamespaceCommands: dynamicconfig.EnableCrossNamespaceCommands.Get(dc), - EnableActivityEagerExecution: dynamicconfig.EnableActivityEagerExecution.Get(dc), - EnableActivityRetryStampIncrement: dynamicconfig.EnableActivityRetryStampIncrement.Get(dc), + EnableCrossNamespaceCommands: dynamicconfig.EnableCrossNamespaceCommands.Get(dc), + EnableActivityEagerExecution: dynamicconfig.EnableActivityEagerExecution.Get(dc), + EnableActivityRetryStampIncrement: dynamicconfig.EnableActivityRetryStampIncrement.Get(dc), EnableActivityCancellationNexusTask: dynamicconfig.EnableActivityCancellationNexusTask.Get(dc), - EnableEagerWorkflowStart: dynamicconfig.EnableEagerWorkflowStart.Get(dc), - NamespaceCacheRefreshInterval: dynamicconfig.NamespaceCacheRefreshInterval.Get(dc), + EnableEagerWorkflowStart: dynamicconfig.EnableEagerWorkflowStart.Get(dc), + NamespaceCacheRefreshInterval: dynamicconfig.NamespaceCacheRefreshInterval.Get(dc), // Archival related ArchivalTaskBatchSize: dynamicconfig.ArchivalTaskBatchSize.Get(dc), From 5ad9aeb27bafcf22ff4ef6fab74dea129f33754f Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Wed, 11 Feb 2026 13:29:30 -0800 Subject: [PATCH 03/14] Regen proto --- api/persistence/v1/executions.pb.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/persistence/v1/executions.pb.go b/api/persistence/v1/executions.pb.go index 346fe898fa..f4d61affb7 100644 --- a/api/persistence/v1/executions.pb.go +++ b/api/persistence/v1/executions.pb.go @@ -4138,9 +4138,10 @@ func (x *TransferTaskInfo_CloseExecutionTaskDetails) GetCanSkipVisibilityArchiva return false } +// Details for a Nexus task that cancels activities belonging to a specific worker. type TransferTaskInfo_CancelActivityNexusTaskDetails struct { state protoimpl.MessageState `protogen:"open.v1"` - // Scheduled event IDs of activities to cancel (batched by worker). + // Scheduled event IDs of activities to cancel. ScheduledEventIds []int64 `protobuf:"varint,1,rep,packed,name=scheduled_event_ids,json=scheduledEventIds,proto3" json:"scheduled_event_ids,omitempty"` WorkerInstanceKey string `protobuf:"bytes,2,opt,name=worker_instance_key,json=workerInstanceKey,proto3" json:"worker_instance_key,omitempty"` unknownFields protoimpl.UnknownFields From 05adf1a5b01793d4db5fc4578306b11afec9e409 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Wed, 11 Feb 2026 16:43:10 -0800 Subject: [PATCH 04/14] Remove worker_instance_key as it is not needed --- api/persistence/v1/executions.pb.go | 18 ++++-------------- .../serialization/task_serializers.go | 2 -- .../serialization/task_serializers_test.go | 1 - .../server/api/persistence/v1/executions.proto | 3 +-- .../workflow_task_completed_handler.go | 3 +-- .../tasks/cancel_activity_nexus_task.go | 4 +--- 6 files changed, 7 insertions(+), 24 deletions(-) diff --git a/api/persistence/v1/executions.pb.go b/api/persistence/v1/executions.pb.go index f4d61affb7..da802fecc5 100644 --- a/api/persistence/v1/executions.pb.go +++ b/api/persistence/v1/executions.pb.go @@ -4138,12 +4138,11 @@ func (x *TransferTaskInfo_CloseExecutionTaskDetails) GetCanSkipVisibilityArchiva return false } -// Details for a Nexus task that cancels activities belonging to a specific worker. +// Details for a Nexus task that cancels activities. type TransferTaskInfo_CancelActivityNexusTaskDetails struct { state protoimpl.MessageState `protogen:"open.v1"` // Scheduled event IDs of activities to cancel. ScheduledEventIds []int64 `protobuf:"varint,1,rep,packed,name=scheduled_event_ids,json=scheduledEventIds,proto3" json:"scheduled_event_ids,omitempty"` - WorkerInstanceKey string `protobuf:"bytes,2,opt,name=worker_instance_key,json=workerInstanceKey,proto3" json:"worker_instance_key,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -4185,13 +4184,6 @@ func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) GetScheduledEventIds() return nil } -func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) GetWorkerInstanceKey() string { - if x != nil { - return x.WorkerInstanceKey - } - return "" -} - // Deprecated. Clean up with versioning-2. [cleanup-old-wv] type ActivityInfo_UseWorkflowBuildIdInfo struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -4806,8 +4798,7 @@ const file_temporal_server_api_persistence_v1_executions_proto_rawDesc = "" + "\rRequestIDInfo\x12?\n" + "\n" + "event_type\x18\x01 \x01(\x0e2 .temporal.api.enums.v1.EventTypeR\teventType\x12\x19\n" + - "\bevent_id\x18\x02 \x01(\x03R\aeventId\"\x86\n" + - "\n" + + "\bevent_id\x18\x02 \x01(\x03R\aeventId\"\xd5\t\n" + "\x10TransferTaskInfo\x12!\n" + "\fnamespace_id\x18\x01 \x01(\tR\vnamespaceId\x12\x1f\n" + "\vworkflow_id\x18\x02 \x01(\tR\n" + @@ -4831,10 +4822,9 @@ const file_temporal_server_api_persistence_v1_executions_proto_rawDesc = "" + "\"cancel_activity_nexus_task_details\x18\x13 \x01(\v2S.temporal.server.api.persistence.v1.TransferTaskInfo.CancelActivityNexusTaskDetailsH\x00R\x1ecancelActivityNexusTaskDetails\x12\x14\n" + "\x05stamp\x18\x11 \x01(\x05R\x05stamp\x1a\\\n" + "\x19CloseExecutionTaskDetails\x12?\n" + - "\x1ccan_skip_visibility_archival\x18\x01 \x01(\bR\x19canSkipVisibilityArchival\x1a\x80\x01\n" + + "\x1ccan_skip_visibility_archival\x18\x01 \x01(\bR\x19canSkipVisibilityArchival\x1aP\n" + "\x1eCancelActivityNexusTaskDetails\x12.\n" + - "\x13scheduled_event_ids\x18\x01 \x03(\x03R\x11scheduledEventIds\x12.\n" + - "\x13worker_instance_key\x18\x02 \x01(\tR\x11workerInstanceKeyB\x0e\n" + + "\x13scheduled_event_ids\x18\x01 \x03(\x03R\x11scheduledEventIdsB\x0e\n" + "\ftask_detailsJ\x04\b\x0e\x10\x0f\"\xd8\b\n" + "\x13ReplicationTaskInfo\x12!\n" + "\fnamespace_id\x18\x01 \x01(\tR\vnamespaceId\x12\x1f\n" + diff --git a/common/persistence/serialization/task_serializers.go b/common/persistence/serialization/task_serializers.go index fc2ff762af..6b8dff8b24 100644 --- a/common/persistence/serialization/task_serializers.go +++ b/common/persistence/serialization/task_serializers.go @@ -122,7 +122,6 @@ func transferCancelActivityNexusTaskToProto(task *tasks.CancelActivityNexusTask) TaskDetails: &persistencespb.TransferTaskInfo_CancelActivityNexusTaskDetails_{ CancelActivityNexusTaskDetails: &persistencespb.TransferTaskInfo_CancelActivityNexusTaskDetails{ ScheduledEventIds: task.ScheduledEventIDs, - WorkerInstanceKey: task.WorkerInstanceKey, }, }, } @@ -140,7 +139,6 @@ func transferCancelActivityNexusTaskFromProto(task *persistencespb.TransferTaskI TaskID: task.TaskId, Version: task.Version, ScheduledEventIDs: details.GetScheduledEventIds(), - WorkerInstanceKey: details.GetWorkerInstanceKey(), } } diff --git a/common/persistence/serialization/task_serializers_test.go b/common/persistence/serialization/task_serializers_test.go index dd037e430f..af4e86382a 100644 --- a/common/persistence/serialization/task_serializers_test.go +++ b/common/persistence/serialization/task_serializers_test.go @@ -176,7 +176,6 @@ func (s *taskSerializerSuite) TestTransferCancelActivityNexusTask() { TaskID: rand.Int63(), Version: rand.Int63(), ScheduledEventIDs: []int64{rand.Int63(), rand.Int63(), rand.Int63()}, - WorkerInstanceKey: "test-worker-instance-key", } s.assertEqualTasks(cancelActivityNexusTask) diff --git a/proto/internal/temporal/server/api/persistence/v1/executions.proto b/proto/internal/temporal/server/api/persistence/v1/executions.proto index ad8c90c99f..9c3d567c9a 100644 --- a/proto/internal/temporal/server/api/persistence/v1/executions.proto +++ b/proto/internal/temporal/server/api/persistence/v1/executions.proto @@ -351,11 +351,10 @@ message TransferTaskInfo { bool can_skip_visibility_archival = 1; } - // Details for a Nexus task that cancels activities belonging to a specific worker. + // Details for a Nexus task that cancels activities. message CancelActivityNexusTaskDetails { // Scheduled event IDs of activities to cancel. repeated int64 scheduled_event_ids = 1; - string worker_instance_key = 2; } oneof task_details { diff --git a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go index 03277b7033..ea9a3dce89 100644 --- a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go +++ b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go @@ -665,12 +665,11 @@ func (handler *workflowTaskCompletedHandler) handleCommandRequestCancelActivity( return nil, err } handler.activityNotStartedCancelled = true - } else if ai.WorkerInstanceKey != "" && handler.config.EnableActivityCancellationNexusTask() { + } else if ai.WorkerControlTaskQueue != "" && handler.config.EnableActivityCancellationNexusTask() { // Activity has started and worker supports Nexus tasks - create cancel task. handler.mutableState.AddTasks(&tasks.CancelActivityNexusTask{ WorkflowKey: handler.mutableState.GetWorkflowKey(), ScheduledEventIDs: []int64{ai.ScheduledEventId}, - WorkerInstanceKey: ai.WorkerInstanceKey, }) } } diff --git a/service/history/tasks/cancel_activity_nexus_task.go b/service/history/tasks/cancel_activity_nexus_task.go index 05382dd45a..824571467b 100644 --- a/service/history/tasks/cancel_activity_nexus_task.go +++ b/service/history/tasks/cancel_activity_nexus_task.go @@ -19,7 +19,6 @@ type ( // ScheduledEventIDs of activities to cancel (batched by worker). ScheduledEventIDs []int64 - WorkerInstanceKey string } ) @@ -60,12 +59,11 @@ func (t *CancelActivityNexusTask) GetType() enumsspb.TaskType { } func (t *CancelActivityNexusTask) String() string { - return fmt.Sprintf("CancelActivityNexusTask{WorkflowKey: %s, VisibilityTimestamp: %v, TaskID: %v, ScheduledEventIDs: %v, WorkerInstanceKey: %v, Version: %v}", + return fmt.Sprintf("CancelActivityNexusTask{WorkflowKey: %s, VisibilityTimestamp: %v, TaskID: %v, ScheduledEventIDs: %v, Version: %v}", t.WorkflowKey.String(), t.VisibilityTimestamp, t.TaskID, t.ScheduledEventIDs, - t.WorkerInstanceKey, t.Version, ) } From 39c1759cc9660c4ab876b7e6741d43c676dfcaf9 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Wed, 11 Feb 2026 19:17:49 -0800 Subject: [PATCH 05/14] Move CancelActivityNexusTask creation to task_generator --- .../workflow_task_completed_handler.go | 12 +++++------- service/history/interfaces/mutable_state.go | 1 + service/history/workflow/mutable_state_impl.go | 4 ++++ service/history/workflow/task_generator.go | 18 ++++++++++++++++++ 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go index ea9a3dce89..b19b6a9c79 100644 --- a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go +++ b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go @@ -39,7 +39,6 @@ import ( "go.temporal.io/server/service/history/api" "go.temporal.io/server/service/history/configs" historyi "go.temporal.io/server/service/history/interfaces" - "go.temporal.io/server/service/history/tasks" "go.temporal.io/server/service/history/workflow" "go.temporal.io/server/service/history/workflow/update" "google.golang.org/protobuf/proto" @@ -665,12 +664,11 @@ func (handler *workflowTaskCompletedHandler) handleCommandRequestCancelActivity( return nil, err } handler.activityNotStartedCancelled = true - } else if ai.WorkerControlTaskQueue != "" && handler.config.EnableActivityCancellationNexusTask() { - // Activity has started and worker supports Nexus tasks - create cancel task. - handler.mutableState.AddTasks(&tasks.CancelActivityNexusTask{ - WorkflowKey: handler.mutableState.GetWorkflowKey(), - ScheduledEventIDs: []int64{ai.ScheduledEventId}, - }) + } else if ai.StartedEventId != common.EmptyEventID { + // Activity has started - create cancel task and send to worker via Nexus. + if err := handler.mutableState.AddCancelActivityNexusTasks(ai.ScheduledEventId); err != nil { + return nil, err + } } } return actCancelReqEvent, nil diff --git a/service/history/interfaces/mutable_state.go b/service/history/interfaces/mutable_state.go index cd07f9ac69..ebf16ab351 100644 --- a/service/history/interfaces/mutable_state.go +++ b/service/history/interfaces/mutable_state.go @@ -46,6 +46,7 @@ type ( AddActivityTaskCancelRequestedEvent(int64, int64, string) (*historypb.HistoryEvent, *persistencespb.ActivityInfo, error) AddActivityTaskCanceledEvent(int64, int64, int64, *commonpb.Payloads, string) (*historypb.HistoryEvent, error) + AddCancelActivityNexusTasks(int64) error AddActivityTaskCompletedEvent(int64, int64, *workflowservice.RespondActivityTaskCompletedRequest) (*historypb.HistoryEvent, error) AddActivityTaskFailedEvent(int64, int64, *failurepb.Failure, enumspb.RetryState, string, *commonpb.WorkerVersionStamp) (*historypb.HistoryEvent, error) AddActivityTaskScheduledEvent(int64, *commandpb.ScheduleActivityTaskCommandAttributes, bool) (*historypb.HistoryEvent, *persistencespb.ActivityInfo, error) diff --git a/service/history/workflow/mutable_state_impl.go b/service/history/workflow/mutable_state_impl.go index 0b92eb7ddc..759102c90e 100644 --- a/service/history/workflow/mutable_state_impl.go +++ b/service/history/workflow/mutable_state_impl.go @@ -4369,6 +4369,10 @@ func (ms *MutableStateImpl) AddActivityTaskCancelRequestedEvent( return actCancelReqEvent, ai, nil } +func (ms *MutableStateImpl) AddCancelActivityNexusTasks(scheduledEventID int64) error { + return ms.taskGenerator.GenerateCancelActivityNexusTasks(scheduledEventID) +} + func (ms *MutableStateImpl) ApplyActivityTaskCancelRequestedEvent( event *historypb.HistoryEvent, ) error { diff --git a/service/history/workflow/task_generator.go b/service/history/workflow/task_generator.go index c06d5563b2..e9af62b359 100644 --- a/service/history/workflow/task_generator.go +++ b/service/history/workflow/task_generator.go @@ -63,6 +63,7 @@ type ( activityScheduledEventID int64, ) error GenerateActivityRetryTasks(activityInfo *persistencespb.ActivityInfo) error + GenerateCancelActivityNexusTasks(scheduledEventID int64) error GenerateChildWorkflowTasks( childInitiatedEventId int64, ) error @@ -583,6 +584,23 @@ func (r *TaskGeneratorImpl) GenerateActivityRetryTasks(activityInfo *persistence return nil } +func (r *TaskGeneratorImpl) GenerateCancelActivityNexusTasks(scheduledEventID int64) error { + if !r.config.EnableActivityCancellationNexusTask() { + return nil + } + + ai, ok := r.mutableState.GetActivityInfo(scheduledEventID) + if !ok || ai.WorkerControlTaskQueue == "" { + return nil + } + + r.mutableState.AddTasks(&tasks.CancelActivityNexusTask{ + WorkflowKey: r.mutableState.GetWorkflowKey(), + ScheduledEventIDs: []int64{scheduledEventID}, + }) + return nil +} + func (r *TaskGeneratorImpl) GenerateChildWorkflowTasks( childInitiatedEventId int64, ) error { From 131c278582540cb519dd77c19e3fd9a8f459fb5f Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Wed, 11 Feb 2026 19:27:32 -0800 Subject: [PATCH 06/14] Add WorkerControlTaskQueue to CancelActivityNexusTask --- api/persistence/v1/executions.pb.go | 21 ++++++++++++++----- .../serialization/task_serializers.go | 12 ++++++----- .../serialization/task_serializers_test.go | 11 +++++----- .../api/persistence/v1/executions.proto | 2 ++ .../tasks/cancel_activity_nexus_task.go | 2 ++ service/history/workflow/task_generator.go | 5 +++-- 6 files changed, 36 insertions(+), 17 deletions(-) diff --git a/api/persistence/v1/executions.pb.go b/api/persistence/v1/executions.pb.go index da802fecc5..e029f0f093 100644 --- a/api/persistence/v1/executions.pb.go +++ b/api/persistence/v1/executions.pb.go @@ -4143,8 +4143,10 @@ type TransferTaskInfo_CancelActivityNexusTaskDetails struct { state protoimpl.MessageState `protogen:"open.v1"` // Scheduled event IDs of activities to cancel. ScheduledEventIds []int64 `protobuf:"varint,1,rep,packed,name=scheduled_event_ids,json=scheduledEventIds,proto3" json:"scheduled_event_ids,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // The Nexus queue to dispatch the cancel request to. + WorkerControlTaskQueue string `protobuf:"bytes,2,opt,name=worker_control_task_queue,json=workerControlTaskQueue,proto3" json:"worker_control_task_queue,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) Reset() { @@ -4184,6 +4186,13 @@ func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) GetScheduledEventIds() return nil } +func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) GetWorkerControlTaskQueue() string { + if x != nil { + return x.WorkerControlTaskQueue + } + return "" +} + // Deprecated. Clean up with versioning-2. [cleanup-old-wv] type ActivityInfo_UseWorkflowBuildIdInfo struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -4798,7 +4807,8 @@ const file_temporal_server_api_persistence_v1_executions_proto_rawDesc = "" + "\rRequestIDInfo\x12?\n" + "\n" + "event_type\x18\x01 \x01(\x0e2 .temporal.api.enums.v1.EventTypeR\teventType\x12\x19\n" + - "\bevent_id\x18\x02 \x01(\x03R\aeventId\"\xd5\t\n" + + "\bevent_id\x18\x02 \x01(\x03R\aeventId\"\x91\n" + + "\n" + "\x10TransferTaskInfo\x12!\n" + "\fnamespace_id\x18\x01 \x01(\tR\vnamespaceId\x12\x1f\n" + "\vworkflow_id\x18\x02 \x01(\tR\n" + @@ -4822,9 +4832,10 @@ const file_temporal_server_api_persistence_v1_executions_proto_rawDesc = "" + "\"cancel_activity_nexus_task_details\x18\x13 \x01(\v2S.temporal.server.api.persistence.v1.TransferTaskInfo.CancelActivityNexusTaskDetailsH\x00R\x1ecancelActivityNexusTaskDetails\x12\x14\n" + "\x05stamp\x18\x11 \x01(\x05R\x05stamp\x1a\\\n" + "\x19CloseExecutionTaskDetails\x12?\n" + - "\x1ccan_skip_visibility_archival\x18\x01 \x01(\bR\x19canSkipVisibilityArchival\x1aP\n" + + "\x1ccan_skip_visibility_archival\x18\x01 \x01(\bR\x19canSkipVisibilityArchival\x1a\x8b\x01\n" + "\x1eCancelActivityNexusTaskDetails\x12.\n" + - "\x13scheduled_event_ids\x18\x01 \x03(\x03R\x11scheduledEventIdsB\x0e\n" + + "\x13scheduled_event_ids\x18\x01 \x03(\x03R\x11scheduledEventIds\x129\n" + + "\x19worker_control_task_queue\x18\x02 \x01(\tR\x16workerControlTaskQueueB\x0e\n" + "\ftask_detailsJ\x04\b\x0e\x10\x0f\"\xd8\b\n" + "\x13ReplicationTaskInfo\x12!\n" + "\fnamespace_id\x18\x01 \x01(\tR\vnamespaceId\x12\x1f\n" + diff --git a/common/persistence/serialization/task_serializers.go b/common/persistence/serialization/task_serializers.go index 6b8dff8b24..62b2fc343a 100644 --- a/common/persistence/serialization/task_serializers.go +++ b/common/persistence/serialization/task_serializers.go @@ -121,7 +121,8 @@ func transferCancelActivityNexusTaskToProto(task *tasks.CancelActivityNexusTask) VisibilityTime: timestamppb.New(task.VisibilityTimestamp), TaskDetails: &persistencespb.TransferTaskInfo_CancelActivityNexusTaskDetails_{ CancelActivityNexusTaskDetails: &persistencespb.TransferTaskInfo_CancelActivityNexusTaskDetails{ - ScheduledEventIds: task.ScheduledEventIDs, + ScheduledEventIds: task.ScheduledEventIDs, + WorkerControlTaskQueue: task.WorkerControlTaskQueue, }, }, } @@ -135,10 +136,11 @@ func transferCancelActivityNexusTaskFromProto(task *persistencespb.TransferTaskI task.WorkflowId, task.RunId, ), - VisibilityTimestamp: task.VisibilityTime.AsTime(), - TaskID: task.TaskId, - Version: task.Version, - ScheduledEventIDs: details.GetScheduledEventIds(), + VisibilityTimestamp: task.VisibilityTime.AsTime(), + TaskID: task.TaskId, + Version: task.Version, + ScheduledEventIDs: details.GetScheduledEventIds(), + WorkerControlTaskQueue: details.GetWorkerControlTaskQueue(), } } diff --git a/common/persistence/serialization/task_serializers_test.go b/common/persistence/serialization/task_serializers_test.go index af4e86382a..6e7ad603d9 100644 --- a/common/persistence/serialization/task_serializers_test.go +++ b/common/persistence/serialization/task_serializers_test.go @@ -171,11 +171,12 @@ func (s *taskSerializerSuite) TestTransferResetTask() { func (s *taskSerializerSuite) TestTransferCancelActivityNexusTask() { cancelActivityNexusTask := &tasks.CancelActivityNexusTask{ - WorkflowKey: s.workflowKey, - VisibilityTimestamp: time.Unix(0, rand.Int63()).UTC(), - TaskID: rand.Int63(), - Version: rand.Int63(), - ScheduledEventIDs: []int64{rand.Int63(), rand.Int63(), rand.Int63()}, + WorkflowKey: s.workflowKey, + VisibilityTimestamp: time.Unix(0, rand.Int63()).UTC(), + TaskID: rand.Int63(), + Version: rand.Int63(), + ScheduledEventIDs: []int64{rand.Int63(), rand.Int63(), rand.Int63()}, + WorkerControlTaskQueue: "test-control-queue", } s.assertEqualTasks(cancelActivityNexusTask) diff --git a/proto/internal/temporal/server/api/persistence/v1/executions.proto b/proto/internal/temporal/server/api/persistence/v1/executions.proto index 9c3d567c9a..00fb34de5f 100644 --- a/proto/internal/temporal/server/api/persistence/v1/executions.proto +++ b/proto/internal/temporal/server/api/persistence/v1/executions.proto @@ -355,6 +355,8 @@ message TransferTaskInfo { message CancelActivityNexusTaskDetails { // Scheduled event IDs of activities to cancel. repeated int64 scheduled_event_ids = 1; + // The Nexus queue to dispatch the cancel request to. + string worker_control_task_queue = 2; } oneof task_details { diff --git a/service/history/tasks/cancel_activity_nexus_task.go b/service/history/tasks/cancel_activity_nexus_task.go index 824571467b..0ed3112daa 100644 --- a/service/history/tasks/cancel_activity_nexus_task.go +++ b/service/history/tasks/cancel_activity_nexus_task.go @@ -19,6 +19,8 @@ type ( // ScheduledEventIDs of activities to cancel (batched by worker). ScheduledEventIDs []int64 + // WorkerControlTaskQueue is the Nexus queue to dispatch the cancel request to. + WorkerControlTaskQueue string } ) diff --git a/service/history/workflow/task_generator.go b/service/history/workflow/task_generator.go index e9af62b359..5b604cd640 100644 --- a/service/history/workflow/task_generator.go +++ b/service/history/workflow/task_generator.go @@ -595,8 +595,9 @@ func (r *TaskGeneratorImpl) GenerateCancelActivityNexusTasks(scheduledEventID in } r.mutableState.AddTasks(&tasks.CancelActivityNexusTask{ - WorkflowKey: r.mutableState.GetWorkflowKey(), - ScheduledEventIDs: []int64{scheduledEventID}, + WorkflowKey: r.mutableState.GetWorkflowKey(), + ScheduledEventIDs: []int64{scheduledEventID}, + WorkerControlTaskQueue: ai.WorkerControlTaskQueue, }) return nil } From 7bc8adaae92e25e4d4d25f33fc9a89bfc6f8e50d Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Wed, 11 Feb 2026 19:36:31 -0800 Subject: [PATCH 07/14] Add metrics tag and low priority for CancelActivityNexusTask --- common/metrics/metric_defs.go | 1 + service/history/queues/metrics.go | 2 ++ service/history/queues/priority_assigner.go | 1 + 3 files changed, 4 insertions(+) diff --git a/common/metrics/metric_defs.go b/common/metrics/metric_defs.go index 08c99e689d..f77fb50d78 100644 --- a/common/metrics/metric_defs.go +++ b/common/metrics/metric_defs.go @@ -567,6 +567,7 @@ const ( TaskTypeTransferActiveTaskStartChildExecution = "TransferActiveTaskStartChildExecution" TaskTypeTransferActiveTaskResetWorkflow = "TransferActiveTaskResetWorkflow" TaskTypeTransferActiveTaskDeleteExecution = "TransferActiveTaskDeleteExecution" + TaskTypeTransferActiveTaskCancelActivityNexus = "TransferActiveTaskCancelActivityNexus" TaskTypeTransferStandbyTaskActivity = "TransferStandbyTaskActivity" TaskTypeTransferStandbyTaskWorkflowTask = "TransferStandbyTaskWorkflowTask" TaskTypeTransferStandbyTaskCloseExecution = "TransferStandbyTaskCloseExecution" diff --git a/service/history/queues/metrics.go b/service/history/queues/metrics.go index c836dc5451..c2b581eb61 100644 --- a/service/history/queues/metrics.go +++ b/service/history/queues/metrics.go @@ -48,6 +48,8 @@ func GetActiveTransferTaskTypeTagValue( return metrics.TaskTypeTransferActiveTaskResetWorkflow case *tasks.DeleteExecutionTask: return metrics.TaskTypeTransferActiveTaskDeleteExecution + case *tasks.CancelActivityNexusTask: + return metrics.TaskTypeTransferActiveTaskCancelActivityNexus case *tasks.ChasmTask: return prefix + "." + getCHASMTaskTypeTagValue(t, chasmRegistry) default: diff --git a/service/history/queues/priority_assigner.go b/service/history/queues/priority_assigner.go index cbaf7d4b95..e8ee618f3e 100644 --- a/service/history/queues/priority_assigner.go +++ b/service/history/queues/priority_assigner.go @@ -49,6 +49,7 @@ func (a *priorityAssignerImpl) Assign(executable Executable) tasks.Priority { enumsspb.TASK_TYPE_TRANSFER_DELETE_EXECUTION, enumsspb.TASK_TYPE_VISIBILITY_DELETE_EXECUTION, enumsspb.TASK_TYPE_ARCHIVAL_ARCHIVE_EXECUTION, + enumsspb.TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS, enumsspb.TASK_TYPE_UNSPECIFIED: // add more task types here if we believe it's ok to delay those tasks // and assign them the same priority as throttled tasks From 01e48221b6f9799bf7e3b67369e32afc739a70d7 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Wed, 11 Feb 2026 22:49:14 -0800 Subject: [PATCH 08/14] Update comment for standby executor --- .../workflow_task_completed_handler.go | 1 + service/history/transfer_queue_standby_task_executor.go | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go index b19b6a9c79..31c03d70e9 100644 --- a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go +++ b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go @@ -666,6 +666,7 @@ func (handler *workflowTaskCompletedHandler) handleCommandRequestCancelActivity( handler.activityNotStartedCancelled = true } else if ai.StartedEventId != common.EmptyEventID { // Activity has started - create cancel task and send to worker via Nexus. + // TODO: Batch tasks for the same control queue. if err := handler.mutableState.AddCancelActivityNexusTasks(ai.ScheduledEventId); err != nil { return nil, err } diff --git a/service/history/transfer_queue_standby_task_executor.go b/service/history/transfer_queue_standby_task_executor.go index a9738cab2d..0383981796 100644 --- a/service/history/transfer_queue_standby_task_executor.go +++ b/service/history/transfer_queue_standby_task_executor.go @@ -109,7 +109,8 @@ func (t *transferQueueStandbyTaskExecutor) Execute( case *tasks.ChasmTask: err = t.executeChasmSideEffectTransferTask(ctx, task) case *tasks.CancelActivityNexusTask: - // Cancel activity nexus task is best-effort and only processed in active cluster + // Nexus operation is synchronous. So if the failover happens waiting for the Nexus response, + // the task will be retried in standby. err = nil default: err = errUnknownTransferTask From e9b1fac93fcf124515576a05767bbb63e4cfaa62 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Wed, 11 Feb 2026 22:59:13 -0800 Subject: [PATCH 09/14] Add Version field to CancelActivityNexusTask for multi-cluster support --- service/history/workflow/task_generator.go | 1 + 1 file changed, 1 insertion(+) diff --git a/service/history/workflow/task_generator.go b/service/history/workflow/task_generator.go index 5b604cd640..6162f6287f 100644 --- a/service/history/workflow/task_generator.go +++ b/service/history/workflow/task_generator.go @@ -598,6 +598,7 @@ func (r *TaskGeneratorImpl) GenerateCancelActivityNexusTasks(scheduledEventID in WorkflowKey: r.mutableState.GetWorkflowKey(), ScheduledEventIDs: []int64{scheduledEventID}, WorkerControlTaskQueue: ai.WorkerControlTaskQueue, + Version: ai.Version, }) return nil } From faff7eeb5a87045b70fe79064a8008c95ff67929 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Wed, 11 Feb 2026 23:08:03 -0800 Subject: [PATCH 10/14] Add comment --- service/history/tasks/utils.go | 1 + service/history/workflow/task_generator.go | 1 + 2 files changed, 2 insertions(+) diff --git a/service/history/tasks/utils.go b/service/history/tasks/utils.go index 6532528162..1784b608bd 100644 --- a/service/history/tasks/utils.go +++ b/service/history/tasks/utils.go @@ -82,6 +82,7 @@ func GetTransferTaskEventID( if len(task.ScheduledEventIDs) > 0 { eventID = task.ScheduledEventIDs[0] } else { + // Should never happen. eventID = common.FirstEventID } case *FakeTask: diff --git a/service/history/workflow/task_generator.go b/service/history/workflow/task_generator.go index 6162f6287f..ef1073d819 100644 --- a/service/history/workflow/task_generator.go +++ b/service/history/workflow/task_generator.go @@ -590,6 +590,7 @@ func (r *TaskGeneratorImpl) GenerateCancelActivityNexusTasks(scheduledEventID in } ai, ok := r.mutableState.GetActivityInfo(scheduledEventID) + // If control queue is not set, it means the worker that this activity belongs to does not support Nexus tasks. if !ok || ai.WorkerControlTaskQueue == "" { return nil } From d6af322a9d50f0effd6cb1b4f06cf691326c1c91 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Tue, 17 Feb 2026 18:27:45 -0800 Subject: [PATCH 11/14] Add ActivityCommandTask for outbound activity commands - Define ActivityCommandTask in tasks package - Add serialization/deserialization for ActivityCommandTask - Add task generation in TaskGenerator - Add batching logic in workflow task completed handler - Forward WorkerControlTaskQueue through matching service - Add unit tests for task generation and batching - Add metrics support with command type --- api/enums/v1/task.go-helpers.pb.go | 20 +- api/enums/v1/task.pb.go | 108 ++- .../v1/executions.go-helpers.pb.go | 37 + api/persistence/v1/executions.pb.go | 643 +++++++++--------- common/metrics/metric_defs.go | 1 - .../serialization/task_serializers.go | 68 +- .../serialization/task_serializers_test.go | 18 +- common/testing/testvars/test_vars.go | 9 + .../temporal/server/api/enums/v1/task.proto | 10 +- .../api/persistence/v1/executions.proto | 21 +- .../workflow_task_completed_handler.go | 52 +- .../workflow_task_completed_handler_test.go | 69 ++ service/history/interfaces/mutable_state.go | 2 +- .../history/interfaces/mutable_state_mock.go | 14 + service/history/queues/metrics.go | 4 +- service/history/queues/priority_assigner.go | 1 - .../history/tasks/activity_command_task.go | 72 ++ .../tasks/cancel_activity_nexus_task.go | 71 -- service/history/tasks/utils.go | 7 - .../transfer_queue_active_task_executor.go | 3 - .../transfer_queue_standby_task_executor.go | 4 - .../history/workflow/mutable_state_impl.go | 4 +- service/history/workflow/task_generator.go | 18 +- .../history/workflow/task_generator_mock.go | 15 + .../history/workflow/task_generator_test.go | 77 +++ 25 files changed, 827 insertions(+), 521 deletions(-) create mode 100644 service/history/tasks/activity_command_task.go delete mode 100644 service/history/tasks/cancel_activity_nexus_task.go diff --git a/api/enums/v1/task.go-helpers.pb.go b/api/enums/v1/task.go-helpers.pb.go index 4a171504f0..6953cba3fc 100644 --- a/api/enums/v1/task.go-helpers.pb.go +++ b/api/enums/v1/task.go-helpers.pb.go @@ -57,7 +57,7 @@ var ( "ReplicationSyncVersionedTransition": 31, "ChasmPure": 32, "Chasm": 33, - "TransferCancelActivityNexus": 34, + "ActivityCommand": 34, } ) @@ -72,6 +72,24 @@ func TaskTypeFromString(s string) (TaskType, error) { return TaskType(0), fmt.Errorf("%s is not a valid TaskType", s) } +var ( + ActivityCommandType_shorthandValue = map[string]int32{ + "Unspecified": 0, + "Cancel": 1, + } +) + +// ActivityCommandTypeFromString parses a ActivityCommandType value from either the protojson +// canonical SCREAMING_CASE enum or the traditional temporal PascalCase enum to ActivityCommandType +func ActivityCommandTypeFromString(s string) (ActivityCommandType, error) { + if v, ok := ActivityCommandType_value[s]; ok { + return ActivityCommandType(v), nil + } else if v, ok := ActivityCommandType_shorthandValue[s]; ok { + return ActivityCommandType(v), nil + } + return ActivityCommandType(0), fmt.Errorf("%s is not a valid ActivityCommandType", s) +} + var ( TaskPriority_shorthandValue = map[string]int32{ "Unspecified": 0, diff --git a/api/enums/v1/task.pb.go b/api/enums/v1/task.pb.go index 0d382d7c91..bac5034329 100644 --- a/api/enums/v1/task.pb.go +++ b/api/enums/v1/task.pb.go @@ -126,8 +126,8 @@ const ( TASK_TYPE_CHASM_PURE TaskType = 32 // A task with side effects generated by a CHASM component. TASK_TYPE_CHASM TaskType = 33 - // A task to cancel a running activity via Nexus control queue. - TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS TaskType = 34 + // A task to send commands to activities via Nexus. Also see ActivityCommandType. + TASK_TYPE_ACTIVITY_COMMAND TaskType = 34 ) // Enum value maps for TaskType. @@ -164,7 +164,7 @@ var ( 31: "TASK_TYPE_REPLICATION_SYNC_VERSIONED_TRANSITION", 32: "TASK_TYPE_CHASM_PURE", 33: "TASK_TYPE_CHASM", - 34: "TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS", + 34: "TASK_TYPE_ACTIVITY_COMMAND", } TaskType_value = map[string]int32{ "TASK_TYPE_UNSPECIFIED": 0, @@ -198,7 +198,7 @@ var ( "TASK_TYPE_REPLICATION_SYNC_VERSIONED_TRANSITION": 31, "TASK_TYPE_CHASM_PURE": 32, "TASK_TYPE_CHASM": 33, - "TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS": 34, + "TASK_TYPE_ACTIVITY_COMMAND": 34, } ) @@ -232,7 +232,7 @@ func (x TaskType) String() string { return "TransferSignalExecution" case TASK_TYPE_TRANSFER_RESET_WORKFLOW: - // TaskPriority is only used for replication task as of May 2024 + // ActivityCommandType specifies the type of command to send to activities. return "TransferResetWorkflow" case TASK_TYPE_WORKFLOW_TASK_TIMEOUT: return "WorkflowTaskTimeout" @@ -240,14 +240,12 @@ func (x TaskType) String() string { return "ActivityTimeout" case TASK_TYPE_USER_TIMER: return "UserTimer" - - // gap between index can be used for future priority levels if needed case TASK_TYPE_WORKFLOW_RUN_TIMEOUT: return "WorkflowRunTimeout" + + // Enum value maps for ActivityCommandType. case TASK_TYPE_DELETE_HISTORY_EVENT: return "DeleteHistoryEvent" - - // Enum value maps for TaskPriority. case TASK_TYPE_ACTIVITY_RETRY_TIMER: return "ActivityRetryTimer" case TASK_TYPE_WORKFLOW_BACKOFF_TIMER: @@ -273,17 +271,19 @@ func (x TaskType) String() string { case TASK_TYPE_WORKFLOW_EXECUTION_TIMEOUT: return "WorkflowExecutionTimeout" case TASK_TYPE_REPLICATION_SYNC_HSM: - return "ReplicationSyncHsm" - // Deprecated: Use TaskPriority.Descriptor instead. + // Deprecated: Use ActivityCommandType.Descriptor instead. + return "ReplicationSyncHsm" case TASK_TYPE_REPLICATION_SYNC_VERSIONED_TRANSITION: return "ReplicationSyncVersionedTransition" case TASK_TYPE_CHASM_PURE: return "ChasmPure" case TASK_TYPE_CHASM: return "Chasm" - case TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS: - return "TransferCancelActivityNexus" + + // TaskPriority is only used for replication task as of May 2024 + case TASK_TYPE_ACTIVITY_COMMAND: + return "ActivityCommand" default: return strconv.Itoa(int(x)) } @@ -306,15 +306,68 @@ func (TaskType) EnumDescriptor() ([]byte, []int) { return file_temporal_server_api_enums_v1_task_proto_rawDescGZIP(), []int{1} } +type ActivityCommandType int32 + +const ( + ACTIVITY_COMMAND_TYPE_UNSPECIFIED ActivityCommandType = 0 + ACTIVITY_COMMAND_TYPE_CANCEL ActivityCommandType = 1 +) + +var ( + ActivityCommandType_name = map[int32]string{ + 0: "ACTIVITY_COMMAND_TYPE_UNSPECIFIED", + 1: "ACTIVITY_COMMAND_TYPE_CANCEL", + } + ActivityCommandType_value = map[string]int32{ + "ACTIVITY_COMMAND_TYPE_UNSPECIFIED": 0, + "ACTIVITY_COMMAND_TYPE_CANCEL": 1, + } +) + +func (x ActivityCommandType) Enum() *ActivityCommandType { + p := new(ActivityCommandType) + *p = x + return p +} + +func (x ActivityCommandType) String() string { + switch x { + case ACTIVITY_COMMAND_TYPE_UNSPECIFIED: + return "Unspecified" + case ACTIVITY_COMMAND_TYPE_CANCEL: + return "Cancel" + default: + return strconv.Itoa(int(x)) + } + +} + +func (ActivityCommandType) Descriptor() protoreflect.EnumDescriptor { + return file_temporal_server_api_enums_v1_task_proto_enumTypes[2].Descriptor() +} + +func (ActivityCommandType) Type() protoreflect.EnumType { + return &file_temporal_server_api_enums_v1_task_proto_enumTypes[2] +} + +func (x ActivityCommandType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +func (ActivityCommandType) EnumDescriptor() ([]byte, []int) { + return file_temporal_server_api_enums_v1_task_proto_rawDescGZIP(), []int{2} +} + type TaskPriority int32 const ( TASK_PRIORITY_UNSPECIFIED TaskPriority = 0 TASK_PRIORITY_HIGH TaskPriority = 1 - + // gap between index can be used for future priority levels if needed TASK_PRIORITY_LOW TaskPriority = 10 ) +// Enum value maps for TaskPriority. var ( TaskPriority_name = map[int32]string{ 0: "TASK_PRIORITY_UNSPECIFIED", @@ -349,19 +402,20 @@ func (x TaskPriority) String() string { } func (TaskPriority) Descriptor() protoreflect.EnumDescriptor { - return file_temporal_server_api_enums_v1_task_proto_enumTypes[2].Descriptor() + return file_temporal_server_api_enums_v1_task_proto_enumTypes[3].Descriptor() } func (TaskPriority) Type() protoreflect.EnumType { - return &file_temporal_server_api_enums_v1_task_proto_enumTypes[2] + return &file_temporal_server_api_enums_v1_task_proto_enumTypes[3] } func (x TaskPriority) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } +// Deprecated: Use TaskPriority.Descriptor instead. func (TaskPriority) EnumDescriptor() ([]byte, []int) { - return file_temporal_server_api_enums_v1_task_proto_rawDescGZIP(), []int{2} + return file_temporal_server_api_enums_v1_task_proto_rawDescGZIP(), []int{3} } var File_temporal_server_api_enums_v1_task_proto protoreflect.FileDescriptor @@ -373,7 +427,7 @@ const file_temporal_server_api_enums_v1_task_proto_rawDesc = "" + "TaskSource\x12\x1b\n" + "\x17TASK_SOURCE_UNSPECIFIED\x10\x00\x12\x17\n" + "\x13TASK_SOURCE_HISTORY\x10\x01\x12\x1a\n" + - "\x16TASK_SOURCE_DB_BACKLOG\x10\x02*\xe4\t\n" + + "\x16TASK_SOURCE_DB_BACKLOG\x10\x02*\xd6\t\n" + "\bTaskType\x12\x19\n" + "\x15TASK_TYPE_UNSPECIFIED\x10\x00\x12!\n" + "\x1dTASK_TYPE_REPLICATION_HISTORY\x10\x01\x12'\n" + @@ -406,8 +460,11 @@ const file_temporal_server_api_enums_v1_task_proto_rawDesc = "" + "\x1eTASK_TYPE_REPLICATION_SYNC_HSM\x10\x1e\x123\n" + "/TASK_TYPE_REPLICATION_SYNC_VERSIONED_TRANSITION\x10\x1f\x12\x18\n" + "\x14TASK_TYPE_CHASM_PURE\x10 \x12\x13\n" + - "\x0fTASK_TYPE_CHASM\x10!\x12,\n" + - "(TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS\x10\"\"\x04\b\t\x10\t\"\x04\b\v\x10\v\"\x04\b\x17\x10\x17*\\\n" + + "\x0fTASK_TYPE_CHASM\x10!\x12\x1e\n" + + "\x1aTASK_TYPE_ACTIVITY_COMMAND\x10\"\"\x04\b\t\x10\t\"\x04\b\v\x10\v\"\x04\b\x17\x10\x17*^\n" + + "\x13ActivityCommandType\x12%\n" + + "!ACTIVITY_COMMAND_TYPE_UNSPECIFIED\x10\x00\x12 \n" + + "\x1cACTIVITY_COMMAND_TYPE_CANCEL\x10\x01*\\\n" + "\fTaskPriority\x12\x1d\n" + "\x19TASK_PRIORITY_UNSPECIFIED\x10\x00\x12\x16\n" + "\x12TASK_PRIORITY_HIGH\x10\x01\x12\x15\n" + @@ -426,11 +483,12 @@ func file_temporal_server_api_enums_v1_task_proto_rawDescGZIP() []byte { return file_temporal_server_api_enums_v1_task_proto_rawDescData } -var file_temporal_server_api_enums_v1_task_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_temporal_server_api_enums_v1_task_proto_enumTypes = make([]protoimpl.EnumInfo, 4) var file_temporal_server_api_enums_v1_task_proto_goTypes = []any{ - (TaskSource)(0), // 0: temporal.server.api.enums.v1.TaskSource - (TaskType)(0), // 1: temporal.server.api.enums.v1.TaskType - (TaskPriority)(0), // 2: temporal.server.api.enums.v1.TaskPriority + (TaskSource)(0), // 0: temporal.server.api.enums.v1.TaskSource + (TaskType)(0), // 1: temporal.server.api.enums.v1.TaskType + (ActivityCommandType)(0), // 2: temporal.server.api.enums.v1.ActivityCommandType + (TaskPriority)(0), // 3: temporal.server.api.enums.v1.TaskPriority } var file_temporal_server_api_enums_v1_task_proto_depIdxs = []int32{ 0, // [0:0] is the sub-list for method output_type @@ -450,7 +508,7 @@ func file_temporal_server_api_enums_v1_task_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_enums_v1_task_proto_rawDesc), len(file_temporal_server_api_enums_v1_task_proto_rawDesc)), - NumEnums: 3, + NumEnums: 4, NumMessages: 0, NumExtensions: 0, NumServices: 0, diff --git a/api/persistence/v1/executions.go-helpers.pb.go b/api/persistence/v1/executions.go-helpers.pb.go index b6e6a0dcd1..965f8080bb 100644 --- a/api/persistence/v1/executions.go-helpers.pb.go +++ b/api/persistence/v1/executions.go-helpers.pb.go @@ -412,6 +412,43 @@ func (this *OutboundTaskInfo) Equal(that interface{}) bool { return proto.Equal(this, that1) } +// Marshal an object of type ActivityCommandTaskInfo to the protobuf v3 wire format +func (val *ActivityCommandTaskInfo) Marshal() ([]byte, error) { + return proto.Marshal(val) +} + +// Unmarshal an object of type ActivityCommandTaskInfo from the protobuf v3 wire format +func (val *ActivityCommandTaskInfo) Unmarshal(buf []byte) error { + return proto.Unmarshal(buf, val) +} + +// Size returns the size of the object, in bytes, once serialized +func (val *ActivityCommandTaskInfo) Size() int { + return proto.Size(val) +} + +// Equal returns whether two ActivityCommandTaskInfo values are equivalent by recursively +// comparing the message's fields. +// For more information see the documentation for +// https://pkg.go.dev/google.golang.org/protobuf/proto#Equal +func (this *ActivityCommandTaskInfo) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + var that1 *ActivityCommandTaskInfo + switch t := that.(type) { + case *ActivityCommandTaskInfo: + that1 = t + case ActivityCommandTaskInfo: + that1 = &t + default: + return false + } + + return proto.Equal(this, that1) +} + // Marshal an object of type NexusInvocationTaskInfo to the protobuf v3 wire format func (val *NexusInvocationTaskInfo) Marshal() ([]byte, error) { return proto.Marshal(val) diff --git a/api/persistence/v1/executions.pb.go b/api/persistence/v1/executions.pb.go index e029f0f093..fea1986e34 100644 --- a/api/persistence/v1/executions.pb.go +++ b/api/persistence/v1/executions.pb.go @@ -1366,7 +1366,6 @@ type TransferTaskInfo struct { // // *TransferTaskInfo_CloseExecutionTaskDetails_ // *TransferTaskInfo_ChasmTaskInfo - // *TransferTaskInfo_CancelActivityNexusTaskDetails_ TaskDetails isTransferTaskInfo_TaskDetails `protobuf_oneof:"task_details"` // Stamp represents the "version" of the entity's internal state for which the transfer task was created. // It increases monotonically when the entity's options are modified. @@ -1529,15 +1528,6 @@ func (x *TransferTaskInfo) GetChasmTaskInfo() *ChasmTaskInfo { return nil } -func (x *TransferTaskInfo) GetCancelActivityNexusTaskDetails() *TransferTaskInfo_CancelActivityNexusTaskDetails { - if x != nil { - if x, ok := x.TaskDetails.(*TransferTaskInfo_CancelActivityNexusTaskDetails_); ok { - return x.CancelActivityNexusTaskDetails - } - } - return nil -} - func (x *TransferTaskInfo) GetStamp() int32 { if x != nil { return x.Stamp @@ -1558,16 +1548,10 @@ type TransferTaskInfo_ChasmTaskInfo struct { ChasmTaskInfo *ChasmTaskInfo `protobuf:"bytes,18,opt,name=chasm_task_info,json=chasmTaskInfo,proto3,oneof"` } -type TransferTaskInfo_CancelActivityNexusTaskDetails_ struct { - CancelActivityNexusTaskDetails *TransferTaskInfo_CancelActivityNexusTaskDetails `protobuf:"bytes,19,opt,name=cancel_activity_nexus_task_details,json=cancelActivityNexusTaskDetails,proto3,oneof"` -} - func (*TransferTaskInfo_CloseExecutionTaskDetails_) isTransferTaskInfo_TaskDetails() {} func (*TransferTaskInfo_ChasmTaskInfo) isTransferTaskInfo_TaskDetails() {} -func (*TransferTaskInfo_CancelActivityNexusTaskDetails_) isTransferTaskInfo_TaskDetails() {} - // replication column type ReplicationTaskInfo struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -2230,6 +2214,7 @@ type OutboundTaskInfo struct { // // *OutboundTaskInfo_StateMachineInfo // *OutboundTaskInfo_ChasmTaskInfo + // *OutboundTaskInfo_ActivityCommandInfo TaskDetails isOutboundTaskInfo_TaskDetails `protobuf_oneof:"task_details"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -2339,6 +2324,15 @@ func (x *OutboundTaskInfo) GetChasmTaskInfo() *ChasmTaskInfo { return nil } +func (x *OutboundTaskInfo) GetActivityCommandInfo() *ActivityCommandTaskInfo { + if x != nil { + if x, ok := x.TaskDetails.(*OutboundTaskInfo_ActivityCommandInfo); ok { + return x.ActivityCommandInfo + } + } + return nil +} + type isOutboundTaskInfo_TaskDetails interface { isOutboundTaskInfo_TaskDetails() } @@ -2353,10 +2347,72 @@ type OutboundTaskInfo_ChasmTaskInfo struct { ChasmTaskInfo *ChasmTaskInfo `protobuf:"bytes,9,opt,name=chasm_task_info,json=chasmTaskInfo,proto3,oneof"` } +type OutboundTaskInfo_ActivityCommandInfo struct { + // If the task is an activity command task. + ActivityCommandInfo *ActivityCommandTaskInfo `protobuf:"bytes,10,opt,name=activity_command_info,json=activityCommandInfo,proto3,oneof"` +} + func (*OutboundTaskInfo_StateMachineInfo) isOutboundTaskInfo_TaskDetails() {} func (*OutboundTaskInfo_ChasmTaskInfo) isOutboundTaskInfo_TaskDetails() {} +func (*OutboundTaskInfo_ActivityCommandInfo) isOutboundTaskInfo_TaskDetails() {} + +// ActivityCommandTaskInfo contains details for activity command operations. +type ActivityCommandTaskInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Type of command to send. + CommandType v1.ActivityCommandType `protobuf:"varint,1,opt,name=command_type,json=commandType,proto3,enum=temporal.server.api.enums.v1.ActivityCommandType" json:"command_type,omitempty"` + // Scheduled event IDs of activities to send command to. + ScheduledEventIds []int64 `protobuf:"varint,2,rep,packed,name=scheduled_event_ids,json=scheduledEventIds,proto3" json:"scheduled_event_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ActivityCommandTaskInfo) Reset() { + *x = ActivityCommandTaskInfo{} + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ActivityCommandTaskInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActivityCommandTaskInfo) ProtoMessage() {} + +func (x *ActivityCommandTaskInfo) ProtoReflect() protoreflect.Message { + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ActivityCommandTaskInfo.ProtoReflect.Descriptor instead. +func (*ActivityCommandTaskInfo) Descriptor() ([]byte, []int) { + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{11} +} + +func (x *ActivityCommandTaskInfo) GetCommandType() v1.ActivityCommandType { + if x != nil { + return x.CommandType + } + return v1.ActivityCommandType(0) +} + +func (x *ActivityCommandTaskInfo) GetScheduledEventIds() []int64 { + if x != nil { + return x.ScheduledEventIds + } + return nil +} + type NexusInvocationTaskInfo struct { state protoimpl.MessageState `protogen:"open.v1"` Attempt int32 `protobuf:"varint,1,opt,name=attempt,proto3" json:"attempt,omitempty"` @@ -2366,7 +2422,7 @@ type NexusInvocationTaskInfo struct { func (x *NexusInvocationTaskInfo) Reset() { *x = NexusInvocationTaskInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[11] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2378,7 +2434,7 @@ func (x *NexusInvocationTaskInfo) String() string { func (*NexusInvocationTaskInfo) ProtoMessage() {} func (x *NexusInvocationTaskInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[11] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2391,7 +2447,7 @@ func (x *NexusInvocationTaskInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use NexusInvocationTaskInfo.ProtoReflect.Descriptor instead. func (*NexusInvocationTaskInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{11} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{12} } func (x *NexusInvocationTaskInfo) GetAttempt() int32 { @@ -2410,7 +2466,7 @@ type NexusCancelationTaskInfo struct { func (x *NexusCancelationTaskInfo) Reset() { *x = NexusCancelationTaskInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[12] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2422,7 +2478,7 @@ func (x *NexusCancelationTaskInfo) String() string { func (*NexusCancelationTaskInfo) ProtoMessage() {} func (x *NexusCancelationTaskInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[12] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2435,7 +2491,7 @@ func (x *NexusCancelationTaskInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use NexusCancelationTaskInfo.ProtoReflect.Descriptor instead. func (*NexusCancelationTaskInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{12} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{13} } func (x *NexusCancelationTaskInfo) GetAttempt() int32 { @@ -2545,7 +2601,7 @@ type ActivityInfo struct { func (x *ActivityInfo) Reset() { *x = ActivityInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[13] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2557,7 +2613,7 @@ func (x *ActivityInfo) String() string { func (*ActivityInfo) ProtoMessage() {} func (x *ActivityInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[13] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2570,7 +2626,7 @@ func (x *ActivityInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ActivityInfo.ProtoReflect.Descriptor instead. func (*ActivityInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{13} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{14} } func (x *ActivityInfo) GetVersion() int64 { @@ -2959,7 +3015,7 @@ type TimerInfo struct { func (x *TimerInfo) Reset() { *x = TimerInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[14] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2971,7 +3027,7 @@ func (x *TimerInfo) String() string { func (*TimerInfo) ProtoMessage() {} func (x *TimerInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[14] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2984,7 +3040,7 @@ func (x *TimerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TimerInfo.ProtoReflect.Descriptor instead. func (*TimerInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{14} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{15} } func (x *TimerInfo) GetVersion() int64 { @@ -3052,7 +3108,7 @@ type ChildExecutionInfo struct { func (x *ChildExecutionInfo) Reset() { *x = ChildExecutionInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[15] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3064,7 +3120,7 @@ func (x *ChildExecutionInfo) String() string { func (*ChildExecutionInfo) ProtoMessage() {} func (x *ChildExecutionInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[15] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3077,7 +3133,7 @@ func (x *ChildExecutionInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ChildExecutionInfo.ProtoReflect.Descriptor instead. func (*ChildExecutionInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{15} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{16} } func (x *ChildExecutionInfo) GetVersion() int64 { @@ -3192,7 +3248,7 @@ type RequestCancelInfo struct { func (x *RequestCancelInfo) Reset() { *x = RequestCancelInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[16] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3204,7 +3260,7 @@ func (x *RequestCancelInfo) String() string { func (*RequestCancelInfo) ProtoMessage() {} func (x *RequestCancelInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[16] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3217,7 +3273,7 @@ func (x *RequestCancelInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestCancelInfo.ProtoReflect.Descriptor instead. func (*RequestCancelInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{16} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{17} } func (x *RequestCancelInfo) GetVersion() int64 { @@ -3269,7 +3325,7 @@ type SignalInfo struct { func (x *SignalInfo) Reset() { *x = SignalInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[17] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3281,7 +3337,7 @@ func (x *SignalInfo) String() string { func (*SignalInfo) ProtoMessage() {} func (x *SignalInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[17] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3294,7 +3350,7 @@ func (x *SignalInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SignalInfo.ProtoReflect.Descriptor instead. func (*SignalInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{17} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{18} } func (x *SignalInfo) GetVersion() int64 { @@ -3344,7 +3400,7 @@ type Checksum struct { func (x *Checksum) Reset() { *x = Checksum{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[18] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3356,7 +3412,7 @@ func (x *Checksum) String() string { func (*Checksum) ProtoMessage() {} func (x *Checksum) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[18] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3369,7 +3425,7 @@ func (x *Checksum) ProtoReflect() protoreflect.Message { // Deprecated: Use Checksum.ProtoReflect.Descriptor instead. func (*Checksum) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{18} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{19} } func (x *Checksum) GetVersion() int32 { @@ -3407,7 +3463,7 @@ type Callback struct { func (x *Callback) Reset() { *x = Callback{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[19] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3419,7 +3475,7 @@ func (x *Callback) String() string { func (*Callback) ProtoMessage() {} func (x *Callback) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[19] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3432,7 +3488,7 @@ func (x *Callback) ProtoReflect() protoreflect.Message { // Deprecated: Use Callback.ProtoReflect.Descriptor instead. func (*Callback) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{19} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{20} } func (x *Callback) GetVariant() isCallback_Variant { @@ -3499,7 +3555,7 @@ type HSMCompletionCallbackArg struct { func (x *HSMCompletionCallbackArg) Reset() { *x = HSMCompletionCallbackArg{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[20] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3511,7 +3567,7 @@ func (x *HSMCompletionCallbackArg) String() string { func (*HSMCompletionCallbackArg) ProtoMessage() {} func (x *HSMCompletionCallbackArg) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[20] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3524,7 +3580,7 @@ func (x *HSMCompletionCallbackArg) ProtoReflect() protoreflect.Message { // Deprecated: Use HSMCompletionCallbackArg.ProtoReflect.Descriptor instead. func (*HSMCompletionCallbackArg) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{20} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{21} } func (x *HSMCompletionCallbackArg) GetNamespaceId() string { @@ -3581,7 +3637,7 @@ type CallbackInfo struct { func (x *CallbackInfo) Reset() { *x = CallbackInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[21] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3593,7 +3649,7 @@ func (x *CallbackInfo) String() string { func (*CallbackInfo) ProtoMessage() {} func (x *CallbackInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[21] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3606,7 +3662,7 @@ func (x *CallbackInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CallbackInfo.ProtoReflect.Descriptor instead. func (*CallbackInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{21} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{22} } func (x *CallbackInfo) GetCallback() *Callback { @@ -3727,7 +3783,7 @@ type NexusOperationInfo struct { func (x *NexusOperationInfo) Reset() { *x = NexusOperationInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[22] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3739,7 +3795,7 @@ func (x *NexusOperationInfo) String() string { func (*NexusOperationInfo) ProtoMessage() {} func (x *NexusOperationInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[22] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3752,7 +3808,7 @@ func (x *NexusOperationInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use NexusOperationInfo.ProtoReflect.Descriptor instead. func (*NexusOperationInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{22} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{23} } func (x *NexusOperationInfo) GetEndpoint() string { @@ -3897,7 +3953,7 @@ type NexusOperationCancellationInfo struct { func (x *NexusOperationCancellationInfo) Reset() { *x = NexusOperationCancellationInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[23] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3909,7 +3965,7 @@ func (x *NexusOperationCancellationInfo) String() string { func (*NexusOperationCancellationInfo) ProtoMessage() {} func (x *NexusOperationCancellationInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[23] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3922,7 +3978,7 @@ func (x *NexusOperationCancellationInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use NexusOperationCancellationInfo.ProtoReflect.Descriptor instead. func (*NexusOperationCancellationInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{23} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{24} } func (x *NexusOperationCancellationInfo) GetRequestedTime() *timestamppb.Timestamp { @@ -3985,7 +4041,7 @@ type ResetChildInfo struct { func (x *ResetChildInfo) Reset() { *x = ResetChildInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[24] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3997,7 +4053,7 @@ func (x *ResetChildInfo) String() string { func (*ResetChildInfo) ProtoMessage() {} func (x *ResetChildInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[24] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4010,7 +4066,7 @@ func (x *ResetChildInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetChildInfo.ProtoReflect.Descriptor instead. func (*ResetChildInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{24} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{25} } func (x *ResetChildInfo) GetShouldTerminateAndStart() bool { @@ -4036,7 +4092,7 @@ type WorkflowPauseInfo struct { func (x *WorkflowPauseInfo) Reset() { *x = WorkflowPauseInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[25] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4048,7 +4104,7 @@ func (x *WorkflowPauseInfo) String() string { func (*WorkflowPauseInfo) ProtoMessage() {} func (x *WorkflowPauseInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[25] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4061,7 +4117,7 @@ func (x *WorkflowPauseInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkflowPauseInfo.ProtoReflect.Descriptor instead. func (*WorkflowPauseInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{25} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{26} } func (x *WorkflowPauseInfo) GetPauseTime() *timestamppb.Timestamp { @@ -4103,7 +4159,7 @@ type TransferTaskInfo_CloseExecutionTaskDetails struct { func (x *TransferTaskInfo_CloseExecutionTaskDetails) Reset() { *x = TransferTaskInfo_CloseExecutionTaskDetails{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[34] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4115,7 +4171,7 @@ func (x *TransferTaskInfo_CloseExecutionTaskDetails) String() string { func (*TransferTaskInfo_CloseExecutionTaskDetails) ProtoMessage() {} func (x *TransferTaskInfo_CloseExecutionTaskDetails) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[34] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4138,61 +4194,6 @@ func (x *TransferTaskInfo_CloseExecutionTaskDetails) GetCanSkipVisibilityArchiva return false } -// Details for a Nexus task that cancels activities. -type TransferTaskInfo_CancelActivityNexusTaskDetails struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Scheduled event IDs of activities to cancel. - ScheduledEventIds []int64 `protobuf:"varint,1,rep,packed,name=scheduled_event_ids,json=scheduledEventIds,proto3" json:"scheduled_event_ids,omitempty"` - // The Nexus queue to dispatch the cancel request to. - WorkerControlTaskQueue string `protobuf:"bytes,2,opt,name=worker_control_task_queue,json=workerControlTaskQueue,proto3" json:"worker_control_task_queue,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) Reset() { - *x = TransferTaskInfo_CancelActivityNexusTaskDetails{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TransferTaskInfo_CancelActivityNexusTaskDetails) ProtoMessage() {} - -func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[35] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TransferTaskInfo_CancelActivityNexusTaskDetails.ProtoReflect.Descriptor instead. -func (*TransferTaskInfo_CancelActivityNexusTaskDetails) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{5, 1} -} - -func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) GetScheduledEventIds() []int64 { - if x != nil { - return x.ScheduledEventIds - } - return nil -} - -func (x *TransferTaskInfo_CancelActivityNexusTaskDetails) GetWorkerControlTaskQueue() string { - if x != nil { - return x.WorkerControlTaskQueue - } - return "" -} - // Deprecated. Clean up with versioning-2. [cleanup-old-wv] type ActivityInfo_UseWorkflowBuildIdInfo struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -4232,7 +4233,7 @@ func (x *ActivityInfo_UseWorkflowBuildIdInfo) ProtoReflect() protoreflect.Messag // Deprecated: Use ActivityInfo_UseWorkflowBuildIdInfo.ProtoReflect.Descriptor instead. func (*ActivityInfo_UseWorkflowBuildIdInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{13, 0} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{14, 0} } func (x *ActivityInfo_UseWorkflowBuildIdInfo) GetLastUsedBuildId() string { @@ -4289,7 +4290,7 @@ func (x *ActivityInfo_PauseInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ActivityInfo_PauseInfo.ProtoReflect.Descriptor instead. func (*ActivityInfo_PauseInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{13, 1} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{14, 1} } func (x *ActivityInfo_PauseInfo) GetPauseTime() *timestamppb.Timestamp { @@ -4379,7 +4380,7 @@ func (x *ActivityInfo_PauseInfo_Manual) ProtoReflect() protoreflect.Message { // Deprecated: Use ActivityInfo_PauseInfo_Manual.ProtoReflect.Descriptor instead. func (*ActivityInfo_PauseInfo_Manual) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{13, 1, 0} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{14, 1, 0} } func (x *ActivityInfo_PauseInfo_Manual) GetIdentity() string { @@ -4436,7 +4437,7 @@ func (x *Callback_Nexus) ProtoReflect() protoreflect.Message { // Deprecated: Use Callback_Nexus.ProtoReflect.Descriptor instead. func (*Callback_Nexus) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{19, 0} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{20, 0} } func (x *Callback_Nexus) GetUrl() string { @@ -4498,7 +4499,7 @@ func (x *Callback_HSM) ProtoReflect() protoreflect.Message { // Deprecated: Use Callback_HSM.ProtoReflect.Descriptor instead. func (*Callback_HSM) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{19, 1} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{20, 1} } func (x *Callback_HSM) GetNamespaceId() string { @@ -4570,7 +4571,7 @@ func (x *CallbackInfo_WorkflowClosed) ProtoReflect() protoreflect.Message { // Deprecated: Use CallbackInfo_WorkflowClosed.ProtoReflect.Descriptor instead. func (*CallbackInfo_WorkflowClosed) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{21, 0} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{22, 0} } type CallbackInfo_Trigger struct { @@ -4610,7 +4611,7 @@ func (x *CallbackInfo_Trigger) ProtoReflect() protoreflect.Message { // Deprecated: Use CallbackInfo_Trigger.ProtoReflect.Descriptor instead. func (*CallbackInfo_Trigger) Descriptor() ([]byte, []int) { - return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{21, 1} + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{22, 1} } func (x *CallbackInfo_Trigger) GetVariant() isCallbackInfo_Trigger_Variant { @@ -4807,8 +4808,7 @@ const file_temporal_server_api_persistence_v1_executions_proto_rawDesc = "" + "\rRequestIDInfo\x12?\n" + "\n" + "event_type\x18\x01 \x01(\x0e2 .temporal.api.enums.v1.EventTypeR\teventType\x12\x19\n" + - "\bevent_id\x18\x02 \x01(\x03R\aeventId\"\x91\n" + - "\n" + + "\bevent_id\x18\x02 \x01(\x03R\aeventId\"\xdf\a\n" + "\x10TransferTaskInfo\x12!\n" + "\fnamespace_id\x18\x01 \x01(\tR\vnamespaceId\x12\x1f\n" + "\vworkflow_id\x18\x02 \x01(\tR\n" + @@ -4828,14 +4828,10 @@ const file_temporal_server_api_persistence_v1_executions_proto_rawDesc = "" + "\x0fvisibility_time\x18\r \x01(\v2\x1a.google.protobuf.TimestampR\x0evisibilityTime\x12,\n" + "\x12delete_after_close\x18\x0f \x01(\bR\x10deleteAfterClose\x12\x91\x01\n" + "\x1cclose_execution_task_details\x18\x10 \x01(\v2N.temporal.server.api.persistence.v1.TransferTaskInfo.CloseExecutionTaskDetailsH\x00R\x19closeExecutionTaskDetails\x12[\n" + - "\x0fchasm_task_info\x18\x12 \x01(\v21.temporal.server.api.persistence.v1.ChasmTaskInfoH\x00R\rchasmTaskInfo\x12\xa1\x01\n" + - "\"cancel_activity_nexus_task_details\x18\x13 \x01(\v2S.temporal.server.api.persistence.v1.TransferTaskInfo.CancelActivityNexusTaskDetailsH\x00R\x1ecancelActivityNexusTaskDetails\x12\x14\n" + + "\x0fchasm_task_info\x18\x12 \x01(\v21.temporal.server.api.persistence.v1.ChasmTaskInfoH\x00R\rchasmTaskInfo\x12\x14\n" + "\x05stamp\x18\x11 \x01(\x05R\x05stamp\x1a\\\n" + "\x19CloseExecutionTaskDetails\x12?\n" + - "\x1ccan_skip_visibility_archival\x18\x01 \x01(\bR\x19canSkipVisibilityArchival\x1a\x8b\x01\n" + - "\x1eCancelActivityNexusTaskDetails\x12.\n" + - "\x13scheduled_event_ids\x18\x01 \x03(\x03R\x11scheduledEventIds\x129\n" + - "\x19worker_control_task_queue\x18\x02 \x01(\tR\x16workerControlTaskQueueB\x0e\n" + + "\x1ccan_skip_visibility_archival\x18\x01 \x01(\bR\x19canSkipVisibilityArchivalB\x0e\n" + "\ftask_detailsJ\x04\b\x0e\x10\x0f\"\xd8\b\n" + "\x13ReplicationTaskInfo\x12!\n" + "\fnamespace_id\x18\x01 \x01(\tR\vnamespaceId\x12\x1f\n" + @@ -4909,7 +4905,7 @@ const file_temporal_server_api_persistence_v1_executions_proto_rawDesc = "" + "\x06run_id\x18\x04 \x01(\tR\x05runId\x12C\n" + "\ttask_type\x18\x05 \x01(\x0e2&.temporal.server.api.enums.v1.TaskTypeR\btaskType\x12\x18\n" + "\aversion\x18\x06 \x01(\x03R\aversion\x12C\n" + - "\x0fvisibility_time\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x0evisibilityTime\"\x89\x04\n" + + "\x0fvisibility_time\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x0evisibilityTime\"\xfc\x04\n" + "\x10OutboundTaskInfo\x12!\n" + "\fnamespace_id\x18\x01 \x01(\tR\vnamespaceId\x12\x1f\n" + "\vworkflow_id\x18\x02 \x01(\tR\n" + @@ -4920,8 +4916,13 @@ const file_temporal_server_api_persistence_v1_executions_proto_rawDesc = "" + "\x0fvisibility_time\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x0evisibilityTime\x12 \n" + "\vdestination\x18\a \x01(\tR\vdestination\x12h\n" + "\x12state_machine_info\x18\b \x01(\v28.temporal.server.api.persistence.v1.StateMachineTaskInfoH\x00R\x10stateMachineInfo\x12[\n" + - "\x0fchasm_task_info\x18\t \x01(\v21.temporal.server.api.persistence.v1.ChasmTaskInfoH\x00R\rchasmTaskInfoB\x0e\n" + - "\ftask_details\"3\n" + + "\x0fchasm_task_info\x18\t \x01(\v21.temporal.server.api.persistence.v1.ChasmTaskInfoH\x00R\rchasmTaskInfo\x12q\n" + + "\x15activity_command_info\x18\n" + + " \x01(\v2;.temporal.server.api.persistence.v1.ActivityCommandTaskInfoH\x00R\x13activityCommandInfoB\x0e\n" + + "\ftask_details\"\x9f\x01\n" + + "\x17ActivityCommandTaskInfo\x12T\n" + + "\fcommand_type\x18\x01 \x01(\x0e21.temporal.server.api.enums.v1.ActivityCommandTypeR\vcommandType\x12.\n" + + "\x13scheduled_event_ids\x18\x02 \x03(\x03R\x11scheduledEventIds\"3\n" + "\x17NexusInvocationTaskInfo\x12\x18\n" + "\aattempt\x18\x01 \x01(\x05R\aattempt\"4\n" + "\x18NexusCancelationTaskInfo\x12\x18\n" + @@ -5140,86 +5141,87 @@ var file_temporal_server_api_persistence_v1_executions_proto_goTypes = []any{ (*TimerTaskInfo)(nil), // 8: temporal.server.api.persistence.v1.TimerTaskInfo (*ArchivalTaskInfo)(nil), // 9: temporal.server.api.persistence.v1.ArchivalTaskInfo (*OutboundTaskInfo)(nil), // 10: temporal.server.api.persistence.v1.OutboundTaskInfo - (*NexusInvocationTaskInfo)(nil), // 11: temporal.server.api.persistence.v1.NexusInvocationTaskInfo - (*NexusCancelationTaskInfo)(nil), // 12: temporal.server.api.persistence.v1.NexusCancelationTaskInfo - (*ActivityInfo)(nil), // 13: temporal.server.api.persistence.v1.ActivityInfo - (*TimerInfo)(nil), // 14: temporal.server.api.persistence.v1.TimerInfo - (*ChildExecutionInfo)(nil), // 15: temporal.server.api.persistence.v1.ChildExecutionInfo - (*RequestCancelInfo)(nil), // 16: temporal.server.api.persistence.v1.RequestCancelInfo - (*SignalInfo)(nil), // 17: temporal.server.api.persistence.v1.SignalInfo - (*Checksum)(nil), // 18: temporal.server.api.persistence.v1.Checksum - (*Callback)(nil), // 19: temporal.server.api.persistence.v1.Callback - (*HSMCompletionCallbackArg)(nil), // 20: temporal.server.api.persistence.v1.HSMCompletionCallbackArg - (*CallbackInfo)(nil), // 21: temporal.server.api.persistence.v1.CallbackInfo - (*NexusOperationInfo)(nil), // 22: temporal.server.api.persistence.v1.NexusOperationInfo - (*NexusOperationCancellationInfo)(nil), // 23: temporal.server.api.persistence.v1.NexusOperationCancellationInfo - (*ResetChildInfo)(nil), // 24: temporal.server.api.persistence.v1.ResetChildInfo - (*WorkflowPauseInfo)(nil), // 25: temporal.server.api.persistence.v1.WorkflowPauseInfo - nil, // 26: temporal.server.api.persistence.v1.ShardInfo.ReplicationDlqAckLevelEntry - nil, // 27: temporal.server.api.persistence.v1.ShardInfo.QueueStatesEntry - nil, // 28: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SearchAttributesEntry - nil, // 29: temporal.server.api.persistence.v1.WorkflowExecutionInfo.MemoEntry - nil, // 30: temporal.server.api.persistence.v1.WorkflowExecutionInfo.UpdateInfosEntry - nil, // 31: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SubStateMachinesByTypeEntry - nil, // 32: temporal.server.api.persistence.v1.WorkflowExecutionInfo.ChildrenInitializedPostResetPointEntry - nil, // 33: temporal.server.api.persistence.v1.WorkflowExecutionState.RequestIdsEntry - (*TransferTaskInfo_CloseExecutionTaskDetails)(nil), // 34: temporal.server.api.persistence.v1.TransferTaskInfo.CloseExecutionTaskDetails - (*TransferTaskInfo_CancelActivityNexusTaskDetails)(nil), // 35: temporal.server.api.persistence.v1.TransferTaskInfo.CancelActivityNexusTaskDetails - (*ActivityInfo_UseWorkflowBuildIdInfo)(nil), // 36: temporal.server.api.persistence.v1.ActivityInfo.UseWorkflowBuildIdInfo - (*ActivityInfo_PauseInfo)(nil), // 37: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo - (*ActivityInfo_PauseInfo_Manual)(nil), // 38: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.Manual - (*Callback_Nexus)(nil), // 39: temporal.server.api.persistence.v1.Callback.Nexus - (*Callback_HSM)(nil), // 40: temporal.server.api.persistence.v1.Callback.HSM - nil, // 41: temporal.server.api.persistence.v1.Callback.Nexus.HeaderEntry - (*CallbackInfo_WorkflowClosed)(nil), // 42: temporal.server.api.persistence.v1.CallbackInfo.WorkflowClosed - (*CallbackInfo_Trigger)(nil), // 43: temporal.server.api.persistence.v1.CallbackInfo.Trigger - (*timestamppb.Timestamp)(nil), // 44: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 45: google.protobuf.Duration - (v1.WorkflowTaskType)(0), // 46: temporal.server.api.enums.v1.WorkflowTaskType - (v11.SuggestContinueAsNewReason)(0), // 47: temporal.api.enums.v1.SuggestContinueAsNewReason - (*v12.ResetPoints)(nil), // 48: temporal.api.workflow.v1.ResetPoints - (*v14.VersionHistories)(nil), // 49: temporal.server.api.history.v1.VersionHistories - (*v15.VectorClock)(nil), // 50: temporal.server.api.clock.v1.VectorClock - (*v16.BaseExecutionInfo)(nil), // 51: temporal.server.api.workflow.v1.BaseExecutionInfo - (*v13.WorkerVersionStamp)(nil), // 52: temporal.api.common.v1.WorkerVersionStamp - (*VersionedTransition)(nil), // 53: temporal.server.api.persistence.v1.VersionedTransition - (*StateMachineTimerGroup)(nil), // 54: temporal.server.api.persistence.v1.StateMachineTimerGroup - (*StateMachineTombstoneBatch)(nil), // 55: temporal.server.api.persistence.v1.StateMachineTombstoneBatch - (*v12.WorkflowExecutionVersioningInfo)(nil), // 56: temporal.api.workflow.v1.WorkflowExecutionVersioningInfo - (*v13.Priority)(nil), // 57: temporal.api.common.v1.Priority - (v11.WorkflowTaskFailedCause)(0), // 58: temporal.api.enums.v1.WorkflowTaskFailedCause - (v11.TimeoutType)(0), // 59: temporal.api.enums.v1.TimeoutType - (v1.WorkflowExecutionState)(0), // 60: temporal.server.api.enums.v1.WorkflowExecutionState - (v11.WorkflowExecutionStatus)(0), // 61: temporal.api.enums.v1.WorkflowExecutionStatus - (v11.EventType)(0), // 62: temporal.api.enums.v1.EventType - (v1.TaskType)(0), // 63: temporal.server.api.enums.v1.TaskType - (*ChasmTaskInfo)(nil), // 64: temporal.server.api.persistence.v1.ChasmTaskInfo - (v1.TaskPriority)(0), // 65: temporal.server.api.enums.v1.TaskPriority - (*v14.VersionHistoryItem)(nil), // 66: temporal.server.api.history.v1.VersionHistoryItem - (v1.WorkflowBackoffType)(0), // 67: temporal.server.api.enums.v1.WorkflowBackoffType - (*StateMachineTaskInfo)(nil), // 68: temporal.server.api.persistence.v1.StateMachineTaskInfo - (*v17.Failure)(nil), // 69: temporal.api.failure.v1.Failure - (*v13.Payloads)(nil), // 70: temporal.api.common.v1.Payloads - (*v13.ActivityType)(nil), // 71: temporal.api.common.v1.ActivityType - (*v18.Deployment)(nil), // 72: temporal.api.deployment.v1.Deployment - (*v18.WorkerDeploymentVersion)(nil), // 73: temporal.api.deployment.v1.WorkerDeploymentVersion - (v11.ParentClosePolicy)(0), // 74: temporal.api.enums.v1.ParentClosePolicy - (v1.ChecksumFlavor)(0), // 75: temporal.server.api.enums.v1.ChecksumFlavor - (*v13.Link)(nil), // 76: temporal.api.common.v1.Link - (*v19.HistoryEvent)(nil), // 77: temporal.api.history.v1.HistoryEvent - (v1.CallbackState)(0), // 78: temporal.server.api.enums.v1.CallbackState - (v1.NexusOperationState)(0), // 79: temporal.server.api.enums.v1.NexusOperationState - (v11.NexusOperationCancellationState)(0), // 80: temporal.api.enums.v1.NexusOperationCancellationState - (*QueueState)(nil), // 81: temporal.server.api.persistence.v1.QueueState - (*v13.Payload)(nil), // 82: temporal.api.common.v1.Payload - (*UpdateInfo)(nil), // 83: temporal.server.api.persistence.v1.UpdateInfo - (*StateMachineMap)(nil), // 84: temporal.server.api.persistence.v1.StateMachineMap - (*StateMachineRef)(nil), // 85: temporal.server.api.persistence.v1.StateMachineRef + (*ActivityCommandTaskInfo)(nil), // 11: temporal.server.api.persistence.v1.ActivityCommandTaskInfo + (*NexusInvocationTaskInfo)(nil), // 12: temporal.server.api.persistence.v1.NexusInvocationTaskInfo + (*NexusCancelationTaskInfo)(nil), // 13: temporal.server.api.persistence.v1.NexusCancelationTaskInfo + (*ActivityInfo)(nil), // 14: temporal.server.api.persistence.v1.ActivityInfo + (*TimerInfo)(nil), // 15: temporal.server.api.persistence.v1.TimerInfo + (*ChildExecutionInfo)(nil), // 16: temporal.server.api.persistence.v1.ChildExecutionInfo + (*RequestCancelInfo)(nil), // 17: temporal.server.api.persistence.v1.RequestCancelInfo + (*SignalInfo)(nil), // 18: temporal.server.api.persistence.v1.SignalInfo + (*Checksum)(nil), // 19: temporal.server.api.persistence.v1.Checksum + (*Callback)(nil), // 20: temporal.server.api.persistence.v1.Callback + (*HSMCompletionCallbackArg)(nil), // 21: temporal.server.api.persistence.v1.HSMCompletionCallbackArg + (*CallbackInfo)(nil), // 22: temporal.server.api.persistence.v1.CallbackInfo + (*NexusOperationInfo)(nil), // 23: temporal.server.api.persistence.v1.NexusOperationInfo + (*NexusOperationCancellationInfo)(nil), // 24: temporal.server.api.persistence.v1.NexusOperationCancellationInfo + (*ResetChildInfo)(nil), // 25: temporal.server.api.persistence.v1.ResetChildInfo + (*WorkflowPauseInfo)(nil), // 26: temporal.server.api.persistence.v1.WorkflowPauseInfo + nil, // 27: temporal.server.api.persistence.v1.ShardInfo.ReplicationDlqAckLevelEntry + nil, // 28: temporal.server.api.persistence.v1.ShardInfo.QueueStatesEntry + nil, // 29: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SearchAttributesEntry + nil, // 30: temporal.server.api.persistence.v1.WorkflowExecutionInfo.MemoEntry + nil, // 31: temporal.server.api.persistence.v1.WorkflowExecutionInfo.UpdateInfosEntry + nil, // 32: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SubStateMachinesByTypeEntry + nil, // 33: temporal.server.api.persistence.v1.WorkflowExecutionInfo.ChildrenInitializedPostResetPointEntry + nil, // 34: temporal.server.api.persistence.v1.WorkflowExecutionState.RequestIdsEntry + (*TransferTaskInfo_CloseExecutionTaskDetails)(nil), // 35: temporal.server.api.persistence.v1.TransferTaskInfo.CloseExecutionTaskDetails + (*ActivityInfo_UseWorkflowBuildIdInfo)(nil), // 36: temporal.server.api.persistence.v1.ActivityInfo.UseWorkflowBuildIdInfo + (*ActivityInfo_PauseInfo)(nil), // 37: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo + (*ActivityInfo_PauseInfo_Manual)(nil), // 38: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.Manual + (*Callback_Nexus)(nil), // 39: temporal.server.api.persistence.v1.Callback.Nexus + (*Callback_HSM)(nil), // 40: temporal.server.api.persistence.v1.Callback.HSM + nil, // 41: temporal.server.api.persistence.v1.Callback.Nexus.HeaderEntry + (*CallbackInfo_WorkflowClosed)(nil), // 42: temporal.server.api.persistence.v1.CallbackInfo.WorkflowClosed + (*CallbackInfo_Trigger)(nil), // 43: temporal.server.api.persistence.v1.CallbackInfo.Trigger + (*timestamppb.Timestamp)(nil), // 44: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 45: google.protobuf.Duration + (v1.WorkflowTaskType)(0), // 46: temporal.server.api.enums.v1.WorkflowTaskType + (v11.SuggestContinueAsNewReason)(0), // 47: temporal.api.enums.v1.SuggestContinueAsNewReason + (*v12.ResetPoints)(nil), // 48: temporal.api.workflow.v1.ResetPoints + (*v14.VersionHistories)(nil), // 49: temporal.server.api.history.v1.VersionHistories + (*v15.VectorClock)(nil), // 50: temporal.server.api.clock.v1.VectorClock + (*v16.BaseExecutionInfo)(nil), // 51: temporal.server.api.workflow.v1.BaseExecutionInfo + (*v13.WorkerVersionStamp)(nil), // 52: temporal.api.common.v1.WorkerVersionStamp + (*VersionedTransition)(nil), // 53: temporal.server.api.persistence.v1.VersionedTransition + (*StateMachineTimerGroup)(nil), // 54: temporal.server.api.persistence.v1.StateMachineTimerGroup + (*StateMachineTombstoneBatch)(nil), // 55: temporal.server.api.persistence.v1.StateMachineTombstoneBatch + (*v12.WorkflowExecutionVersioningInfo)(nil), // 56: temporal.api.workflow.v1.WorkflowExecutionVersioningInfo + (*v13.Priority)(nil), // 57: temporal.api.common.v1.Priority + (v11.WorkflowTaskFailedCause)(0), // 58: temporal.api.enums.v1.WorkflowTaskFailedCause + (v11.TimeoutType)(0), // 59: temporal.api.enums.v1.TimeoutType + (v1.WorkflowExecutionState)(0), // 60: temporal.server.api.enums.v1.WorkflowExecutionState + (v11.WorkflowExecutionStatus)(0), // 61: temporal.api.enums.v1.WorkflowExecutionStatus + (v11.EventType)(0), // 62: temporal.api.enums.v1.EventType + (v1.TaskType)(0), // 63: temporal.server.api.enums.v1.TaskType + (*ChasmTaskInfo)(nil), // 64: temporal.server.api.persistence.v1.ChasmTaskInfo + (v1.TaskPriority)(0), // 65: temporal.server.api.enums.v1.TaskPriority + (*v14.VersionHistoryItem)(nil), // 66: temporal.server.api.history.v1.VersionHistoryItem + (v1.WorkflowBackoffType)(0), // 67: temporal.server.api.enums.v1.WorkflowBackoffType + (*StateMachineTaskInfo)(nil), // 68: temporal.server.api.persistence.v1.StateMachineTaskInfo + (v1.ActivityCommandType)(0), // 69: temporal.server.api.enums.v1.ActivityCommandType + (*v17.Failure)(nil), // 70: temporal.api.failure.v1.Failure + (*v13.Payloads)(nil), // 71: temporal.api.common.v1.Payloads + (*v13.ActivityType)(nil), // 72: temporal.api.common.v1.ActivityType + (*v18.Deployment)(nil), // 73: temporal.api.deployment.v1.Deployment + (*v18.WorkerDeploymentVersion)(nil), // 74: temporal.api.deployment.v1.WorkerDeploymentVersion + (v11.ParentClosePolicy)(0), // 75: temporal.api.enums.v1.ParentClosePolicy + (v1.ChecksumFlavor)(0), // 76: temporal.server.api.enums.v1.ChecksumFlavor + (*v13.Link)(nil), // 77: temporal.api.common.v1.Link + (*v19.HistoryEvent)(nil), // 78: temporal.api.history.v1.HistoryEvent + (v1.CallbackState)(0), // 79: temporal.server.api.enums.v1.CallbackState + (v1.NexusOperationState)(0), // 80: temporal.server.api.enums.v1.NexusOperationState + (v11.NexusOperationCancellationState)(0), // 81: temporal.api.enums.v1.NexusOperationCancellationState + (*QueueState)(nil), // 82: temporal.server.api.persistence.v1.QueueState + (*v13.Payload)(nil), // 83: temporal.api.common.v1.Payload + (*UpdateInfo)(nil), // 84: temporal.server.api.persistence.v1.UpdateInfo + (*StateMachineMap)(nil), // 85: temporal.server.api.persistence.v1.StateMachineMap + (*StateMachineRef)(nil), // 86: temporal.server.api.persistence.v1.StateMachineRef } var file_temporal_server_api_persistence_v1_executions_proto_depIdxs = []int32{ 44, // 0: temporal.server.api.persistence.v1.ShardInfo.update_time:type_name -> google.protobuf.Timestamp - 26, // 1: temporal.server.api.persistence.v1.ShardInfo.replication_dlq_ack_level:type_name -> temporal.server.api.persistence.v1.ShardInfo.ReplicationDlqAckLevelEntry - 27, // 2: temporal.server.api.persistence.v1.ShardInfo.queue_states:type_name -> temporal.server.api.persistence.v1.ShardInfo.QueueStatesEntry + 27, // 1: temporal.server.api.persistence.v1.ShardInfo.replication_dlq_ack_level:type_name -> temporal.server.api.persistence.v1.ShardInfo.ReplicationDlqAckLevelEntry + 28, // 2: temporal.server.api.persistence.v1.ShardInfo.queue_states:type_name -> temporal.server.api.persistence.v1.ShardInfo.QueueStatesEntry 45, // 3: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_execution_timeout:type_name -> google.protobuf.Duration 45, // 4: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_run_timeout:type_name -> google.protobuf.Duration 45, // 5: temporal.server.api.persistence.v1.WorkflowExecutionInfo.default_workflow_task_timeout:type_name -> google.protobuf.Duration @@ -5236,8 +5238,8 @@ var file_temporal_server_api_persistence_v1_executions_proto_depIdxs = []int32{ 45, // 16: temporal.server.api.persistence.v1.WorkflowExecutionInfo.retry_maximum_interval:type_name -> google.protobuf.Duration 44, // 17: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_execution_expiration_time:type_name -> google.protobuf.Timestamp 48, // 18: temporal.server.api.persistence.v1.WorkflowExecutionInfo.auto_reset_points:type_name -> temporal.api.workflow.v1.ResetPoints - 28, // 19: temporal.server.api.persistence.v1.WorkflowExecutionInfo.search_attributes:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.SearchAttributesEntry - 29, // 20: temporal.server.api.persistence.v1.WorkflowExecutionInfo.memo:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.MemoEntry + 29, // 19: temporal.server.api.persistence.v1.WorkflowExecutionInfo.search_attributes:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.SearchAttributesEntry + 30, // 20: temporal.server.api.persistence.v1.WorkflowExecutionInfo.memo:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.MemoEntry 49, // 21: temporal.server.api.persistence.v1.WorkflowExecutionInfo.version_histories:type_name -> temporal.server.api.history.v1.VersionHistories 2, // 22: temporal.server.api.persistence.v1.WorkflowExecutionInfo.execution_stats:type_name -> temporal.server.api.persistence.v1.ExecutionStats 44, // 23: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_run_expiration_time:type_name -> google.protobuf.Timestamp @@ -5246,9 +5248,9 @@ var file_temporal_server_api_persistence_v1_executions_proto_depIdxs = []int32{ 44, // 26: temporal.server.api.persistence.v1.WorkflowExecutionInfo.close_time:type_name -> google.protobuf.Timestamp 51, // 27: temporal.server.api.persistence.v1.WorkflowExecutionInfo.base_execution_info:type_name -> temporal.server.api.workflow.v1.BaseExecutionInfo 52, // 28: temporal.server.api.persistence.v1.WorkflowExecutionInfo.most_recent_worker_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp - 30, // 29: temporal.server.api.persistence.v1.WorkflowExecutionInfo.update_infos:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.UpdateInfosEntry + 31, // 29: temporal.server.api.persistence.v1.WorkflowExecutionInfo.update_infos:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.UpdateInfosEntry 53, // 30: temporal.server.api.persistence.v1.WorkflowExecutionInfo.transition_history:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 31, // 31: temporal.server.api.persistence.v1.WorkflowExecutionInfo.sub_state_machines_by_type:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.SubStateMachinesByTypeEntry + 32, // 31: temporal.server.api.persistence.v1.WorkflowExecutionInfo.sub_state_machines_by_type:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.SubStateMachinesByTypeEntry 54, // 32: temporal.server.api.persistence.v1.WorkflowExecutionInfo.state_machine_timers:type_name -> temporal.server.api.persistence.v1.StateMachineTimerGroup 53, // 33: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition 53, // 34: temporal.server.api.persistence.v1.WorkflowExecutionInfo.visibility_last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition @@ -5257,117 +5259,118 @@ var file_temporal_server_api_persistence_v1_executions_proto_depIdxs = []int32{ 56, // 37: temporal.server.api.persistence.v1.WorkflowExecutionInfo.versioning_info:type_name -> temporal.api.workflow.v1.WorkflowExecutionVersioningInfo 53, // 38: temporal.server.api.persistence.v1.WorkflowExecutionInfo.previous_transition_history:type_name -> temporal.server.api.persistence.v1.VersionedTransition 53, // 39: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_transition_history_break_point:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 32, // 40: temporal.server.api.persistence.v1.WorkflowExecutionInfo.children_initialized_post_reset_point:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.ChildrenInitializedPostResetPointEntry + 33, // 40: temporal.server.api.persistence.v1.WorkflowExecutionInfo.children_initialized_post_reset_point:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.ChildrenInitializedPostResetPointEntry 57, // 41: temporal.server.api.persistence.v1.WorkflowExecutionInfo.priority:type_name -> temporal.api.common.v1.Priority - 25, // 42: temporal.server.api.persistence.v1.WorkflowExecutionInfo.pause_info:type_name -> temporal.server.api.persistence.v1.WorkflowPauseInfo + 26, // 42: temporal.server.api.persistence.v1.WorkflowExecutionInfo.pause_info:type_name -> temporal.server.api.persistence.v1.WorkflowPauseInfo 58, // 43: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_workflow_task_failure_cause:type_name -> temporal.api.enums.v1.WorkflowTaskFailedCause 59, // 44: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_workflow_task_timed_out_type:type_name -> temporal.api.enums.v1.TimeoutType 60, // 45: temporal.server.api.persistence.v1.WorkflowExecutionState.state:type_name -> temporal.server.api.enums.v1.WorkflowExecutionState 61, // 46: temporal.server.api.persistence.v1.WorkflowExecutionState.status:type_name -> temporal.api.enums.v1.WorkflowExecutionStatus 53, // 47: temporal.server.api.persistence.v1.WorkflowExecutionState.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition 44, // 48: temporal.server.api.persistence.v1.WorkflowExecutionState.start_time:type_name -> google.protobuf.Timestamp - 33, // 49: temporal.server.api.persistence.v1.WorkflowExecutionState.request_ids:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionState.RequestIdsEntry + 34, // 49: temporal.server.api.persistence.v1.WorkflowExecutionState.request_ids:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionState.RequestIdsEntry 62, // 50: temporal.server.api.persistence.v1.RequestIDInfo.event_type:type_name -> temporal.api.enums.v1.EventType 63, // 51: temporal.server.api.persistence.v1.TransferTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType 44, // 52: temporal.server.api.persistence.v1.TransferTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 34, // 53: temporal.server.api.persistence.v1.TransferTaskInfo.close_execution_task_details:type_name -> temporal.server.api.persistence.v1.TransferTaskInfo.CloseExecutionTaskDetails + 35, // 53: temporal.server.api.persistence.v1.TransferTaskInfo.close_execution_task_details:type_name -> temporal.server.api.persistence.v1.TransferTaskInfo.CloseExecutionTaskDetails 64, // 54: temporal.server.api.persistence.v1.TransferTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo - 35, // 55: temporal.server.api.persistence.v1.TransferTaskInfo.cancel_activity_nexus_task_details:type_name -> temporal.server.api.persistence.v1.TransferTaskInfo.CancelActivityNexusTaskDetails - 63, // 56: temporal.server.api.persistence.v1.ReplicationTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 44, // 57: temporal.server.api.persistence.v1.ReplicationTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 65, // 58: temporal.server.api.persistence.v1.ReplicationTaskInfo.priority:type_name -> temporal.server.api.enums.v1.TaskPriority - 53, // 59: temporal.server.api.persistence.v1.ReplicationTaskInfo.versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 6, // 60: temporal.server.api.persistence.v1.ReplicationTaskInfo.task_equivalents:type_name -> temporal.server.api.persistence.v1.ReplicationTaskInfo - 66, // 61: temporal.server.api.persistence.v1.ReplicationTaskInfo.last_version_history_item:type_name -> temporal.server.api.history.v1.VersionHistoryItem - 63, // 62: temporal.server.api.persistence.v1.VisibilityTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 44, // 63: temporal.server.api.persistence.v1.VisibilityTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 44, // 64: temporal.server.api.persistence.v1.VisibilityTaskInfo.close_time:type_name -> google.protobuf.Timestamp - 64, // 65: temporal.server.api.persistence.v1.VisibilityTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo - 63, // 66: temporal.server.api.persistence.v1.TimerTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 59, // 67: temporal.server.api.persistence.v1.TimerTaskInfo.timeout_type:type_name -> temporal.api.enums.v1.TimeoutType - 67, // 68: temporal.server.api.persistence.v1.TimerTaskInfo.workflow_backoff_type:type_name -> temporal.server.api.enums.v1.WorkflowBackoffType - 44, // 69: temporal.server.api.persistence.v1.TimerTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 64, // 70: temporal.server.api.persistence.v1.TimerTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo - 63, // 71: temporal.server.api.persistence.v1.ArchivalTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 44, // 72: temporal.server.api.persistence.v1.ArchivalTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 63, // 73: temporal.server.api.persistence.v1.OutboundTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 44, // 74: temporal.server.api.persistence.v1.OutboundTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 68, // 75: temporal.server.api.persistence.v1.OutboundTaskInfo.state_machine_info:type_name -> temporal.server.api.persistence.v1.StateMachineTaskInfo - 64, // 76: temporal.server.api.persistence.v1.OutboundTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo - 44, // 77: temporal.server.api.persistence.v1.ActivityInfo.scheduled_time:type_name -> google.protobuf.Timestamp - 44, // 78: temporal.server.api.persistence.v1.ActivityInfo.started_time:type_name -> google.protobuf.Timestamp - 45, // 79: temporal.server.api.persistence.v1.ActivityInfo.schedule_to_start_timeout:type_name -> google.protobuf.Duration - 45, // 80: temporal.server.api.persistence.v1.ActivityInfo.schedule_to_close_timeout:type_name -> google.protobuf.Duration - 45, // 81: temporal.server.api.persistence.v1.ActivityInfo.start_to_close_timeout:type_name -> google.protobuf.Duration - 45, // 82: temporal.server.api.persistence.v1.ActivityInfo.heartbeat_timeout:type_name -> google.protobuf.Duration - 45, // 83: temporal.server.api.persistence.v1.ActivityInfo.retry_initial_interval:type_name -> google.protobuf.Duration - 45, // 84: temporal.server.api.persistence.v1.ActivityInfo.retry_maximum_interval:type_name -> google.protobuf.Duration - 44, // 85: temporal.server.api.persistence.v1.ActivityInfo.retry_expiration_time:type_name -> google.protobuf.Timestamp - 69, // 86: temporal.server.api.persistence.v1.ActivityInfo.retry_last_failure:type_name -> temporal.api.failure.v1.Failure - 70, // 87: temporal.server.api.persistence.v1.ActivityInfo.last_heartbeat_details:type_name -> temporal.api.common.v1.Payloads - 44, // 88: temporal.server.api.persistence.v1.ActivityInfo.last_heartbeat_update_time:type_name -> google.protobuf.Timestamp - 71, // 89: temporal.server.api.persistence.v1.ActivityInfo.activity_type:type_name -> temporal.api.common.v1.ActivityType - 36, // 90: temporal.server.api.persistence.v1.ActivityInfo.use_workflow_build_id_info:type_name -> temporal.server.api.persistence.v1.ActivityInfo.UseWorkflowBuildIdInfo - 52, // 91: temporal.server.api.persistence.v1.ActivityInfo.last_worker_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp - 53, // 92: temporal.server.api.persistence.v1.ActivityInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 44, // 93: temporal.server.api.persistence.v1.ActivityInfo.first_scheduled_time:type_name -> google.protobuf.Timestamp - 44, // 94: temporal.server.api.persistence.v1.ActivityInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp - 72, // 95: temporal.server.api.persistence.v1.ActivityInfo.last_started_deployment:type_name -> temporal.api.deployment.v1.Deployment - 73, // 96: temporal.server.api.persistence.v1.ActivityInfo.last_deployment_version:type_name -> temporal.api.deployment.v1.WorkerDeploymentVersion - 57, // 97: temporal.server.api.persistence.v1.ActivityInfo.priority:type_name -> temporal.api.common.v1.Priority - 37, // 98: temporal.server.api.persistence.v1.ActivityInfo.pause_info:type_name -> temporal.server.api.persistence.v1.ActivityInfo.PauseInfo - 44, // 99: temporal.server.api.persistence.v1.TimerInfo.expiry_time:type_name -> google.protobuf.Timestamp - 53, // 100: temporal.server.api.persistence.v1.TimerInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 74, // 101: temporal.server.api.persistence.v1.ChildExecutionInfo.parent_close_policy:type_name -> temporal.api.enums.v1.ParentClosePolicy - 50, // 102: temporal.server.api.persistence.v1.ChildExecutionInfo.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 53, // 103: temporal.server.api.persistence.v1.ChildExecutionInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 57, // 104: temporal.server.api.persistence.v1.ChildExecutionInfo.priority:type_name -> temporal.api.common.v1.Priority - 53, // 105: temporal.server.api.persistence.v1.RequestCancelInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 53, // 106: temporal.server.api.persistence.v1.SignalInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 75, // 107: temporal.server.api.persistence.v1.Checksum.flavor:type_name -> temporal.server.api.enums.v1.ChecksumFlavor - 39, // 108: temporal.server.api.persistence.v1.Callback.nexus:type_name -> temporal.server.api.persistence.v1.Callback.Nexus - 40, // 109: temporal.server.api.persistence.v1.Callback.hsm:type_name -> temporal.server.api.persistence.v1.Callback.HSM - 76, // 110: temporal.server.api.persistence.v1.Callback.links:type_name -> temporal.api.common.v1.Link - 77, // 111: temporal.server.api.persistence.v1.HSMCompletionCallbackArg.last_event:type_name -> temporal.api.history.v1.HistoryEvent - 19, // 112: temporal.server.api.persistence.v1.CallbackInfo.callback:type_name -> temporal.server.api.persistence.v1.Callback - 43, // 113: temporal.server.api.persistence.v1.CallbackInfo.trigger:type_name -> temporal.server.api.persistence.v1.CallbackInfo.Trigger - 44, // 114: temporal.server.api.persistence.v1.CallbackInfo.registration_time:type_name -> google.protobuf.Timestamp - 78, // 115: temporal.server.api.persistence.v1.CallbackInfo.state:type_name -> temporal.server.api.enums.v1.CallbackState - 44, // 116: temporal.server.api.persistence.v1.CallbackInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp - 69, // 117: temporal.server.api.persistence.v1.CallbackInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure - 44, // 118: temporal.server.api.persistence.v1.CallbackInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp - 45, // 119: temporal.server.api.persistence.v1.NexusOperationInfo.schedule_to_close_timeout:type_name -> google.protobuf.Duration - 44, // 120: temporal.server.api.persistence.v1.NexusOperationInfo.scheduled_time:type_name -> google.protobuf.Timestamp - 79, // 121: temporal.server.api.persistence.v1.NexusOperationInfo.state:type_name -> temporal.server.api.enums.v1.NexusOperationState - 44, // 122: temporal.server.api.persistence.v1.NexusOperationInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp - 69, // 123: temporal.server.api.persistence.v1.NexusOperationInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure - 44, // 124: temporal.server.api.persistence.v1.NexusOperationInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp - 45, // 125: temporal.server.api.persistence.v1.NexusOperationInfo.schedule_to_start_timeout:type_name -> google.protobuf.Duration - 45, // 126: temporal.server.api.persistence.v1.NexusOperationInfo.start_to_close_timeout:type_name -> google.protobuf.Duration - 44, // 127: temporal.server.api.persistence.v1.NexusOperationInfo.started_time:type_name -> google.protobuf.Timestamp - 44, // 128: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.requested_time:type_name -> google.protobuf.Timestamp - 80, // 129: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.state:type_name -> temporal.api.enums.v1.NexusOperationCancellationState - 44, // 130: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp - 69, // 131: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure - 44, // 132: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp - 44, // 133: temporal.server.api.persistence.v1.WorkflowPauseInfo.pause_time:type_name -> google.protobuf.Timestamp - 81, // 134: temporal.server.api.persistence.v1.ShardInfo.QueueStatesEntry.value:type_name -> temporal.server.api.persistence.v1.QueueState - 82, // 135: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SearchAttributesEntry.value:type_name -> temporal.api.common.v1.Payload - 82, // 136: temporal.server.api.persistence.v1.WorkflowExecutionInfo.MemoEntry.value:type_name -> temporal.api.common.v1.Payload - 83, // 137: temporal.server.api.persistence.v1.WorkflowExecutionInfo.UpdateInfosEntry.value:type_name -> temporal.server.api.persistence.v1.UpdateInfo - 84, // 138: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SubStateMachinesByTypeEntry.value:type_name -> temporal.server.api.persistence.v1.StateMachineMap - 24, // 139: temporal.server.api.persistence.v1.WorkflowExecutionInfo.ChildrenInitializedPostResetPointEntry.value:type_name -> temporal.server.api.persistence.v1.ResetChildInfo - 4, // 140: temporal.server.api.persistence.v1.WorkflowExecutionState.RequestIdsEntry.value:type_name -> temporal.server.api.persistence.v1.RequestIDInfo - 44, // 141: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.pause_time:type_name -> google.protobuf.Timestamp - 38, // 142: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.manual:type_name -> temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.Manual - 41, // 143: temporal.server.api.persistence.v1.Callback.Nexus.header:type_name -> temporal.server.api.persistence.v1.Callback.Nexus.HeaderEntry - 85, // 144: temporal.server.api.persistence.v1.Callback.HSM.ref:type_name -> temporal.server.api.persistence.v1.StateMachineRef - 42, // 145: temporal.server.api.persistence.v1.CallbackInfo.Trigger.workflow_closed:type_name -> temporal.server.api.persistence.v1.CallbackInfo.WorkflowClosed - 146, // [146:146] is the sub-list for method output_type - 146, // [146:146] is the sub-list for method input_type - 146, // [146:146] is the sub-list for extension type_name - 146, // [146:146] is the sub-list for extension extendee - 0, // [0:146] is the sub-list for field type_name + 63, // 55: temporal.server.api.persistence.v1.ReplicationTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 44, // 56: temporal.server.api.persistence.v1.ReplicationTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 65, // 57: temporal.server.api.persistence.v1.ReplicationTaskInfo.priority:type_name -> temporal.server.api.enums.v1.TaskPriority + 53, // 58: temporal.server.api.persistence.v1.ReplicationTaskInfo.versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 6, // 59: temporal.server.api.persistence.v1.ReplicationTaskInfo.task_equivalents:type_name -> temporal.server.api.persistence.v1.ReplicationTaskInfo + 66, // 60: temporal.server.api.persistence.v1.ReplicationTaskInfo.last_version_history_item:type_name -> temporal.server.api.history.v1.VersionHistoryItem + 63, // 61: temporal.server.api.persistence.v1.VisibilityTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 44, // 62: temporal.server.api.persistence.v1.VisibilityTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 44, // 63: temporal.server.api.persistence.v1.VisibilityTaskInfo.close_time:type_name -> google.protobuf.Timestamp + 64, // 64: temporal.server.api.persistence.v1.VisibilityTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo + 63, // 65: temporal.server.api.persistence.v1.TimerTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 59, // 66: temporal.server.api.persistence.v1.TimerTaskInfo.timeout_type:type_name -> temporal.api.enums.v1.TimeoutType + 67, // 67: temporal.server.api.persistence.v1.TimerTaskInfo.workflow_backoff_type:type_name -> temporal.server.api.enums.v1.WorkflowBackoffType + 44, // 68: temporal.server.api.persistence.v1.TimerTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 64, // 69: temporal.server.api.persistence.v1.TimerTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo + 63, // 70: temporal.server.api.persistence.v1.ArchivalTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 44, // 71: temporal.server.api.persistence.v1.ArchivalTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 63, // 72: temporal.server.api.persistence.v1.OutboundTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 44, // 73: temporal.server.api.persistence.v1.OutboundTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 68, // 74: temporal.server.api.persistence.v1.OutboundTaskInfo.state_machine_info:type_name -> temporal.server.api.persistence.v1.StateMachineTaskInfo + 64, // 75: temporal.server.api.persistence.v1.OutboundTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo + 11, // 76: temporal.server.api.persistence.v1.OutboundTaskInfo.activity_command_info:type_name -> temporal.server.api.persistence.v1.ActivityCommandTaskInfo + 69, // 77: temporal.server.api.persistence.v1.ActivityCommandTaskInfo.command_type:type_name -> temporal.server.api.enums.v1.ActivityCommandType + 44, // 78: temporal.server.api.persistence.v1.ActivityInfo.scheduled_time:type_name -> google.protobuf.Timestamp + 44, // 79: temporal.server.api.persistence.v1.ActivityInfo.started_time:type_name -> google.protobuf.Timestamp + 45, // 80: temporal.server.api.persistence.v1.ActivityInfo.schedule_to_start_timeout:type_name -> google.protobuf.Duration + 45, // 81: temporal.server.api.persistence.v1.ActivityInfo.schedule_to_close_timeout:type_name -> google.protobuf.Duration + 45, // 82: temporal.server.api.persistence.v1.ActivityInfo.start_to_close_timeout:type_name -> google.protobuf.Duration + 45, // 83: temporal.server.api.persistence.v1.ActivityInfo.heartbeat_timeout:type_name -> google.protobuf.Duration + 45, // 84: temporal.server.api.persistence.v1.ActivityInfo.retry_initial_interval:type_name -> google.protobuf.Duration + 45, // 85: temporal.server.api.persistence.v1.ActivityInfo.retry_maximum_interval:type_name -> google.protobuf.Duration + 44, // 86: temporal.server.api.persistence.v1.ActivityInfo.retry_expiration_time:type_name -> google.protobuf.Timestamp + 70, // 87: temporal.server.api.persistence.v1.ActivityInfo.retry_last_failure:type_name -> temporal.api.failure.v1.Failure + 71, // 88: temporal.server.api.persistence.v1.ActivityInfo.last_heartbeat_details:type_name -> temporal.api.common.v1.Payloads + 44, // 89: temporal.server.api.persistence.v1.ActivityInfo.last_heartbeat_update_time:type_name -> google.protobuf.Timestamp + 72, // 90: temporal.server.api.persistence.v1.ActivityInfo.activity_type:type_name -> temporal.api.common.v1.ActivityType + 36, // 91: temporal.server.api.persistence.v1.ActivityInfo.use_workflow_build_id_info:type_name -> temporal.server.api.persistence.v1.ActivityInfo.UseWorkflowBuildIdInfo + 52, // 92: temporal.server.api.persistence.v1.ActivityInfo.last_worker_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp + 53, // 93: temporal.server.api.persistence.v1.ActivityInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 44, // 94: temporal.server.api.persistence.v1.ActivityInfo.first_scheduled_time:type_name -> google.protobuf.Timestamp + 44, // 95: temporal.server.api.persistence.v1.ActivityInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp + 73, // 96: temporal.server.api.persistence.v1.ActivityInfo.last_started_deployment:type_name -> temporal.api.deployment.v1.Deployment + 74, // 97: temporal.server.api.persistence.v1.ActivityInfo.last_deployment_version:type_name -> temporal.api.deployment.v1.WorkerDeploymentVersion + 57, // 98: temporal.server.api.persistence.v1.ActivityInfo.priority:type_name -> temporal.api.common.v1.Priority + 37, // 99: temporal.server.api.persistence.v1.ActivityInfo.pause_info:type_name -> temporal.server.api.persistence.v1.ActivityInfo.PauseInfo + 44, // 100: temporal.server.api.persistence.v1.TimerInfo.expiry_time:type_name -> google.protobuf.Timestamp + 53, // 101: temporal.server.api.persistence.v1.TimerInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 75, // 102: temporal.server.api.persistence.v1.ChildExecutionInfo.parent_close_policy:type_name -> temporal.api.enums.v1.ParentClosePolicy + 50, // 103: temporal.server.api.persistence.v1.ChildExecutionInfo.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 53, // 104: temporal.server.api.persistence.v1.ChildExecutionInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 57, // 105: temporal.server.api.persistence.v1.ChildExecutionInfo.priority:type_name -> temporal.api.common.v1.Priority + 53, // 106: temporal.server.api.persistence.v1.RequestCancelInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 53, // 107: temporal.server.api.persistence.v1.SignalInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 76, // 108: temporal.server.api.persistence.v1.Checksum.flavor:type_name -> temporal.server.api.enums.v1.ChecksumFlavor + 39, // 109: temporal.server.api.persistence.v1.Callback.nexus:type_name -> temporal.server.api.persistence.v1.Callback.Nexus + 40, // 110: temporal.server.api.persistence.v1.Callback.hsm:type_name -> temporal.server.api.persistence.v1.Callback.HSM + 77, // 111: temporal.server.api.persistence.v1.Callback.links:type_name -> temporal.api.common.v1.Link + 78, // 112: temporal.server.api.persistence.v1.HSMCompletionCallbackArg.last_event:type_name -> temporal.api.history.v1.HistoryEvent + 20, // 113: temporal.server.api.persistence.v1.CallbackInfo.callback:type_name -> temporal.server.api.persistence.v1.Callback + 43, // 114: temporal.server.api.persistence.v1.CallbackInfo.trigger:type_name -> temporal.server.api.persistence.v1.CallbackInfo.Trigger + 44, // 115: temporal.server.api.persistence.v1.CallbackInfo.registration_time:type_name -> google.protobuf.Timestamp + 79, // 116: temporal.server.api.persistence.v1.CallbackInfo.state:type_name -> temporal.server.api.enums.v1.CallbackState + 44, // 117: temporal.server.api.persistence.v1.CallbackInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp + 70, // 118: temporal.server.api.persistence.v1.CallbackInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure + 44, // 119: temporal.server.api.persistence.v1.CallbackInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp + 45, // 120: temporal.server.api.persistence.v1.NexusOperationInfo.schedule_to_close_timeout:type_name -> google.protobuf.Duration + 44, // 121: temporal.server.api.persistence.v1.NexusOperationInfo.scheduled_time:type_name -> google.protobuf.Timestamp + 80, // 122: temporal.server.api.persistence.v1.NexusOperationInfo.state:type_name -> temporal.server.api.enums.v1.NexusOperationState + 44, // 123: temporal.server.api.persistence.v1.NexusOperationInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp + 70, // 124: temporal.server.api.persistence.v1.NexusOperationInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure + 44, // 125: temporal.server.api.persistence.v1.NexusOperationInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp + 45, // 126: temporal.server.api.persistence.v1.NexusOperationInfo.schedule_to_start_timeout:type_name -> google.protobuf.Duration + 45, // 127: temporal.server.api.persistence.v1.NexusOperationInfo.start_to_close_timeout:type_name -> google.protobuf.Duration + 44, // 128: temporal.server.api.persistence.v1.NexusOperationInfo.started_time:type_name -> google.protobuf.Timestamp + 44, // 129: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.requested_time:type_name -> google.protobuf.Timestamp + 81, // 130: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.state:type_name -> temporal.api.enums.v1.NexusOperationCancellationState + 44, // 131: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp + 70, // 132: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure + 44, // 133: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp + 44, // 134: temporal.server.api.persistence.v1.WorkflowPauseInfo.pause_time:type_name -> google.protobuf.Timestamp + 82, // 135: temporal.server.api.persistence.v1.ShardInfo.QueueStatesEntry.value:type_name -> temporal.server.api.persistence.v1.QueueState + 83, // 136: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SearchAttributesEntry.value:type_name -> temporal.api.common.v1.Payload + 83, // 137: temporal.server.api.persistence.v1.WorkflowExecutionInfo.MemoEntry.value:type_name -> temporal.api.common.v1.Payload + 84, // 138: temporal.server.api.persistence.v1.WorkflowExecutionInfo.UpdateInfosEntry.value:type_name -> temporal.server.api.persistence.v1.UpdateInfo + 85, // 139: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SubStateMachinesByTypeEntry.value:type_name -> temporal.server.api.persistence.v1.StateMachineMap + 25, // 140: temporal.server.api.persistence.v1.WorkflowExecutionInfo.ChildrenInitializedPostResetPointEntry.value:type_name -> temporal.server.api.persistence.v1.ResetChildInfo + 4, // 141: temporal.server.api.persistence.v1.WorkflowExecutionState.RequestIdsEntry.value:type_name -> temporal.server.api.persistence.v1.RequestIDInfo + 44, // 142: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.pause_time:type_name -> google.protobuf.Timestamp + 38, // 143: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.manual:type_name -> temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.Manual + 41, // 144: temporal.server.api.persistence.v1.Callback.Nexus.header:type_name -> temporal.server.api.persistence.v1.Callback.Nexus.HeaderEntry + 86, // 145: temporal.server.api.persistence.v1.Callback.HSM.ref:type_name -> temporal.server.api.persistence.v1.StateMachineRef + 42, // 146: temporal.server.api.persistence.v1.CallbackInfo.Trigger.workflow_closed:type_name -> temporal.server.api.persistence.v1.CallbackInfo.WorkflowClosed + 147, // [147:147] is the sub-list for method output_type + 147, // [147:147] is the sub-list for method input_type + 147, // [147:147] is the sub-list for extension type_name + 147, // [147:147] is the sub-list for extension extendee + 0, // [0:147] is the sub-list for field type_name } func init() { file_temporal_server_api_persistence_v1_executions_proto_init() } @@ -5386,7 +5389,6 @@ func file_temporal_server_api_persistence_v1_executions_proto_init() { file_temporal_server_api_persistence_v1_executions_proto_msgTypes[5].OneofWrappers = []any{ (*TransferTaskInfo_CloseExecutionTaskDetails_)(nil), (*TransferTaskInfo_ChasmTaskInfo)(nil), - (*TransferTaskInfo_CancelActivityNexusTaskDetails_)(nil), } file_temporal_server_api_persistence_v1_executions_proto_msgTypes[7].OneofWrappers = []any{ (*VisibilityTaskInfo_ChasmTaskInfo)(nil), @@ -5397,12 +5399,13 @@ func file_temporal_server_api_persistence_v1_executions_proto_init() { file_temporal_server_api_persistence_v1_executions_proto_msgTypes[10].OneofWrappers = []any{ (*OutboundTaskInfo_StateMachineInfo)(nil), (*OutboundTaskInfo_ChasmTaskInfo)(nil), + (*OutboundTaskInfo_ActivityCommandInfo)(nil), } - file_temporal_server_api_persistence_v1_executions_proto_msgTypes[13].OneofWrappers = []any{ + file_temporal_server_api_persistence_v1_executions_proto_msgTypes[14].OneofWrappers = []any{ (*ActivityInfo_UseWorkflowBuildIdInfo_)(nil), (*ActivityInfo_LastIndependentlyAssignedBuildId)(nil), } - file_temporal_server_api_persistence_v1_executions_proto_msgTypes[19].OneofWrappers = []any{ + file_temporal_server_api_persistence_v1_executions_proto_msgTypes[20].OneofWrappers = []any{ (*Callback_Nexus_)(nil), (*Callback_Hsm)(nil), } diff --git a/common/metrics/metric_defs.go b/common/metrics/metric_defs.go index f77fb50d78..08c99e689d 100644 --- a/common/metrics/metric_defs.go +++ b/common/metrics/metric_defs.go @@ -567,7 +567,6 @@ const ( TaskTypeTransferActiveTaskStartChildExecution = "TransferActiveTaskStartChildExecution" TaskTypeTransferActiveTaskResetWorkflow = "TransferActiveTaskResetWorkflow" TaskTypeTransferActiveTaskDeleteExecution = "TransferActiveTaskDeleteExecution" - TaskTypeTransferActiveTaskCancelActivityNexus = "TransferActiveTaskCancelActivityNexus" TaskTypeTransferStandbyTaskActivity = "TransferStandbyTaskActivity" TaskTypeTransferStandbyTaskWorkflowTask = "TransferStandbyTaskWorkflowTask" TaskTypeTransferStandbyTaskCloseExecution = "TransferStandbyTaskCloseExecution" diff --git a/common/persistence/serialization/task_serializers.go b/common/persistence/serialization/task_serializers.go index 62b2fc343a..2e7b3a19ec 100644 --- a/common/persistence/serialization/task_serializers.go +++ b/common/persistence/serialization/task_serializers.go @@ -38,8 +38,6 @@ func serializeTransferTask( transferTask = transferDeleteExecutionTaskToProto(task) case *tasks.ChasmTask: transferTask = transferChasmTaskToProto(task) - case *tasks.CancelActivityNexusTask: - transferTask = transferCancelActivityNexusTaskToProto(task) default: return nil, serviceerror.NewInternalf("Unknown transfer task type: %v", task) } @@ -88,8 +86,6 @@ func deserializeTransferTask( task = transferDeleteExecutionTaskFromProto(transferTask) case enumsspb.TASK_TYPE_CHASM: task = transferChasmTaskFromProto(transferTask) - case enumsspb.TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS: - task = transferCancelActivityNexusTaskFromProto(transferTask) default: return nil, serviceerror.NewInternalf("Unknown transfer task type: %v", transferTask.TaskType) } @@ -110,40 +106,6 @@ func transferChasmTaskFromProto(task *persistencespb.TransferTaskInfo) tasks.Tas } } -func transferCancelActivityNexusTaskToProto(task *tasks.CancelActivityNexusTask) *persistencespb.TransferTaskInfo { - return &persistencespb.TransferTaskInfo{ - NamespaceId: task.NamespaceID, - WorkflowId: task.WorkflowID, - RunId: task.RunID, - TaskId: task.TaskID, - TaskType: task.GetType(), - Version: task.Version, - VisibilityTime: timestamppb.New(task.VisibilityTimestamp), - TaskDetails: &persistencespb.TransferTaskInfo_CancelActivityNexusTaskDetails_{ - CancelActivityNexusTaskDetails: &persistencespb.TransferTaskInfo_CancelActivityNexusTaskDetails{ - ScheduledEventIds: task.ScheduledEventIDs, - WorkerControlTaskQueue: task.WorkerControlTaskQueue, - }, - }, - } -} - -func transferCancelActivityNexusTaskFromProto(task *persistencespb.TransferTaskInfo) tasks.Task { - details := task.GetCancelActivityNexusTaskDetails() - return &tasks.CancelActivityNexusTask{ - WorkflowKey: definition.NewWorkflowKey( - task.NamespaceId, - task.WorkflowId, - task.RunId, - ), - VisibilityTimestamp: task.VisibilityTime.AsTime(), - TaskID: task.TaskId, - Version: task.Version, - ScheduledEventIDs: details.GetScheduledEventIds(), - WorkerControlTaskQueue: details.GetWorkerControlTaskQueue(), - } -} - func serializeTimerTask( encoder Encoder, task tasks.Task, @@ -1484,6 +1446,22 @@ func serializeOutboundTask( ChasmTaskInfo: task.Info, }, } + case *tasks.ActivityCommandTask: + outboundTaskInfo = &persistencespb.OutboundTaskInfo{ + NamespaceId: task.NamespaceID, + WorkflowId: task.WorkflowID, + RunId: task.RunID, + TaskId: task.TaskID, + TaskType: task.GetType(), + Destination: task.Destination, + VisibilityTime: timestamppb.New(task.VisibilityTimestamp), + TaskDetails: &persistencespb.OutboundTaskInfo_ActivityCommandInfo{ + ActivityCommandInfo: &persistencespb.ActivityCommandTaskInfo{ + CommandType: task.CommandType, + ScheduledEventIds: task.ScheduledEventIDs, + }, + }, + } default: return nil, serviceerror.NewInternalf("unknown outbound task type while serializing: %v", task) } @@ -1526,6 +1504,20 @@ func deserializeOutboundTask( Info: info.GetChasmTaskInfo(), Destination: info.Destination, }, nil + case enumsspb.TASK_TYPE_ACTIVITY_COMMAND: + activityCommandInfo := info.GetActivityCommandInfo() + return &tasks.ActivityCommandTask{ + WorkflowKey: definition.NewWorkflowKey( + info.NamespaceId, + info.WorkflowId, + info.RunId, + ), + VisibilityTimestamp: info.VisibilityTime.AsTime(), + TaskID: info.TaskId, + CommandType: activityCommandInfo.GetCommandType(), + ScheduledEventIDs: activityCommandInfo.GetScheduledEventIds(), + Destination: info.Destination, + }, nil default: return nil, serviceerror.NewInternalf("unknown outbound task type while deserializing: %v", info) } diff --git a/common/persistence/serialization/task_serializers_test.go b/common/persistence/serialization/task_serializers_test.go index 6e7ad603d9..3d63527463 100644 --- a/common/persistence/serialization/task_serializers_test.go +++ b/common/persistence/serialization/task_serializers_test.go @@ -169,17 +169,17 @@ func (s *taskSerializerSuite) TestTransferResetTask() { s.assertEqualTasks(resetTask) } -func (s *taskSerializerSuite) TestTransferCancelActivityNexusTask() { - cancelActivityNexusTask := &tasks.CancelActivityNexusTask{ - WorkflowKey: s.workflowKey, - VisibilityTimestamp: time.Unix(0, rand.Int63()).UTC(), - TaskID: rand.Int63(), - Version: rand.Int63(), - ScheduledEventIDs: []int64{rand.Int63(), rand.Int63(), rand.Int63()}, - WorkerControlTaskQueue: "test-control-queue", +func (s *taskSerializerSuite) TestOutboundActivityCommandTask() { + activityCommandTask := &tasks.ActivityCommandTask{ + WorkflowKey: s.workflowKey, + VisibilityTimestamp: time.Unix(0, rand.Int63()).UTC(), + TaskID: rand.Int63(), + CommandType: enumsspb.ACTIVITY_COMMAND_TYPE_CANCEL, + ScheduledEventIDs: []int64{rand.Int63(), rand.Int63(), rand.Int63()}, + Destination: "test-control-queue", } - s.assertEqualTasks(cancelActivityNexusTask) + s.assertEqualTasks(activityCommandTask) } func (s *taskSerializerSuite) TestTimerWorkflowTask() { diff --git a/common/testing/testvars/test_vars.go b/common/testing/testvars/test_vars.go index 23e823412c..1e1ab4ec6c 100644 --- a/common/testing/testvars/test_vars.go +++ b/common/testing/testvars/test_vars.go @@ -396,6 +396,15 @@ func (tv *TestVars) WorkerIdentity() string { return getOrCreate(tv, "worker_identity", tv.uniqueString, tv.stringNSetter) } +func (tv *TestVars) WorkerInstanceKey() string { + return getOrCreate(tv, "worker_instance_key", tv.uniqueString, tv.stringNSetter) +} + +// ControlQueueName returns the Nexus task queue name used to deliver control tasks to this worker. +func (tv *TestVars) ControlQueueName(ns string) string { + return fmt.Sprintf("/temporal-sys/worker-commands/%s/%s", ns, tv.WorkerInstanceKey()) +} + func (tv *TestVars) TimerID() string { return getOrCreate(tv, "timer_id", tv.uniqueString, tv.stringNSetter) } diff --git a/proto/internal/temporal/server/api/enums/v1/task.proto b/proto/internal/temporal/server/api/enums/v1/task.proto index c0150d2abd..4eb75a50fe 100644 --- a/proto/internal/temporal/server/api/enums/v1/task.proto +++ b/proto/internal/temporal/server/api/enums/v1/task.proto @@ -60,8 +60,14 @@ enum TaskType { // A task with side effects generated by a CHASM component. TASK_TYPE_CHASM = 33; - // A task to cancel a running activity via Nexus control queue. - TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS = 34; + // A task to send commands to activities via Nexus. Also see ActivityCommandType. + TASK_TYPE_ACTIVITY_COMMAND = 34; +} + +// ActivityCommandType specifies the type of command to send to activities. +enum ActivityCommandType { + ACTIVITY_COMMAND_TYPE_UNSPECIFIED = 0; + ACTIVITY_COMMAND_TYPE_CANCEL = 1; } // TaskPriority is only used for replication task as of May 2024 diff --git a/proto/internal/temporal/server/api/persistence/v1/executions.proto b/proto/internal/temporal/server/api/persistence/v1/executions.proto index 00fb34de5f..3a1d68f47d 100644 --- a/proto/internal/temporal/server/api/persistence/v1/executions.proto +++ b/proto/internal/temporal/server/api/persistence/v1/executions.proto @@ -351,21 +351,11 @@ message TransferTaskInfo { bool can_skip_visibility_archival = 1; } - // Details for a Nexus task that cancels activities. - message CancelActivityNexusTaskDetails { - // Scheduled event IDs of activities to cancel. - repeated int64 scheduled_event_ids = 1; - // The Nexus queue to dispatch the cancel request to. - string worker_control_task_queue = 2; - } - oneof task_details { CloseExecutionTaskDetails close_execution_task_details = 16; // If the task addresses a CHASM component, this field will be set. ChasmTaskInfo chasm_task_info = 18; - - CancelActivityNexusTaskDetails cancel_activity_nexus_task_details = 19; } // Stamp represents the "version" of the entity's internal state for which the transfer task was created. // It increases monotonically when the entity's options are modified. @@ -493,9 +483,20 @@ message OutboundTaskInfo { // If the task addresses a CHASM component, this field will be set. ChasmTaskInfo chasm_task_info = 9; + + // If the task is an activity command task. + ActivityCommandTaskInfo activity_command_info = 10; } } +// ActivityCommandTaskInfo contains details for activity command operations. +message ActivityCommandTaskInfo { + // Type of command to send. + temporal.server.api.enums.v1.ActivityCommandType command_type = 1; + // Scheduled event IDs of activities to send command to. + repeated int64 scheduled_event_ids = 2; +} + message NexusInvocationTaskInfo { int32 attempt = 1; } diff --git a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go index 31c03d70e9..46218b4f44 100644 --- a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go +++ b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go @@ -18,6 +18,7 @@ import ( protocolpb "go.temporal.io/api/protocol/v1" "go.temporal.io/api/serviceerror" "go.temporal.io/api/workflowservice/v1" + enumsspb "go.temporal.io/server/api/enums/v1" "go.temporal.io/server/api/historyservice/v1" "go.temporal.io/server/api/matchingservice/v1" "go.temporal.io/server/common" @@ -57,15 +58,16 @@ type ( workflowTaskCompletedID int64 // internal state - hasBufferedEventsOrMessages bool - workflowTaskFailedCause *workflowTaskFailedCause - activityNotStartedCancelled bool - newMutableState historyi.MutableState - stopProcessing bool // should stop processing any more commands - mutableState historyi.MutableState - effects effect.Controller - initiatedChildExecutionsInBatch map[string]struct{} // Set of initiated child executions in the workflow task - updateRegistry update.Registry + hasBufferedEventsOrMessages bool + workflowTaskFailedCause *workflowTaskFailedCause + activityNotStartedCancelled bool + newMutableState historyi.MutableState + stopProcessing bool // should stop processing any more commands + mutableState historyi.MutableState + effects effect.Controller + initiatedChildExecutionsInBatch map[string]struct{} // Set of initiated child executions in the workflow task + updateRegistry update.Registry + pendingActivityCancelsByControlQueue map[string][]int64 // Batched activity cancels by control queue // validation attrValidator *api.CommandAttrValidator @@ -210,6 +212,10 @@ func (handler *workflowTaskCompletedHandler) handleCommands( } } + if err := handler.flushBatchedActivityCommandTasks(); err != nil { + return nil, err + } + return mutations, nil } @@ -664,17 +670,35 @@ func (handler *workflowTaskCompletedHandler) handleCommandRequestCancelActivity( return nil, err } handler.activityNotStartedCancelled = true - } else if ai.StartedEventId != common.EmptyEventID { - // Activity has started - create cancel task and send to worker via Nexus. - // TODO: Batch tasks for the same control queue. - if err := handler.mutableState.AddCancelActivityNexusTasks(ai.ScheduledEventId); err != nil { - return nil, err + } else if ai.StartedEventId != common.EmptyEventID && ai.WorkerControlTaskQueue != "" { + // Activity has started and worker supports Nexus control tasks - collect for batched dispatch. + if handler.pendingActivityCancelsByControlQueue == nil { + handler.pendingActivityCancelsByControlQueue = make(map[string][]int64) } + handler.pendingActivityCancelsByControlQueue[ai.WorkerControlTaskQueue] = append( + handler.pendingActivityCancelsByControlQueue[ai.WorkerControlTaskQueue], + ai.ScheduledEventId, + ) } } return actCancelReqEvent, nil } +// flushBatchedActivityCommandTasks creates ActivityCommandTasks for all collected activity cancellations, +// batched by control queue. +func (handler *workflowTaskCompletedHandler) flushBatchedActivityCommandTasks() error { + for controlQueue, scheduledEventIDs := range handler.pendingActivityCancelsByControlQueue { + if err := handler.mutableState.AddActivityCommandTasks( + scheduledEventIDs, + controlQueue, + enumsspb.ACTIVITY_COMMAND_TYPE_CANCEL, + ); err != nil { + return err + } + } + return nil +} + func (handler *workflowTaskCompletedHandler) handleCommandStartTimer( _ context.Context, attr *commandpb.StartTimerCommandAttributes, diff --git a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler_test.go b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler_test.go index c68b8d1478..ec87e5f265 100644 --- a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler_test.go +++ b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler_test.go @@ -16,6 +16,7 @@ import ( sdkpb "go.temporal.io/api/sdk/v1" "go.temporal.io/api/serviceerror" updatepb "go.temporal.io/api/update/v1" + enumsspb "go.temporal.io/server/api/enums/v1" persistencespb "go.temporal.io/server/api/persistence/v1" "go.temporal.io/server/common/backoff" "go.temporal.io/server/common/collection" @@ -384,3 +385,71 @@ func mustMarshalAny(t *testing.T, pb proto.Message) *anypb.Any { require.NoError(t, a.MarshalFrom(pb)) return &a } + +func TestFlushBatchedActivityCommandTasks(t *testing.T) { + t.Parallel() + + t.Run("batches activities by control queue", func(t *testing.T) { + ctrl := gomock.NewController(t) + ms := historyi.NewMockMutableState(ctrl) + + ms.EXPECT().AddActivityCommandTasks( + []int64{5, 6, 7}, + "control-queue-1", + gomock.Any(), + ).Return(nil).Times(1) + + handler := &workflowTaskCompletedHandler{ + mutableState: ms, + pendingActivityCancelsByControlQueue: map[string][]int64{ + "control-queue-1": {5, 6, 7}, + }, + } + + err := handler.flushBatchedActivityCommandTasks() + require.NoError(t, err) + }) + + t.Run("creates separate tasks for different control queues", func(t *testing.T) { + ctrl := gomock.NewController(t) + ms := historyi.NewMockMutableState(ctrl) + + // Capture calls to verify both queues are processed + calls := make(map[string][]int64) + ms.EXPECT().AddActivityCommandTasks( + gomock.Any(), + gomock.Any(), + enumsspb.ACTIVITY_COMMAND_TYPE_CANCEL, + ).DoAndReturn(func(ids []int64, queue string, _ enumsspb.ActivityCommandType) error { + calls[queue] = ids + return nil + }).Times(2) + + handler := &workflowTaskCompletedHandler{ + mutableState: ms, + pendingActivityCancelsByControlQueue: map[string][]int64{ + "control-queue-1": {5, 6}, + "control-queue-2": {7, 8}, + }, + } + + err := handler.flushBatchedActivityCommandTasks() + require.NoError(t, err) + + require.Equal(t, []int64{5, 6}, calls["control-queue-1"]) + require.Equal(t, []int64{7, 8}, calls["control-queue-2"]) + }) + + t.Run("does nothing when no pending cancels", func(t *testing.T) { + ctrl := gomock.NewController(t) + ms := historyi.NewMockMutableState(ctrl) + + handler := &workflowTaskCompletedHandler{ + mutableState: ms, + pendingActivityCancelsByControlQueue: nil, + } + + err := handler.flushBatchedActivityCommandTasks() + require.NoError(t, err) + }) +} diff --git a/service/history/interfaces/mutable_state.go b/service/history/interfaces/mutable_state.go index ebf16ab351..631d64bc43 100644 --- a/service/history/interfaces/mutable_state.go +++ b/service/history/interfaces/mutable_state.go @@ -46,7 +46,7 @@ type ( AddActivityTaskCancelRequestedEvent(int64, int64, string) (*historypb.HistoryEvent, *persistencespb.ActivityInfo, error) AddActivityTaskCanceledEvent(int64, int64, int64, *commonpb.Payloads, string) (*historypb.HistoryEvent, error) - AddCancelActivityNexusTasks(int64) error + AddActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, commandType enumsspb.ActivityCommandType) error AddActivityTaskCompletedEvent(int64, int64, *workflowservice.RespondActivityTaskCompletedRequest) (*historypb.HistoryEvent, error) AddActivityTaskFailedEvent(int64, int64, *failurepb.Failure, enumspb.RetryState, string, *commonpb.WorkerVersionStamp) (*historypb.HistoryEvent, error) AddActivityTaskScheduledEvent(int64, *commandpb.ScheduleActivityTaskCommandAttributes, bool) (*historypb.HistoryEvent, *persistencespb.ActivityInfo, error) diff --git a/service/history/interfaces/mutable_state_mock.go b/service/history/interfaces/mutable_state_mock.go index 9b89e38359..c0a0f7f2d5 100644 --- a/service/history/interfaces/mutable_state_mock.go +++ b/service/history/interfaces/mutable_state_mock.go @@ -408,6 +408,20 @@ func (mr *MockMutableStateMockRecorder) AddHistorySize(size any) *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddHistorySize", reflect.TypeOf((*MockMutableState)(nil).AddHistorySize), size) } +// AddActivityCommandTasks mocks base method. +func (m *MockMutableState) AddActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, notificationType enums0.ActivityCommandType) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AddActivityCommandTasks", scheduledEventIDs, controlQueue, notificationType) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddActivityCommandTasks indicates an expected call of AddActivityCommandTasks. +func (mr *MockMutableStateMockRecorder) AddActivityCommandTasks(scheduledEventIDs, controlQueue, notificationType any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddActivityCommandTasks", reflect.TypeOf((*MockMutableState)(nil).AddActivityCommandTasks), scheduledEventIDs, controlQueue, notificationType) +} + // AddReapplyCandidateEvent mocks base method. func (m *MockMutableState) AddReapplyCandidateEvent(event *history.HistoryEvent) { m.ctrl.T.Helper() diff --git a/service/history/queues/metrics.go b/service/history/queues/metrics.go index c2b581eb61..65148834cb 100644 --- a/service/history/queues/metrics.go +++ b/service/history/queues/metrics.go @@ -48,8 +48,6 @@ func GetActiveTransferTaskTypeTagValue( return metrics.TaskTypeTransferActiveTaskResetWorkflow case *tasks.DeleteExecutionTask: return metrics.TaskTypeTransferActiveTaskDeleteExecution - case *tasks.CancelActivityNexusTask: - return metrics.TaskTypeTransferActiveTaskCancelActivityNexus case *tasks.ChasmTask: return prefix + "." + getCHASMTaskTypeTagValue(t, chasmRegistry) default: @@ -198,6 +196,8 @@ func GetOutboundTaskTypeTagValue( return prefix + "." + task.StateMachineTaskType() case *tasks.ChasmTask: return prefix + "." + getCHASMTaskTypeTagValue(task, chasmRegistry) + case *tasks.ActivityCommandTask: + return prefix + ".ActivityCommand." + task.CommandType.String() default: return prefix + "Unknown" } diff --git a/service/history/queues/priority_assigner.go b/service/history/queues/priority_assigner.go index e8ee618f3e..cbaf7d4b95 100644 --- a/service/history/queues/priority_assigner.go +++ b/service/history/queues/priority_assigner.go @@ -49,7 +49,6 @@ func (a *priorityAssignerImpl) Assign(executable Executable) tasks.Priority { enumsspb.TASK_TYPE_TRANSFER_DELETE_EXECUTION, enumsspb.TASK_TYPE_VISIBILITY_DELETE_EXECUTION, enumsspb.TASK_TYPE_ARCHIVAL_ARCHIVE_EXECUTION, - enumsspb.TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS, enumsspb.TASK_TYPE_UNSPECIFIED: // add more task types here if we believe it's ok to delay those tasks // and assign them the same priority as throttled tasks diff --git a/service/history/tasks/activity_command_task.go b/service/history/tasks/activity_command_task.go new file mode 100644 index 0000000000..805c9d6eb0 --- /dev/null +++ b/service/history/tasks/activity_command_task.go @@ -0,0 +1,72 @@ +package tasks + +import ( + "fmt" + "time" + + enumsspb "go.temporal.io/server/api/enums/v1" + "go.temporal.io/server/common/definition" +) + +var _ Task = (*ActivityCommandTask)(nil) +var _ HasDestination = (*ActivityCommandTask)(nil) + +type ( + // ActivityCommandTask sends commands to activities via Nexus. + ActivityCommandTask struct { + definition.WorkflowKey + VisibilityTimestamp time.Time + TaskID int64 + + // CommandType specifies the type of command. + CommandType enumsspb.ActivityCommandType + // ScheduledEventIDs of activities to send command to (batched by worker). + ScheduledEventIDs []int64 + // Destination is the worker control task queue for outbound queue grouping. + Destination string + } +) + +func (t *ActivityCommandTask) GetKey() Key { + return NewImmediateKey(t.TaskID) +} + +func (t *ActivityCommandTask) GetTaskID() int64 { + return t.TaskID +} + +func (t *ActivityCommandTask) SetTaskID(id int64) { + t.TaskID = id +} + +func (t *ActivityCommandTask) GetVisibilityTime() time.Time { + return t.VisibilityTimestamp +} + +func (t *ActivityCommandTask) SetVisibilityTime(timestamp time.Time) { + t.VisibilityTimestamp = timestamp +} + +func (t *ActivityCommandTask) GetCategory() Category { + return CategoryOutbound +} + +func (t *ActivityCommandTask) GetType() enumsspb.TaskType { + return enumsspb.TASK_TYPE_ACTIVITY_COMMAND +} + +// GetDestination implements HasDestination for outbound queue grouping. +func (t *ActivityCommandTask) GetDestination() string { + return t.Destination +} + +func (t *ActivityCommandTask) String() string { + return fmt.Sprintf("ActivityCommandTask{WorkflowKey: %s, VisibilityTimestamp: %v, TaskID: %v, CommandType: %v, ScheduledEventIDs: %v, Destination: %v}", + t.WorkflowKey.String(), + t.VisibilityTimestamp, + t.TaskID, + t.CommandType, + t.ScheduledEventIDs, + t.Destination, + ) +} diff --git a/service/history/tasks/cancel_activity_nexus_task.go b/service/history/tasks/cancel_activity_nexus_task.go deleted file mode 100644 index 0ed3112daa..0000000000 --- a/service/history/tasks/cancel_activity_nexus_task.go +++ /dev/null @@ -1,71 +0,0 @@ -package tasks - -import ( - "fmt" - "time" - - enumsspb "go.temporal.io/server/api/enums/v1" - "go.temporal.io/server/common/definition" -) - -var _ Task = (*CancelActivityNexusTask)(nil) - -type ( - CancelActivityNexusTask struct { - definition.WorkflowKey - VisibilityTimestamp time.Time - TaskID int64 - Version int64 - - // ScheduledEventIDs of activities to cancel (batched by worker). - ScheduledEventIDs []int64 - // WorkerControlTaskQueue is the Nexus queue to dispatch the cancel request to. - WorkerControlTaskQueue string - } -) - -func (t *CancelActivityNexusTask) GetKey() Key { - return NewImmediateKey(t.TaskID) -} - -func (t *CancelActivityNexusTask) GetVersion() int64 { - return t.Version -} - -func (t *CancelActivityNexusTask) SetVersion(version int64) { - t.Version = version -} - -func (t *CancelActivityNexusTask) GetTaskID() int64 { - return t.TaskID -} - -func (t *CancelActivityNexusTask) SetTaskID(id int64) { - t.TaskID = id -} - -func (t *CancelActivityNexusTask) GetVisibilityTime() time.Time { - return t.VisibilityTimestamp -} - -func (t *CancelActivityNexusTask) SetVisibilityTime(timestamp time.Time) { - t.VisibilityTimestamp = timestamp -} - -func (t *CancelActivityNexusTask) GetCategory() Category { - return CategoryTransfer -} - -func (t *CancelActivityNexusTask) GetType() enumsspb.TaskType { - return enumsspb.TASK_TYPE_TRANSFER_CANCEL_ACTIVITY_NEXUS -} - -func (t *CancelActivityNexusTask) String() string { - return fmt.Sprintf("CancelActivityNexusTask{WorkflowKey: %s, VisibilityTimestamp: %v, TaskID: %v, ScheduledEventIDs: %v, Version: %v}", - t.WorkflowKey.String(), - t.VisibilityTimestamp, - t.TaskID, - t.ScheduledEventIDs, - t.Version, - ) -} diff --git a/service/history/tasks/utils.go b/service/history/tasks/utils.go index 1784b608bd..3c446342b6 100644 --- a/service/history/tasks/utils.go +++ b/service/history/tasks/utils.go @@ -78,13 +78,6 @@ func GetTransferTaskEventID( eventID = common.FirstEventID case *ChasmTask: return getChasmTaskEventID() - case *CancelActivityNexusTask: - if len(task.ScheduledEventIDs) > 0 { - eventID = task.ScheduledEventIDs[0] - } else { - // Should never happen. - eventID = common.FirstEventID - } case *FakeTask: // no-op default: diff --git a/service/history/transfer_queue_active_task_executor.go b/service/history/transfer_queue_active_task_executor.go index 4fda52b25a..3fba82a3e8 100644 --- a/service/history/transfer_queue_active_task_executor.go +++ b/service/history/transfer_queue_active_task_executor.go @@ -145,9 +145,6 @@ func (t *transferQueueActiveTaskExecutor) Execute( err = t.processDeleteExecutionTask(ctx, task) case *tasks.ChasmTask: err = t.executeChasmSideEffectTransferTask(ctx, task) - case *tasks.CancelActivityNexusTask: - // TODO: Implement dispatch to worker control queue - err = nil default: err = errUnknownTransferTask } diff --git a/service/history/transfer_queue_standby_task_executor.go b/service/history/transfer_queue_standby_task_executor.go index 0383981796..4e61c43aaf 100644 --- a/service/history/transfer_queue_standby_task_executor.go +++ b/service/history/transfer_queue_standby_task_executor.go @@ -108,10 +108,6 @@ func (t *transferQueueStandbyTaskExecutor) Execute( err = t.processDeleteExecutionTask(ctx, task, false) case *tasks.ChasmTask: err = t.executeChasmSideEffectTransferTask(ctx, task) - case *tasks.CancelActivityNexusTask: - // Nexus operation is synchronous. So if the failover happens waiting for the Nexus response, - // the task will be retried in standby. - err = nil default: err = errUnknownTransferTask } diff --git a/service/history/workflow/mutable_state_impl.go b/service/history/workflow/mutable_state_impl.go index 759102c90e..29b714685d 100644 --- a/service/history/workflow/mutable_state_impl.go +++ b/service/history/workflow/mutable_state_impl.go @@ -4369,8 +4369,8 @@ func (ms *MutableStateImpl) AddActivityTaskCancelRequestedEvent( return actCancelReqEvent, ai, nil } -func (ms *MutableStateImpl) AddCancelActivityNexusTasks(scheduledEventID int64) error { - return ms.taskGenerator.GenerateCancelActivityNexusTasks(scheduledEventID) +func (ms *MutableStateImpl) AddActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, commandType enumsspb.ActivityCommandType) error { + return ms.taskGenerator.GenerateActivityCommandTasks(scheduledEventIDs, controlQueue, commandType) } func (ms *MutableStateImpl) ApplyActivityTaskCancelRequestedEvent( diff --git a/service/history/workflow/task_generator.go b/service/history/workflow/task_generator.go index ef1073d819..7c8a2db0bc 100644 --- a/service/history/workflow/task_generator.go +++ b/service/history/workflow/task_generator.go @@ -63,7 +63,7 @@ type ( activityScheduledEventID int64, ) error GenerateActivityRetryTasks(activityInfo *persistencespb.ActivityInfo) error - GenerateCancelActivityNexusTasks(scheduledEventID int64) error + GenerateActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, commandType enumsspb.ActivityCommandType) error GenerateChildWorkflowTasks( childInitiatedEventId int64, ) error @@ -584,22 +584,20 @@ func (r *TaskGeneratorImpl) GenerateActivityRetryTasks(activityInfo *persistence return nil } -func (r *TaskGeneratorImpl) GenerateCancelActivityNexusTasks(scheduledEventID int64) error { +func (r *TaskGeneratorImpl) GenerateActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, commandType enumsspb.ActivityCommandType) error { if !r.config.EnableActivityCancellationNexusTask() { return nil } - ai, ok := r.mutableState.GetActivityInfo(scheduledEventID) - // If control queue is not set, it means the worker that this activity belongs to does not support Nexus tasks. - if !ok || ai.WorkerControlTaskQueue == "" { + if len(scheduledEventIDs) == 0 || controlQueue == "" { return nil } - r.mutableState.AddTasks(&tasks.CancelActivityNexusTask{ - WorkflowKey: r.mutableState.GetWorkflowKey(), - ScheduledEventIDs: []int64{scheduledEventID}, - WorkerControlTaskQueue: ai.WorkerControlTaskQueue, - Version: ai.Version, + r.mutableState.AddTasks(&tasks.ActivityCommandTask{ + WorkflowKey: r.mutableState.GetWorkflowKey(), + CommandType: commandType, + ScheduledEventIDs: scheduledEventIDs, + Destination: controlQueue, }) return nil } diff --git a/service/history/workflow/task_generator_mock.go b/service/history/workflow/task_generator_mock.go index 63f740f755..2e38a9545e 100644 --- a/service/history/workflow/task_generator_mock.go +++ b/service/history/workflow/task_generator_mock.go @@ -14,6 +14,7 @@ import ( time "time" history "go.temporal.io/api/history/v1" + enums "go.temporal.io/server/api/enums/v1" persistence "go.temporal.io/server/api/persistence/v1" hsm "go.temporal.io/server/service/history/hsm" interfaces "go.temporal.io/server/service/history/interfaces" @@ -189,6 +190,20 @@ func (mr *MockTaskGeneratorMockRecorder) GenerateMigrationTasks(targetClusters a return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenerateMigrationTasks", reflect.TypeOf((*MockTaskGenerator)(nil).GenerateMigrationTasks), targetClusters) } +// GenerateActivityCommandTasks mocks base method. +func (m *MockTaskGenerator) GenerateActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, notificationType enums.ActivityCommandType) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenerateActivityCommandTasks", scheduledEventIDs, controlQueue, notificationType) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenerateActivityCommandTasks indicates an expected call of GenerateActivityCommandTasks. +func (mr *MockTaskGeneratorMockRecorder) GenerateActivityCommandTasks(scheduledEventIDs, controlQueue, notificationType any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenerateActivityCommandTasks", reflect.TypeOf((*MockTaskGenerator)(nil).GenerateActivityCommandTasks), scheduledEventIDs, controlQueue, notificationType) +} + // GenerateRecordWorkflowStartedTasks mocks base method. func (m *MockTaskGenerator) GenerateRecordWorkflowStartedTasks(startEvent *history.HistoryEvent) error { m.ctrl.T.Helper() diff --git a/service/history/workflow/task_generator_test.go b/service/history/workflow/task_generator_test.go index 385762cdec..545d2e6b38 100644 --- a/service/history/workflow/task_generator_test.go +++ b/service/history/workflow/task_generator_test.go @@ -1066,3 +1066,80 @@ func TestTaskGeneratorImpl_GenerateDeleteHistoryEventTask_ActivityRetention(t *t }) } } + +func TestGenerateActivityCommandTasks(t *testing.T) { + t.Parallel() + + testCases := []struct { + name string + featureEnabled bool + scheduledEventIDs []int64 + controlQueue string + expectTask bool + }{ + { + name: "creates task when enabled with valid inputs", + featureEnabled: true, + scheduledEventIDs: []int64{5, 6, 7}, + controlQueue: "test-control-queue", + expectTask: true, + }, + { + name: "no task when feature disabled", + featureEnabled: false, + scheduledEventIDs: []int64{5, 6, 7}, + controlQueue: "test-control-queue", + expectTask: false, + }, + { + name: "no task when scheduledEventIDs empty", + featureEnabled: true, + scheduledEventIDs: []int64{}, + controlQueue: "test-control-queue", + expectTask: false, + }, + { + name: "no task when controlQueue empty", + featureEnabled: true, + scheduledEventIDs: []int64{5, 6, 7}, + controlQueue: "", + expectTask: false, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + ctrl := gomock.NewController(t) + + mutableState := historyi.NewMockMutableState(ctrl) + mutableState.EXPECT().GetWorkflowKey().Return(definition.NewWorkflowKey( + tests.NamespaceID.String(), tests.WorkflowID, tests.RunID, + )).AnyTimes() + + var capturedTasks []tasks.Task + if tc.expectTask { + mutableState.EXPECT().AddTasks(gomock.Any()).Do(func(ts ...tasks.Task) { + capturedTasks = append(capturedTasks, ts...) + }).Times(1) + } + + cfg := &configs.Config{ + EnableActivityCancellationNexusTask: func() bool { return tc.featureEnabled }, + } + + taskGenerator := NewTaskGenerator(nil, mutableState, cfg, nil, log.NewTestLogger()) + err := taskGenerator.GenerateActivityCommandTasks(tc.scheduledEventIDs, tc.controlQueue, enumsspb.ACTIVITY_COMMAND_TYPE_CANCEL) + require.NoError(t, err) + + if tc.expectTask { + require.Len(t, capturedTasks, 1) + notifyTask, ok := capturedTasks[0].(*tasks.ActivityCommandTask) + require.True(t, ok) + assert.Equal(t, tc.scheduledEventIDs, notifyTask.ScheduledEventIDs) + assert.Equal(t, tc.controlQueue, notifyTask.Destination) + assert.Equal(t, tests.NamespaceID.String(), notifyTask.NamespaceID) + assert.Equal(t, enumsspb.ACTIVITY_COMMAND_TYPE_CANCEL, notifyTask.CommandType) + } + }) + } +} From 7f5e0fca5a4ac9433d43a74218a0a5b74189e22d Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Tue, 17 Feb 2026 21:51:29 -0800 Subject: [PATCH 12/14] Regenerate mocks with go-generate for correct ordering and parameter names --- .../history/interfaces/mutable_state_mock.go | 28 +++++++++---------- .../history/workflow/task_generator_mock.go | 28 +++++++++---------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/service/history/interfaces/mutable_state_mock.go b/service/history/interfaces/mutable_state_mock.go index c0a0f7f2d5..065f3cec4c 100644 --- a/service/history/interfaces/mutable_state_mock.go +++ b/service/history/interfaces/mutable_state_mock.go @@ -70,6 +70,20 @@ func (m *MockMutableState) EXPECT() *MockMutableStateMockRecorder { return m.recorder } +// AddActivityCommandTasks mocks base method. +func (m *MockMutableState) AddActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, commandType enums0.ActivityCommandType) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AddActivityCommandTasks", scheduledEventIDs, controlQueue, commandType) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddActivityCommandTasks indicates an expected call of AddActivityCommandTasks. +func (mr *MockMutableStateMockRecorder) AddActivityCommandTasks(scheduledEventIDs, controlQueue, commandType any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddActivityCommandTasks", reflect.TypeOf((*MockMutableState)(nil).AddActivityCommandTasks), scheduledEventIDs, controlQueue, commandType) +} + // AddActivityTaskCancelRequestedEvent mocks base method. func (m *MockMutableState) AddActivityTaskCancelRequestedEvent(arg0, arg1 int64, arg2 string) (*history.HistoryEvent, *persistence.ActivityInfo, error) { m.ctrl.T.Helper() @@ -408,20 +422,6 @@ func (mr *MockMutableStateMockRecorder) AddHistorySize(size any) *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddHistorySize", reflect.TypeOf((*MockMutableState)(nil).AddHistorySize), size) } -// AddActivityCommandTasks mocks base method. -func (m *MockMutableState) AddActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, notificationType enums0.ActivityCommandType) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddActivityCommandTasks", scheduledEventIDs, controlQueue, notificationType) - ret0, _ := ret[0].(error) - return ret0 -} - -// AddActivityCommandTasks indicates an expected call of AddActivityCommandTasks. -func (mr *MockMutableStateMockRecorder) AddActivityCommandTasks(scheduledEventIDs, controlQueue, notificationType any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddActivityCommandTasks", reflect.TypeOf((*MockMutableState)(nil).AddActivityCommandTasks), scheduledEventIDs, controlQueue, notificationType) -} - // AddReapplyCandidateEvent mocks base method. func (m *MockMutableState) AddReapplyCandidateEvent(event *history.HistoryEvent) { m.ctrl.T.Helper() diff --git a/service/history/workflow/task_generator_mock.go b/service/history/workflow/task_generator_mock.go index 2e38a9545e..e4bfa61da0 100644 --- a/service/history/workflow/task_generator_mock.go +++ b/service/history/workflow/task_generator_mock.go @@ -46,6 +46,20 @@ func (m *MockTaskGenerator) EXPECT() *MockTaskGeneratorMockRecorder { return m.recorder } +// GenerateActivityCommandTasks mocks base method. +func (m *MockTaskGenerator) GenerateActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, commandType enums.ActivityCommandType) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GenerateActivityCommandTasks", scheduledEventIDs, controlQueue, commandType) + ret0, _ := ret[0].(error) + return ret0 +} + +// GenerateActivityCommandTasks indicates an expected call of GenerateActivityCommandTasks. +func (mr *MockTaskGeneratorMockRecorder) GenerateActivityCommandTasks(scheduledEventIDs, controlQueue, commandType any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenerateActivityCommandTasks", reflect.TypeOf((*MockTaskGenerator)(nil).GenerateActivityCommandTasks), scheduledEventIDs, controlQueue, commandType) +} + // GenerateActivityRetryTasks mocks base method. func (m *MockTaskGenerator) GenerateActivityRetryTasks(activityInfo *persistence.ActivityInfo) error { m.ctrl.T.Helper() @@ -190,20 +204,6 @@ func (mr *MockTaskGeneratorMockRecorder) GenerateMigrationTasks(targetClusters a return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenerateMigrationTasks", reflect.TypeOf((*MockTaskGenerator)(nil).GenerateMigrationTasks), targetClusters) } -// GenerateActivityCommandTasks mocks base method. -func (m *MockTaskGenerator) GenerateActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, notificationType enums.ActivityCommandType) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GenerateActivityCommandTasks", scheduledEventIDs, controlQueue, notificationType) - ret0, _ := ret[0].(error) - return ret0 -} - -// GenerateActivityCommandTasks indicates an expected call of GenerateActivityCommandTasks. -func (mr *MockTaskGeneratorMockRecorder) GenerateActivityCommandTasks(scheduledEventIDs, controlQueue, notificationType any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenerateActivityCommandTasks", reflect.TypeOf((*MockTaskGenerator)(nil).GenerateActivityCommandTasks), scheduledEventIDs, controlQueue, notificationType) -} - // GenerateRecordWorkflowStartedTasks mocks base method. func (m *MockTaskGenerator) GenerateRecordWorkflowStartedTasks(startEvent *history.HistoryEvent) error { m.ctrl.T.Helper() From cd17334871c8b744e067b1bff9017e483ee11d1f Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Wed, 18 Feb 2026 13:41:42 -0800 Subject: [PATCH 13/14] Change ActivityCommandTask to use task_tokens instead of scheduled_event_ids --- api/persistence/v1/executions.pb.go | 21 +++--- .../serialization/task_serializers.go | 6 +- .../serialization/task_serializers_test.go | 2 +- .../api/persistence/v1/executions.proto | 7 +- .../workflow_task_completed_handler.go | 26 ++++++-- .../workflow_task_completed_handler_test.go | 27 ++++---- service/history/interfaces/mutable_state.go | 2 +- .../history/interfaces/mutable_state_mock.go | 8 +-- .../history/tasks/activity_command_task.go | 8 +-- .../history/workflow/mutable_state_impl.go | 4 +- service/history/workflow/task_generator.go | 14 ++-- .../history/workflow/task_generator_mock.go | 8 +-- .../history/workflow/task_generator_test.go | 66 ++++++++++--------- 13 files changed, 113 insertions(+), 86 deletions(-) diff --git a/api/persistence/v1/executions.pb.go b/api/persistence/v1/executions.pb.go index fea1986e34..7a606d6faa 100644 --- a/api/persistence/v1/executions.pb.go +++ b/api/persistence/v1/executions.pb.go @@ -2358,15 +2358,15 @@ func (*OutboundTaskInfo_ChasmTaskInfo) isOutboundTaskInfo_TaskDetails() {} func (*OutboundTaskInfo_ActivityCommandInfo) isOutboundTaskInfo_TaskDetails() {} -// ActivityCommandTaskInfo contains details for activity command operations. +// ActivityCommandTaskInfo contains details for activity command operation. type ActivityCommandTaskInfo struct { state protoimpl.MessageState `protogen:"open.v1"` // Type of command to send. CommandType v1.ActivityCommandType `protobuf:"varint,1,opt,name=command_type,json=commandType,proto3,enum=temporal.server.api.enums.v1.ActivityCommandType" json:"command_type,omitempty"` - // Scheduled event IDs of activities to send command to. - ScheduledEventIds []int64 `protobuf:"varint,2,rep,packed,name=scheduled_event_ids,json=scheduledEventIds,proto3" json:"scheduled_event_ids,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Task tokens of activities. + TaskTokens [][]byte `protobuf:"bytes,2,rep,name=task_tokens,json=taskTokens,proto3" json:"task_tokens,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ActivityCommandTaskInfo) Reset() { @@ -2406,9 +2406,9 @@ func (x *ActivityCommandTaskInfo) GetCommandType() v1.ActivityCommandType { return v1.ActivityCommandType(0) } -func (x *ActivityCommandTaskInfo) GetScheduledEventIds() []int64 { +func (x *ActivityCommandTaskInfo) GetTaskTokens() [][]byte { if x != nil { - return x.ScheduledEventIds + return x.TaskTokens } return nil } @@ -4919,10 +4919,11 @@ const file_temporal_server_api_persistence_v1_executions_proto_rawDesc = "" + "\x0fchasm_task_info\x18\t \x01(\v21.temporal.server.api.persistence.v1.ChasmTaskInfoH\x00R\rchasmTaskInfo\x12q\n" + "\x15activity_command_info\x18\n" + " \x01(\v2;.temporal.server.api.persistence.v1.ActivityCommandTaskInfoH\x00R\x13activityCommandInfoB\x0e\n" + - "\ftask_details\"\x9f\x01\n" + + "\ftask_details\"\x90\x01\n" + "\x17ActivityCommandTaskInfo\x12T\n" + - "\fcommand_type\x18\x01 \x01(\x0e21.temporal.server.api.enums.v1.ActivityCommandTypeR\vcommandType\x12.\n" + - "\x13scheduled_event_ids\x18\x02 \x03(\x03R\x11scheduledEventIds\"3\n" + + "\fcommand_type\x18\x01 \x01(\x0e21.temporal.server.api.enums.v1.ActivityCommandTypeR\vcommandType\x12\x1f\n" + + "\vtask_tokens\x18\x02 \x03(\fR\n" + + "taskTokens\"3\n" + "\x17NexusInvocationTaskInfo\x12\x18\n" + "\aattempt\x18\x01 \x01(\x05R\aattempt\"4\n" + "\x18NexusCancelationTaskInfo\x12\x18\n" + diff --git a/common/persistence/serialization/task_serializers.go b/common/persistence/serialization/task_serializers.go index 2e7b3a19ec..a9397e4bf5 100644 --- a/common/persistence/serialization/task_serializers.go +++ b/common/persistence/serialization/task_serializers.go @@ -1457,8 +1457,8 @@ func serializeOutboundTask( VisibilityTime: timestamppb.New(task.VisibilityTimestamp), TaskDetails: &persistencespb.OutboundTaskInfo_ActivityCommandInfo{ ActivityCommandInfo: &persistencespb.ActivityCommandTaskInfo{ - CommandType: task.CommandType, - ScheduledEventIds: task.ScheduledEventIDs, + CommandType: task.CommandType, + TaskTokens: task.TaskTokens, }, }, } @@ -1515,7 +1515,7 @@ func deserializeOutboundTask( VisibilityTimestamp: info.VisibilityTime.AsTime(), TaskID: info.TaskId, CommandType: activityCommandInfo.GetCommandType(), - ScheduledEventIDs: activityCommandInfo.GetScheduledEventIds(), + TaskTokens: activityCommandInfo.GetTaskTokens(), Destination: info.Destination, }, nil default: diff --git a/common/persistence/serialization/task_serializers_test.go b/common/persistence/serialization/task_serializers_test.go index 3d63527463..9afca6ae73 100644 --- a/common/persistence/serialization/task_serializers_test.go +++ b/common/persistence/serialization/task_serializers_test.go @@ -175,7 +175,7 @@ func (s *taskSerializerSuite) TestOutboundActivityCommandTask() { VisibilityTimestamp: time.Unix(0, rand.Int63()).UTC(), TaskID: rand.Int63(), CommandType: enumsspb.ACTIVITY_COMMAND_TYPE_CANCEL, - ScheduledEventIDs: []int64{rand.Int63(), rand.Int63(), rand.Int63()}, + TaskTokens: [][]byte{[]byte("token1"), []byte("token2"), []byte("token3")}, Destination: "test-control-queue", } diff --git a/proto/internal/temporal/server/api/persistence/v1/executions.proto b/proto/internal/temporal/server/api/persistence/v1/executions.proto index 3a1d68f47d..75e2641f5d 100644 --- a/proto/internal/temporal/server/api/persistence/v1/executions.proto +++ b/proto/internal/temporal/server/api/persistence/v1/executions.proto @@ -489,12 +489,13 @@ message OutboundTaskInfo { } } -// ActivityCommandTaskInfo contains details for activity command operations. +// ActivityCommandTaskInfo contains details for activity command operation. message ActivityCommandTaskInfo { // Type of command to send. temporal.server.api.enums.v1.ActivityCommandType command_type = 1; - // Scheduled event IDs of activities to send command to. - repeated int64 scheduled_event_ids = 2; + + // Task tokens of activities. + repeated bytes task_tokens = 2; } message NexusInvocationTaskInfo { diff --git a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go index 46218b4f44..1e52af2c6d 100644 --- a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go +++ b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go @@ -67,7 +67,7 @@ type ( effects effect.Controller initiatedChildExecutionsInBatch map[string]struct{} // Set of initiated child executions in the workflow task updateRegistry update.Registry - pendingActivityCancelsByControlQueue map[string][]int64 // Batched activity cancels by control queue + pendingActivityCancelsByControlQueue map[string][][]byte // Batched activity cancel task tokens by control queue // validation attrValidator *api.CommandAttrValidator @@ -672,12 +672,28 @@ func (handler *workflowTaskCompletedHandler) handleCommandRequestCancelActivity( handler.activityNotStartedCancelled = true } else if ai.StartedEventId != common.EmptyEventID && ai.WorkerControlTaskQueue != "" { // Activity has started and worker supports Nexus control tasks - collect for batched dispatch. + taskToken, err := handler.tokenSerializer.Serialize(tasktoken.NewActivityTaskToken( + handler.mutableState.GetNamespaceEntry().ID().String(), + handler.mutableState.GetWorkflowKey().WorkflowID, + handler.mutableState.GetWorkflowKey().RunID, + ai.ScheduledEventId, + ai.ActivityId, + ai.ActivityType.GetName(), + ai.Attempt, + nil, // Clock not needed for cancel + ai.Version, + ai.StartVersion, + nil, + )) + if err != nil { + return nil, err + } if handler.pendingActivityCancelsByControlQueue == nil { - handler.pendingActivityCancelsByControlQueue = make(map[string][]int64) + handler.pendingActivityCancelsByControlQueue = make(map[string][][]byte) } handler.pendingActivityCancelsByControlQueue[ai.WorkerControlTaskQueue] = append( handler.pendingActivityCancelsByControlQueue[ai.WorkerControlTaskQueue], - ai.ScheduledEventId, + taskToken, ) } } @@ -687,9 +703,9 @@ func (handler *workflowTaskCompletedHandler) handleCommandRequestCancelActivity( // flushBatchedActivityCommandTasks creates ActivityCommandTasks for all collected activity cancellations, // batched by control queue. func (handler *workflowTaskCompletedHandler) flushBatchedActivityCommandTasks() error { - for controlQueue, scheduledEventIDs := range handler.pendingActivityCancelsByControlQueue { + for controlQueue, taskTokens := range handler.pendingActivityCancelsByControlQueue { if err := handler.mutableState.AddActivityCommandTasks( - scheduledEventIDs, + taskTokens, controlQueue, enumsspb.ACTIVITY_COMMAND_TYPE_CANCEL, ); err != nil { diff --git a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler_test.go b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler_test.go index ec87e5f265..270f6f5863 100644 --- a/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler_test.go +++ b/service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler_test.go @@ -389,20 +389,25 @@ func mustMarshalAny(t *testing.T, pb proto.Message) *anypb.Any { func TestFlushBatchedActivityCommandTasks(t *testing.T) { t.Parallel() + token1 := []byte("token1") + token2 := []byte("token2") + token3 := []byte("token3") + token4 := []byte("token4") + t.Run("batches activities by control queue", func(t *testing.T) { ctrl := gomock.NewController(t) ms := historyi.NewMockMutableState(ctrl) ms.EXPECT().AddActivityCommandTasks( - []int64{5, 6, 7}, + [][]byte{token1, token2, token3}, "control-queue-1", gomock.Any(), ).Return(nil).Times(1) handler := &workflowTaskCompletedHandler{ mutableState: ms, - pendingActivityCancelsByControlQueue: map[string][]int64{ - "control-queue-1": {5, 6, 7}, + pendingActivityCancelsByControlQueue: map[string][][]byte{ + "control-queue-1": {token1, token2, token3}, }, } @@ -415,29 +420,29 @@ func TestFlushBatchedActivityCommandTasks(t *testing.T) { ms := historyi.NewMockMutableState(ctrl) // Capture calls to verify both queues are processed - calls := make(map[string][]int64) + calls := make(map[string][][]byte) ms.EXPECT().AddActivityCommandTasks( gomock.Any(), gomock.Any(), enumsspb.ACTIVITY_COMMAND_TYPE_CANCEL, - ).DoAndReturn(func(ids []int64, queue string, _ enumsspb.ActivityCommandType) error { - calls[queue] = ids + ).DoAndReturn(func(tokens [][]byte, queue string, _ enumsspb.ActivityCommandType) error { + calls[queue] = tokens return nil }).Times(2) handler := &workflowTaskCompletedHandler{ mutableState: ms, - pendingActivityCancelsByControlQueue: map[string][]int64{ - "control-queue-1": {5, 6}, - "control-queue-2": {7, 8}, + pendingActivityCancelsByControlQueue: map[string][][]byte{ + "control-queue-1": {token1, token2}, + "control-queue-2": {token3, token4}, }, } err := handler.flushBatchedActivityCommandTasks() require.NoError(t, err) - require.Equal(t, []int64{5, 6}, calls["control-queue-1"]) - require.Equal(t, []int64{7, 8}, calls["control-queue-2"]) + require.Equal(t, [][]byte{token1, token2}, calls["control-queue-1"]) + require.Equal(t, [][]byte{token3, token4}, calls["control-queue-2"]) }) t.Run("does nothing when no pending cancels", func(t *testing.T) { diff --git a/service/history/interfaces/mutable_state.go b/service/history/interfaces/mutable_state.go index 631d64bc43..3e742c11f6 100644 --- a/service/history/interfaces/mutable_state.go +++ b/service/history/interfaces/mutable_state.go @@ -46,7 +46,7 @@ type ( AddActivityTaskCancelRequestedEvent(int64, int64, string) (*historypb.HistoryEvent, *persistencespb.ActivityInfo, error) AddActivityTaskCanceledEvent(int64, int64, int64, *commonpb.Payloads, string) (*historypb.HistoryEvent, error) - AddActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, commandType enumsspb.ActivityCommandType) error + AddActivityCommandTasks(taskTokens [][]byte, controlQueue string, commandType enumsspb.ActivityCommandType) error AddActivityTaskCompletedEvent(int64, int64, *workflowservice.RespondActivityTaskCompletedRequest) (*historypb.HistoryEvent, error) AddActivityTaskFailedEvent(int64, int64, *failurepb.Failure, enumspb.RetryState, string, *commonpb.WorkerVersionStamp) (*historypb.HistoryEvent, error) AddActivityTaskScheduledEvent(int64, *commandpb.ScheduleActivityTaskCommandAttributes, bool) (*historypb.HistoryEvent, *persistencespb.ActivityInfo, error) diff --git a/service/history/interfaces/mutable_state_mock.go b/service/history/interfaces/mutable_state_mock.go index 065f3cec4c..145487d13b 100644 --- a/service/history/interfaces/mutable_state_mock.go +++ b/service/history/interfaces/mutable_state_mock.go @@ -71,17 +71,17 @@ func (m *MockMutableState) EXPECT() *MockMutableStateMockRecorder { } // AddActivityCommandTasks mocks base method. -func (m *MockMutableState) AddActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, commandType enums0.ActivityCommandType) error { +func (m *MockMutableState) AddActivityCommandTasks(taskTokens [][]byte, controlQueue string, commandType enums0.ActivityCommandType) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddActivityCommandTasks", scheduledEventIDs, controlQueue, commandType) + ret := m.ctrl.Call(m, "AddActivityCommandTasks", taskTokens, controlQueue, commandType) ret0, _ := ret[0].(error) return ret0 } // AddActivityCommandTasks indicates an expected call of AddActivityCommandTasks. -func (mr *MockMutableStateMockRecorder) AddActivityCommandTasks(scheduledEventIDs, controlQueue, commandType any) *gomock.Call { +func (mr *MockMutableStateMockRecorder) AddActivityCommandTasks(taskTokens, controlQueue, commandType any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddActivityCommandTasks", reflect.TypeOf((*MockMutableState)(nil).AddActivityCommandTasks), scheduledEventIDs, controlQueue, commandType) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddActivityCommandTasks", reflect.TypeOf((*MockMutableState)(nil).AddActivityCommandTasks), taskTokens, controlQueue, commandType) } // AddActivityTaskCancelRequestedEvent mocks base method. diff --git a/service/history/tasks/activity_command_task.go b/service/history/tasks/activity_command_task.go index 805c9d6eb0..c4a8243364 100644 --- a/service/history/tasks/activity_command_task.go +++ b/service/history/tasks/activity_command_task.go @@ -20,8 +20,8 @@ type ( // CommandType specifies the type of command. CommandType enumsspb.ActivityCommandType - // ScheduledEventIDs of activities to send command to (batched by worker). - ScheduledEventIDs []int64 + // TaskTokens of activities to send command to (batched by worker). + TaskTokens [][]byte // Destination is the worker control task queue for outbound queue grouping. Destination string } @@ -61,12 +61,12 @@ func (t *ActivityCommandTask) GetDestination() string { } func (t *ActivityCommandTask) String() string { - return fmt.Sprintf("ActivityCommandTask{WorkflowKey: %s, VisibilityTimestamp: %v, TaskID: %v, CommandType: %v, ScheduledEventIDs: %v, Destination: %v}", + return fmt.Sprintf("ActivityCommandTask{WorkflowKey: %s, VisibilityTimestamp: %v, TaskID: %v, CommandType: %v, TaskTokens: %d, Destination: %v}", t.WorkflowKey.String(), t.VisibilityTimestamp, t.TaskID, t.CommandType, - t.ScheduledEventIDs, + len(t.TaskTokens), t.Destination, ) } diff --git a/service/history/workflow/mutable_state_impl.go b/service/history/workflow/mutable_state_impl.go index 29b714685d..aa948f4db5 100644 --- a/service/history/workflow/mutable_state_impl.go +++ b/service/history/workflow/mutable_state_impl.go @@ -4369,8 +4369,8 @@ func (ms *MutableStateImpl) AddActivityTaskCancelRequestedEvent( return actCancelReqEvent, ai, nil } -func (ms *MutableStateImpl) AddActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, commandType enumsspb.ActivityCommandType) error { - return ms.taskGenerator.GenerateActivityCommandTasks(scheduledEventIDs, controlQueue, commandType) +func (ms *MutableStateImpl) AddActivityCommandTasks(taskTokens [][]byte, controlQueue string, commandType enumsspb.ActivityCommandType) error { + return ms.taskGenerator.GenerateActivityCommandTasks(taskTokens, controlQueue, commandType) } func (ms *MutableStateImpl) ApplyActivityTaskCancelRequestedEvent( diff --git a/service/history/workflow/task_generator.go b/service/history/workflow/task_generator.go index 7c8a2db0bc..2f61b17a69 100644 --- a/service/history/workflow/task_generator.go +++ b/service/history/workflow/task_generator.go @@ -63,7 +63,7 @@ type ( activityScheduledEventID int64, ) error GenerateActivityRetryTasks(activityInfo *persistencespb.ActivityInfo) error - GenerateActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, commandType enumsspb.ActivityCommandType) error + GenerateActivityCommandTasks(taskTokens [][]byte, controlQueue string, commandType enumsspb.ActivityCommandType) error GenerateChildWorkflowTasks( childInitiatedEventId int64, ) error @@ -584,20 +584,20 @@ func (r *TaskGeneratorImpl) GenerateActivityRetryTasks(activityInfo *persistence return nil } -func (r *TaskGeneratorImpl) GenerateActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, commandType enumsspb.ActivityCommandType) error { +func (r *TaskGeneratorImpl) GenerateActivityCommandTasks(taskTokens [][]byte, controlQueue string, commandType enumsspb.ActivityCommandType) error { if !r.config.EnableActivityCancellationNexusTask() { return nil } - if len(scheduledEventIDs) == 0 || controlQueue == "" { + if len(taskTokens) == 0 || controlQueue == "" { return nil } r.mutableState.AddTasks(&tasks.ActivityCommandTask{ - WorkflowKey: r.mutableState.GetWorkflowKey(), - CommandType: commandType, - ScheduledEventIDs: scheduledEventIDs, - Destination: controlQueue, + WorkflowKey: r.mutableState.GetWorkflowKey(), + CommandType: commandType, + TaskTokens: taskTokens, + Destination: controlQueue, }) return nil } diff --git a/service/history/workflow/task_generator_mock.go b/service/history/workflow/task_generator_mock.go index e4bfa61da0..a91df24c42 100644 --- a/service/history/workflow/task_generator_mock.go +++ b/service/history/workflow/task_generator_mock.go @@ -47,17 +47,17 @@ func (m *MockTaskGenerator) EXPECT() *MockTaskGeneratorMockRecorder { } // GenerateActivityCommandTasks mocks base method. -func (m *MockTaskGenerator) GenerateActivityCommandTasks(scheduledEventIDs []int64, controlQueue string, commandType enums.ActivityCommandType) error { +func (m *MockTaskGenerator) GenerateActivityCommandTasks(taskTokens [][]byte, controlQueue string, commandType enums.ActivityCommandType) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GenerateActivityCommandTasks", scheduledEventIDs, controlQueue, commandType) + ret := m.ctrl.Call(m, "GenerateActivityCommandTasks", taskTokens, controlQueue, commandType) ret0, _ := ret[0].(error) return ret0 } // GenerateActivityCommandTasks indicates an expected call of GenerateActivityCommandTasks. -func (mr *MockTaskGeneratorMockRecorder) GenerateActivityCommandTasks(scheduledEventIDs, controlQueue, commandType any) *gomock.Call { +func (mr *MockTaskGeneratorMockRecorder) GenerateActivityCommandTasks(taskTokens, controlQueue, commandType any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenerateActivityCommandTasks", reflect.TypeOf((*MockTaskGenerator)(nil).GenerateActivityCommandTasks), scheduledEventIDs, controlQueue, commandType) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GenerateActivityCommandTasks", reflect.TypeOf((*MockTaskGenerator)(nil).GenerateActivityCommandTasks), taskTokens, controlQueue, commandType) } // GenerateActivityRetryTasks mocks base method. diff --git a/service/history/workflow/task_generator_test.go b/service/history/workflow/task_generator_test.go index 545d2e6b38..3f35d2d7b0 100644 --- a/service/history/workflow/task_generator_test.go +++ b/service/history/workflow/task_generator_test.go @@ -1070,40 +1070,44 @@ func TestTaskGeneratorImpl_GenerateDeleteHistoryEventTask_ActivityRetention(t *t func TestGenerateActivityCommandTasks(t *testing.T) { t.Parallel() + token1 := []byte("token1") + token2 := []byte("token2") + token3 := []byte("token3") + testCases := []struct { - name string - featureEnabled bool - scheduledEventIDs []int64 - controlQueue string - expectTask bool + name string + featureEnabled bool + taskTokens [][]byte + controlQueue string + expectTask bool }{ { - name: "creates task when enabled with valid inputs", - featureEnabled: true, - scheduledEventIDs: []int64{5, 6, 7}, - controlQueue: "test-control-queue", - expectTask: true, + name: "creates task when enabled with valid inputs", + featureEnabled: true, + taskTokens: [][]byte{token1, token2, token3}, + controlQueue: "test-control-queue", + expectTask: true, }, { - name: "no task when feature disabled", - featureEnabled: false, - scheduledEventIDs: []int64{5, 6, 7}, - controlQueue: "test-control-queue", - expectTask: false, + name: "no task when feature disabled", + featureEnabled: false, + taskTokens: [][]byte{token1, token2, token3}, + controlQueue: "test-control-queue", + expectTask: false, }, { - name: "no task when scheduledEventIDs empty", - featureEnabled: true, - scheduledEventIDs: []int64{}, - controlQueue: "test-control-queue", - expectTask: false, + name: "no task when taskTokens empty", + featureEnabled: true, + taskTokens: [][]byte{}, + controlQueue: "test-control-queue", + expectTask: false, }, { - name: "no task when controlQueue empty", - featureEnabled: true, - scheduledEventIDs: []int64{5, 6, 7}, - controlQueue: "", - expectTask: false, + name: "no task when controlQueue empty", + featureEnabled: true, + taskTokens: [][]byte{token1, token2, token3}, + controlQueue: "", + expectTask: false, }, } @@ -1128,17 +1132,17 @@ func TestGenerateActivityCommandTasks(t *testing.T) { } taskGenerator := NewTaskGenerator(nil, mutableState, cfg, nil, log.NewTestLogger()) - err := taskGenerator.GenerateActivityCommandTasks(tc.scheduledEventIDs, tc.controlQueue, enumsspb.ACTIVITY_COMMAND_TYPE_CANCEL) + err := taskGenerator.GenerateActivityCommandTasks(tc.taskTokens, tc.controlQueue, enumsspb.ACTIVITY_COMMAND_TYPE_CANCEL) require.NoError(t, err) if tc.expectTask { require.Len(t, capturedTasks, 1) - notifyTask, ok := capturedTasks[0].(*tasks.ActivityCommandTask) + commandTask, ok := capturedTasks[0].(*tasks.ActivityCommandTask) require.True(t, ok) - assert.Equal(t, tc.scheduledEventIDs, notifyTask.ScheduledEventIDs) - assert.Equal(t, tc.controlQueue, notifyTask.Destination) - assert.Equal(t, tests.NamespaceID.String(), notifyTask.NamespaceID) - assert.Equal(t, enumsspb.ACTIVITY_COMMAND_TYPE_CANCEL, notifyTask.CommandType) + assert.Equal(t, tc.taskTokens, commandTask.TaskTokens) + assert.Equal(t, tc.controlQueue, commandTask.Destination) + assert.Equal(t, tests.NamespaceID.String(), commandTask.NamespaceID) + assert.Equal(t, enumsspb.ACTIVITY_COMMAND_TYPE_CANCEL, commandTask.CommandType) } }) } From 6a1a66bc5495caa580f7f2953a5f437612344cc8 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Tue, 24 Feb 2026 19:40:06 -0800 Subject: [PATCH 14/14] Change ActivityCommandTaskInfo to WorkerCommandsTask Renames and restructures the persistence proto to use WorkerCommandsTask with repeated WorkerCommand messages. Each command uses oneof for extensibility (currently supports CancelActivity). Updates serializers to convert between the Go task struct and new proto format. Co-authored-by: Cursor --- .../v1/executions.go-helpers.pb.go | 20 +- api/persistence/v1/executions.pb.go | 606 +++++++++++------- .../serialization/task_serializers.go | 36 +- .../api/persistence/v1/executions.proto | 23 +- 4 files changed, 412 insertions(+), 273 deletions(-) diff --git a/api/persistence/v1/executions.go-helpers.pb.go b/api/persistence/v1/executions.go-helpers.pb.go index 965f8080bb..c4d89e58d4 100644 --- a/api/persistence/v1/executions.go-helpers.pb.go +++ b/api/persistence/v1/executions.go-helpers.pb.go @@ -412,35 +412,35 @@ func (this *OutboundTaskInfo) Equal(that interface{}) bool { return proto.Equal(this, that1) } -// Marshal an object of type ActivityCommandTaskInfo to the protobuf v3 wire format -func (val *ActivityCommandTaskInfo) Marshal() ([]byte, error) { +// Marshal an object of type WorkerCommandsTask to the protobuf v3 wire format +func (val *WorkerCommandsTask) Marshal() ([]byte, error) { return proto.Marshal(val) } -// Unmarshal an object of type ActivityCommandTaskInfo from the protobuf v3 wire format -func (val *ActivityCommandTaskInfo) Unmarshal(buf []byte) error { +// Unmarshal an object of type WorkerCommandsTask from the protobuf v3 wire format +func (val *WorkerCommandsTask) Unmarshal(buf []byte) error { return proto.Unmarshal(buf, val) } // Size returns the size of the object, in bytes, once serialized -func (val *ActivityCommandTaskInfo) Size() int { +func (val *WorkerCommandsTask) Size() int { return proto.Size(val) } -// Equal returns whether two ActivityCommandTaskInfo values are equivalent by recursively +// Equal returns whether two WorkerCommandsTask values are equivalent by recursively // comparing the message's fields. // For more information see the documentation for // https://pkg.go.dev/google.golang.org/protobuf/proto#Equal -func (this *ActivityCommandTaskInfo) Equal(that interface{}) bool { +func (this *WorkerCommandsTask) Equal(that interface{}) bool { if that == nil { return this == nil } - var that1 *ActivityCommandTaskInfo + var that1 *WorkerCommandsTask switch t := that.(type) { - case *ActivityCommandTaskInfo: + case *WorkerCommandsTask: that1 = t - case ActivityCommandTaskInfo: + case WorkerCommandsTask: that1 = &t default: return false diff --git a/api/persistence/v1/executions.pb.go b/api/persistence/v1/executions.pb.go index 7a606d6faa..be01d9a0ac 100644 --- a/api/persistence/v1/executions.pb.go +++ b/api/persistence/v1/executions.pb.go @@ -2214,7 +2214,7 @@ type OutboundTaskInfo struct { // // *OutboundTaskInfo_StateMachineInfo // *OutboundTaskInfo_ChasmTaskInfo - // *OutboundTaskInfo_ActivityCommandInfo + // *OutboundTaskInfo_WorkerCommandsTask TaskDetails isOutboundTaskInfo_TaskDetails `protobuf_oneof:"task_details"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -2324,10 +2324,10 @@ func (x *OutboundTaskInfo) GetChasmTaskInfo() *ChasmTaskInfo { return nil } -func (x *OutboundTaskInfo) GetActivityCommandInfo() *ActivityCommandTaskInfo { +func (x *OutboundTaskInfo) GetWorkerCommandsTask() *WorkerCommandsTask { if x != nil { - if x, ok := x.TaskDetails.(*OutboundTaskInfo_ActivityCommandInfo); ok { - return x.ActivityCommandInfo + if x, ok := x.TaskDetails.(*OutboundTaskInfo_WorkerCommandsTask); ok { + return x.WorkerCommandsTask } } return nil @@ -2347,42 +2347,39 @@ type OutboundTaskInfo_ChasmTaskInfo struct { ChasmTaskInfo *ChasmTaskInfo `protobuf:"bytes,9,opt,name=chasm_task_info,json=chasmTaskInfo,proto3,oneof"` } -type OutboundTaskInfo_ActivityCommandInfo struct { - // If the task is an activity command task. - ActivityCommandInfo *ActivityCommandTaskInfo `protobuf:"bytes,10,opt,name=activity_command_info,json=activityCommandInfo,proto3,oneof"` +type OutboundTaskInfo_WorkerCommandsTask struct { + // If the task is a worker commands task. + WorkerCommandsTask *WorkerCommandsTask `protobuf:"bytes,10,opt,name=worker_commands_task,json=workerCommandsTask,proto3,oneof"` } func (*OutboundTaskInfo_StateMachineInfo) isOutboundTaskInfo_TaskDetails() {} func (*OutboundTaskInfo_ChasmTaskInfo) isOutboundTaskInfo_TaskDetails() {} -func (*OutboundTaskInfo_ActivityCommandInfo) isOutboundTaskInfo_TaskDetails() {} +func (*OutboundTaskInfo_WorkerCommandsTask) isOutboundTaskInfo_TaskDetails() {} -// ActivityCommandTaskInfo contains details for activity command operation. -type ActivityCommandTaskInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Type of command to send. - CommandType v1.ActivityCommandType `protobuf:"varint,1,opt,name=command_type,json=commandType,proto3,enum=temporal.server.api.enums.v1.ActivityCommandType" json:"command_type,omitempty"` - // Task tokens of activities. - TaskTokens [][]byte `protobuf:"bytes,2,rep,name=task_tokens,json=taskTokens,proto3" json:"task_tokens,omitempty"` +// WorkerCommandsTask contains worker commands to dispatch via Nexus. +type WorkerCommandsTask struct { + state protoimpl.MessageState `protogen:"open.v1"` + Commands []*WorkerCommandsTask_WorkerCommand `protobuf:"bytes,1,rep,name=commands,proto3" json:"commands,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *ActivityCommandTaskInfo) Reset() { - *x = ActivityCommandTaskInfo{} +func (x *WorkerCommandsTask) Reset() { + *x = WorkerCommandsTask{} mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *ActivityCommandTaskInfo) String() string { +func (x *WorkerCommandsTask) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActivityCommandTaskInfo) ProtoMessage() {} +func (*WorkerCommandsTask) ProtoMessage() {} -func (x *ActivityCommandTaskInfo) ProtoReflect() protoreflect.Message { +func (x *WorkerCommandsTask) ProtoReflect() protoreflect.Message { mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2394,21 +2391,14 @@ func (x *ActivityCommandTaskInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActivityCommandTaskInfo.ProtoReflect.Descriptor instead. -func (*ActivityCommandTaskInfo) Descriptor() ([]byte, []int) { +// Deprecated: Use WorkerCommandsTask.ProtoReflect.Descriptor instead. +func (*WorkerCommandsTask) Descriptor() ([]byte, []int) { return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{11} } -func (x *ActivityCommandTaskInfo) GetCommandType() v1.ActivityCommandType { +func (x *WorkerCommandsTask) GetCommands() []*WorkerCommandsTask_WorkerCommand { if x != nil { - return x.CommandType - } - return v1.ActivityCommandType(0) -} - -func (x *ActivityCommandTaskInfo) GetTaskTokens() [][]byte { - if x != nil { - return x.TaskTokens + return x.Commands } return nil } @@ -4194,6 +4184,117 @@ func (x *TransferTaskInfo_CloseExecutionTaskDetails) GetCanSkipVisibilityArchiva return false } +type WorkerCommandsTask_WorkerCommand struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Type: + // + // *WorkerCommandsTask_WorkerCommand_CancelActivity + Type isWorkerCommandsTask_WorkerCommand_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WorkerCommandsTask_WorkerCommand) Reset() { + *x = WorkerCommandsTask_WorkerCommand{} + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WorkerCommandsTask_WorkerCommand) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkerCommandsTask_WorkerCommand) ProtoMessage() {} + +func (x *WorkerCommandsTask_WorkerCommand) ProtoReflect() protoreflect.Message { + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[36] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WorkerCommandsTask_WorkerCommand.ProtoReflect.Descriptor instead. +func (*WorkerCommandsTask_WorkerCommand) Descriptor() ([]byte, []int) { + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{11, 0} +} + +func (x *WorkerCommandsTask_WorkerCommand) GetType() isWorkerCommandsTask_WorkerCommand_Type { + if x != nil { + return x.Type + } + return nil +} + +func (x *WorkerCommandsTask_WorkerCommand) GetCancelActivity() *WorkerCommandsTask_CancelActivity { + if x != nil { + if x, ok := x.Type.(*WorkerCommandsTask_WorkerCommand_CancelActivity); ok { + return x.CancelActivity + } + } + return nil +} + +type isWorkerCommandsTask_WorkerCommand_Type interface { + isWorkerCommandsTask_WorkerCommand_Type() +} + +type WorkerCommandsTask_WorkerCommand_CancelActivity struct { + CancelActivity *WorkerCommandsTask_CancelActivity `protobuf:"bytes,1,opt,name=cancel_activity,json=cancelActivity,proto3,oneof"` +} + +func (*WorkerCommandsTask_WorkerCommand_CancelActivity) isWorkerCommandsTask_WorkerCommand_Type() {} + +type WorkerCommandsTask_CancelActivity struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Task token identifying the activity to cancel. + TaskToken []byte `protobuf:"bytes,1,opt,name=task_token,json=taskToken,proto3" json:"task_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WorkerCommandsTask_CancelActivity) Reset() { + *x = WorkerCommandsTask_CancelActivity{} + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WorkerCommandsTask_CancelActivity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkerCommandsTask_CancelActivity) ProtoMessage() {} + +func (x *WorkerCommandsTask_CancelActivity) ProtoReflect() protoreflect.Message { + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[37] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WorkerCommandsTask_CancelActivity.ProtoReflect.Descriptor instead. +func (*WorkerCommandsTask_CancelActivity) Descriptor() ([]byte, []int) { + return file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP(), []int{11, 1} +} + +func (x *WorkerCommandsTask_CancelActivity) GetTaskToken() []byte { + if x != nil { + return x.TaskToken + } + return nil +} + // Deprecated. Clean up with versioning-2. [cleanup-old-wv] type ActivityInfo_UseWorkflowBuildIdInfo struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -4208,7 +4309,7 @@ type ActivityInfo_UseWorkflowBuildIdInfo struct { func (x *ActivityInfo_UseWorkflowBuildIdInfo) Reset() { *x = ActivityInfo_UseWorkflowBuildIdInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[36] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4220,7 +4321,7 @@ func (x *ActivityInfo_UseWorkflowBuildIdInfo) String() string { func (*ActivityInfo_UseWorkflowBuildIdInfo) ProtoMessage() {} func (x *ActivityInfo_UseWorkflowBuildIdInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[36] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4265,7 +4366,7 @@ type ActivityInfo_PauseInfo struct { func (x *ActivityInfo_PauseInfo) Reset() { *x = ActivityInfo_PauseInfo{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[37] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4277,7 +4378,7 @@ func (x *ActivityInfo_PauseInfo) String() string { func (*ActivityInfo_PauseInfo) ProtoMessage() {} func (x *ActivityInfo_PauseInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[37] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4355,7 +4456,7 @@ type ActivityInfo_PauseInfo_Manual struct { func (x *ActivityInfo_PauseInfo_Manual) Reset() { *x = ActivityInfo_PauseInfo_Manual{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[38] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4367,7 +4468,7 @@ func (x *ActivityInfo_PauseInfo_Manual) String() string { func (*ActivityInfo_PauseInfo_Manual) ProtoMessage() {} func (x *ActivityInfo_PauseInfo_Manual) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[38] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4412,7 +4513,7 @@ type Callback_Nexus struct { func (x *Callback_Nexus) Reset() { *x = Callback_Nexus{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[39] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4424,7 +4525,7 @@ func (x *Callback_Nexus) String() string { func (*Callback_Nexus) ProtoMessage() {} func (x *Callback_Nexus) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[39] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4474,7 +4575,7 @@ type Callback_HSM struct { func (x *Callback_HSM) Reset() { *x = Callback_HSM{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[40] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4486,7 +4587,7 @@ func (x *Callback_HSM) String() string { func (*Callback_HSM) ProtoMessage() {} func (x *Callback_HSM) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[40] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4546,7 +4647,7 @@ type CallbackInfo_WorkflowClosed struct { func (x *CallbackInfo_WorkflowClosed) Reset() { *x = CallbackInfo_WorkflowClosed{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[42] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4558,7 +4659,7 @@ func (x *CallbackInfo_WorkflowClosed) String() string { func (*CallbackInfo_WorkflowClosed) ProtoMessage() {} func (x *CallbackInfo_WorkflowClosed) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[42] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4586,7 +4687,7 @@ type CallbackInfo_Trigger struct { func (x *CallbackInfo_Trigger) Reset() { *x = CallbackInfo_Trigger{} - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[43] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4598,7 +4699,7 @@ func (x *CallbackInfo_Trigger) String() string { func (*CallbackInfo_Trigger) ProtoMessage() {} func (x *CallbackInfo_Trigger) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[43] + mi := &file_temporal_server_api_persistence_v1_executions_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4905,7 +5006,7 @@ const file_temporal_server_api_persistence_v1_executions_proto_rawDesc = "" + "\x06run_id\x18\x04 \x01(\tR\x05runId\x12C\n" + "\ttask_type\x18\x05 \x01(\x0e2&.temporal.server.api.enums.v1.TaskTypeR\btaskType\x12\x18\n" + "\aversion\x18\x06 \x01(\x03R\aversion\x12C\n" + - "\x0fvisibility_time\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x0evisibilityTime\"\xfc\x04\n" + + "\x0fvisibility_time\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x0evisibilityTime\"\xf5\x04\n" + "\x10OutboundTaskInfo\x12!\n" + "\fnamespace_id\x18\x01 \x01(\tR\vnamespaceId\x12\x1f\n" + "\vworkflow_id\x18\x02 \x01(\tR\n" + @@ -4916,14 +5017,18 @@ const file_temporal_server_api_persistence_v1_executions_proto_rawDesc = "" + "\x0fvisibility_time\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x0evisibilityTime\x12 \n" + "\vdestination\x18\a \x01(\tR\vdestination\x12h\n" + "\x12state_machine_info\x18\b \x01(\v28.temporal.server.api.persistence.v1.StateMachineTaskInfoH\x00R\x10stateMachineInfo\x12[\n" + - "\x0fchasm_task_info\x18\t \x01(\v21.temporal.server.api.persistence.v1.ChasmTaskInfoH\x00R\rchasmTaskInfo\x12q\n" + - "\x15activity_command_info\x18\n" + - " \x01(\v2;.temporal.server.api.persistence.v1.ActivityCommandTaskInfoH\x00R\x13activityCommandInfoB\x0e\n" + - "\ftask_details\"\x90\x01\n" + - "\x17ActivityCommandTaskInfo\x12T\n" + - "\fcommand_type\x18\x01 \x01(\x0e21.temporal.server.api.enums.v1.ActivityCommandTypeR\vcommandType\x12\x1f\n" + - "\vtask_tokens\x18\x02 \x03(\fR\n" + - "taskTokens\"3\n" + + "\x0fchasm_task_info\x18\t \x01(\v21.temporal.server.api.persistence.v1.ChasmTaskInfoH\x00R\rchasmTaskInfo\x12j\n" + + "\x14worker_commands_task\x18\n" + + " \x01(\v26.temporal.server.api.persistence.v1.WorkerCommandsTaskH\x00R\x12workerCommandsTaskB\x0e\n" + + "\ftask_details\"\xb3\x02\n" + + "\x12WorkerCommandsTask\x12`\n" + + "\bcommands\x18\x01 \x03(\v2D.temporal.server.api.persistence.v1.WorkerCommandsTask.WorkerCommandR\bcommands\x1a\x89\x01\n" + + "\rWorkerCommand\x12p\n" + + "\x0fcancel_activity\x18\x01 \x01(\v2E.temporal.server.api.persistence.v1.WorkerCommandsTask.CancelActivityH\x00R\x0ecancelActivityB\x06\n" + + "\x04type\x1a/\n" + + "\x0eCancelActivity\x12\x1d\n" + + "\n" + + "task_token\x18\x01 \x01(\fR\ttaskToken\"3\n" + "\x17NexusInvocationTaskInfo\x12\x18\n" + "\aattempt\x18\x01 \x01(\x05R\aattempt\"4\n" + "\x18NexusCancelationTaskInfo\x12\x18\n" + @@ -5129,7 +5234,7 @@ func file_temporal_server_api_persistence_v1_executions_proto_rawDescGZIP() []by return file_temporal_server_api_persistence_v1_executions_proto_rawDescData } -var file_temporal_server_api_persistence_v1_executions_proto_msgTypes = make([]protoimpl.MessageInfo, 44) +var file_temporal_server_api_persistence_v1_executions_proto_msgTypes = make([]protoimpl.MessageInfo, 46) var file_temporal_server_api_persistence_v1_executions_proto_goTypes = []any{ (*ShardInfo)(nil), // 0: temporal.server.api.persistence.v1.ShardInfo (*WorkflowExecutionInfo)(nil), // 1: temporal.server.api.persistence.v1.WorkflowExecutionInfo @@ -5142,7 +5247,7 @@ var file_temporal_server_api_persistence_v1_executions_proto_goTypes = []any{ (*TimerTaskInfo)(nil), // 8: temporal.server.api.persistence.v1.TimerTaskInfo (*ArchivalTaskInfo)(nil), // 9: temporal.server.api.persistence.v1.ArchivalTaskInfo (*OutboundTaskInfo)(nil), // 10: temporal.server.api.persistence.v1.OutboundTaskInfo - (*ActivityCommandTaskInfo)(nil), // 11: temporal.server.api.persistence.v1.ActivityCommandTaskInfo + (*WorkerCommandsTask)(nil), // 11: temporal.server.api.persistence.v1.WorkerCommandsTask (*NexusInvocationTaskInfo)(nil), // 12: temporal.server.api.persistence.v1.NexusInvocationTaskInfo (*NexusCancelationTaskInfo)(nil), // 13: temporal.server.api.persistence.v1.NexusCancelationTaskInfo (*ActivityInfo)(nil), // 14: temporal.server.api.persistence.v1.ActivityInfo @@ -5167,211 +5272,213 @@ var file_temporal_server_api_persistence_v1_executions_proto_goTypes = []any{ nil, // 33: temporal.server.api.persistence.v1.WorkflowExecutionInfo.ChildrenInitializedPostResetPointEntry nil, // 34: temporal.server.api.persistence.v1.WorkflowExecutionState.RequestIdsEntry (*TransferTaskInfo_CloseExecutionTaskDetails)(nil), // 35: temporal.server.api.persistence.v1.TransferTaskInfo.CloseExecutionTaskDetails - (*ActivityInfo_UseWorkflowBuildIdInfo)(nil), // 36: temporal.server.api.persistence.v1.ActivityInfo.UseWorkflowBuildIdInfo - (*ActivityInfo_PauseInfo)(nil), // 37: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo - (*ActivityInfo_PauseInfo_Manual)(nil), // 38: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.Manual - (*Callback_Nexus)(nil), // 39: temporal.server.api.persistence.v1.Callback.Nexus - (*Callback_HSM)(nil), // 40: temporal.server.api.persistence.v1.Callback.HSM - nil, // 41: temporal.server.api.persistence.v1.Callback.Nexus.HeaderEntry - (*CallbackInfo_WorkflowClosed)(nil), // 42: temporal.server.api.persistence.v1.CallbackInfo.WorkflowClosed - (*CallbackInfo_Trigger)(nil), // 43: temporal.server.api.persistence.v1.CallbackInfo.Trigger - (*timestamppb.Timestamp)(nil), // 44: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 45: google.protobuf.Duration - (v1.WorkflowTaskType)(0), // 46: temporal.server.api.enums.v1.WorkflowTaskType - (v11.SuggestContinueAsNewReason)(0), // 47: temporal.api.enums.v1.SuggestContinueAsNewReason - (*v12.ResetPoints)(nil), // 48: temporal.api.workflow.v1.ResetPoints - (*v14.VersionHistories)(nil), // 49: temporal.server.api.history.v1.VersionHistories - (*v15.VectorClock)(nil), // 50: temporal.server.api.clock.v1.VectorClock - (*v16.BaseExecutionInfo)(nil), // 51: temporal.server.api.workflow.v1.BaseExecutionInfo - (*v13.WorkerVersionStamp)(nil), // 52: temporal.api.common.v1.WorkerVersionStamp - (*VersionedTransition)(nil), // 53: temporal.server.api.persistence.v1.VersionedTransition - (*StateMachineTimerGroup)(nil), // 54: temporal.server.api.persistence.v1.StateMachineTimerGroup - (*StateMachineTombstoneBatch)(nil), // 55: temporal.server.api.persistence.v1.StateMachineTombstoneBatch - (*v12.WorkflowExecutionVersioningInfo)(nil), // 56: temporal.api.workflow.v1.WorkflowExecutionVersioningInfo - (*v13.Priority)(nil), // 57: temporal.api.common.v1.Priority - (v11.WorkflowTaskFailedCause)(0), // 58: temporal.api.enums.v1.WorkflowTaskFailedCause - (v11.TimeoutType)(0), // 59: temporal.api.enums.v1.TimeoutType - (v1.WorkflowExecutionState)(0), // 60: temporal.server.api.enums.v1.WorkflowExecutionState - (v11.WorkflowExecutionStatus)(0), // 61: temporal.api.enums.v1.WorkflowExecutionStatus - (v11.EventType)(0), // 62: temporal.api.enums.v1.EventType - (v1.TaskType)(0), // 63: temporal.server.api.enums.v1.TaskType - (*ChasmTaskInfo)(nil), // 64: temporal.server.api.persistence.v1.ChasmTaskInfo - (v1.TaskPriority)(0), // 65: temporal.server.api.enums.v1.TaskPriority - (*v14.VersionHistoryItem)(nil), // 66: temporal.server.api.history.v1.VersionHistoryItem - (v1.WorkflowBackoffType)(0), // 67: temporal.server.api.enums.v1.WorkflowBackoffType - (*StateMachineTaskInfo)(nil), // 68: temporal.server.api.persistence.v1.StateMachineTaskInfo - (v1.ActivityCommandType)(0), // 69: temporal.server.api.enums.v1.ActivityCommandType - (*v17.Failure)(nil), // 70: temporal.api.failure.v1.Failure - (*v13.Payloads)(nil), // 71: temporal.api.common.v1.Payloads - (*v13.ActivityType)(nil), // 72: temporal.api.common.v1.ActivityType - (*v18.Deployment)(nil), // 73: temporal.api.deployment.v1.Deployment - (*v18.WorkerDeploymentVersion)(nil), // 74: temporal.api.deployment.v1.WorkerDeploymentVersion - (v11.ParentClosePolicy)(0), // 75: temporal.api.enums.v1.ParentClosePolicy - (v1.ChecksumFlavor)(0), // 76: temporal.server.api.enums.v1.ChecksumFlavor - (*v13.Link)(nil), // 77: temporal.api.common.v1.Link - (*v19.HistoryEvent)(nil), // 78: temporal.api.history.v1.HistoryEvent - (v1.CallbackState)(0), // 79: temporal.server.api.enums.v1.CallbackState - (v1.NexusOperationState)(0), // 80: temporal.server.api.enums.v1.NexusOperationState - (v11.NexusOperationCancellationState)(0), // 81: temporal.api.enums.v1.NexusOperationCancellationState - (*QueueState)(nil), // 82: temporal.server.api.persistence.v1.QueueState - (*v13.Payload)(nil), // 83: temporal.api.common.v1.Payload - (*UpdateInfo)(nil), // 84: temporal.server.api.persistence.v1.UpdateInfo - (*StateMachineMap)(nil), // 85: temporal.server.api.persistence.v1.StateMachineMap - (*StateMachineRef)(nil), // 86: temporal.server.api.persistence.v1.StateMachineRef + (*WorkerCommandsTask_WorkerCommand)(nil), // 36: temporal.server.api.persistence.v1.WorkerCommandsTask.WorkerCommand + (*WorkerCommandsTask_CancelActivity)(nil), // 37: temporal.server.api.persistence.v1.WorkerCommandsTask.CancelActivity + (*ActivityInfo_UseWorkflowBuildIdInfo)(nil), // 38: temporal.server.api.persistence.v1.ActivityInfo.UseWorkflowBuildIdInfo + (*ActivityInfo_PauseInfo)(nil), // 39: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo + (*ActivityInfo_PauseInfo_Manual)(nil), // 40: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.Manual + (*Callback_Nexus)(nil), // 41: temporal.server.api.persistence.v1.Callback.Nexus + (*Callback_HSM)(nil), // 42: temporal.server.api.persistence.v1.Callback.HSM + nil, // 43: temporal.server.api.persistence.v1.Callback.Nexus.HeaderEntry + (*CallbackInfo_WorkflowClosed)(nil), // 44: temporal.server.api.persistence.v1.CallbackInfo.WorkflowClosed + (*CallbackInfo_Trigger)(nil), // 45: temporal.server.api.persistence.v1.CallbackInfo.Trigger + (*timestamppb.Timestamp)(nil), // 46: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 47: google.protobuf.Duration + (v1.WorkflowTaskType)(0), // 48: temporal.server.api.enums.v1.WorkflowTaskType + (v11.SuggestContinueAsNewReason)(0), // 49: temporal.api.enums.v1.SuggestContinueAsNewReason + (*v12.ResetPoints)(nil), // 50: temporal.api.workflow.v1.ResetPoints + (*v14.VersionHistories)(nil), // 51: temporal.server.api.history.v1.VersionHistories + (*v15.VectorClock)(nil), // 52: temporal.server.api.clock.v1.VectorClock + (*v16.BaseExecutionInfo)(nil), // 53: temporal.server.api.workflow.v1.BaseExecutionInfo + (*v13.WorkerVersionStamp)(nil), // 54: temporal.api.common.v1.WorkerVersionStamp + (*VersionedTransition)(nil), // 55: temporal.server.api.persistence.v1.VersionedTransition + (*StateMachineTimerGroup)(nil), // 56: temporal.server.api.persistence.v1.StateMachineTimerGroup + (*StateMachineTombstoneBatch)(nil), // 57: temporal.server.api.persistence.v1.StateMachineTombstoneBatch + (*v12.WorkflowExecutionVersioningInfo)(nil), // 58: temporal.api.workflow.v1.WorkflowExecutionVersioningInfo + (*v13.Priority)(nil), // 59: temporal.api.common.v1.Priority + (v11.WorkflowTaskFailedCause)(0), // 60: temporal.api.enums.v1.WorkflowTaskFailedCause + (v11.TimeoutType)(0), // 61: temporal.api.enums.v1.TimeoutType + (v1.WorkflowExecutionState)(0), // 62: temporal.server.api.enums.v1.WorkflowExecutionState + (v11.WorkflowExecutionStatus)(0), // 63: temporal.api.enums.v1.WorkflowExecutionStatus + (v11.EventType)(0), // 64: temporal.api.enums.v1.EventType + (v1.TaskType)(0), // 65: temporal.server.api.enums.v1.TaskType + (*ChasmTaskInfo)(nil), // 66: temporal.server.api.persistence.v1.ChasmTaskInfo + (v1.TaskPriority)(0), // 67: temporal.server.api.enums.v1.TaskPriority + (*v14.VersionHistoryItem)(nil), // 68: temporal.server.api.history.v1.VersionHistoryItem + (v1.WorkflowBackoffType)(0), // 69: temporal.server.api.enums.v1.WorkflowBackoffType + (*StateMachineTaskInfo)(nil), // 70: temporal.server.api.persistence.v1.StateMachineTaskInfo + (*v17.Failure)(nil), // 71: temporal.api.failure.v1.Failure + (*v13.Payloads)(nil), // 72: temporal.api.common.v1.Payloads + (*v13.ActivityType)(nil), // 73: temporal.api.common.v1.ActivityType + (*v18.Deployment)(nil), // 74: temporal.api.deployment.v1.Deployment + (*v18.WorkerDeploymentVersion)(nil), // 75: temporal.api.deployment.v1.WorkerDeploymentVersion + (v11.ParentClosePolicy)(0), // 76: temporal.api.enums.v1.ParentClosePolicy + (v1.ChecksumFlavor)(0), // 77: temporal.server.api.enums.v1.ChecksumFlavor + (*v13.Link)(nil), // 78: temporal.api.common.v1.Link + (*v19.HistoryEvent)(nil), // 79: temporal.api.history.v1.HistoryEvent + (v1.CallbackState)(0), // 80: temporal.server.api.enums.v1.CallbackState + (v1.NexusOperationState)(0), // 81: temporal.server.api.enums.v1.NexusOperationState + (v11.NexusOperationCancellationState)(0), // 82: temporal.api.enums.v1.NexusOperationCancellationState + (*QueueState)(nil), // 83: temporal.server.api.persistence.v1.QueueState + (*v13.Payload)(nil), // 84: temporal.api.common.v1.Payload + (*UpdateInfo)(nil), // 85: temporal.server.api.persistence.v1.UpdateInfo + (*StateMachineMap)(nil), // 86: temporal.server.api.persistence.v1.StateMachineMap + (*StateMachineRef)(nil), // 87: temporal.server.api.persistence.v1.StateMachineRef } var file_temporal_server_api_persistence_v1_executions_proto_depIdxs = []int32{ - 44, // 0: temporal.server.api.persistence.v1.ShardInfo.update_time:type_name -> google.protobuf.Timestamp + 46, // 0: temporal.server.api.persistence.v1.ShardInfo.update_time:type_name -> google.protobuf.Timestamp 27, // 1: temporal.server.api.persistence.v1.ShardInfo.replication_dlq_ack_level:type_name -> temporal.server.api.persistence.v1.ShardInfo.ReplicationDlqAckLevelEntry 28, // 2: temporal.server.api.persistence.v1.ShardInfo.queue_states:type_name -> temporal.server.api.persistence.v1.ShardInfo.QueueStatesEntry - 45, // 3: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_execution_timeout:type_name -> google.protobuf.Duration - 45, // 4: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_run_timeout:type_name -> google.protobuf.Duration - 45, // 5: temporal.server.api.persistence.v1.WorkflowExecutionInfo.default_workflow_task_timeout:type_name -> google.protobuf.Duration - 44, // 6: temporal.server.api.persistence.v1.WorkflowExecutionInfo.start_time:type_name -> google.protobuf.Timestamp - 44, // 7: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_update_time:type_name -> google.protobuf.Timestamp - 45, // 8: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_timeout:type_name -> google.protobuf.Duration - 44, // 9: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_started_time:type_name -> google.protobuf.Timestamp - 44, // 10: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_scheduled_time:type_name -> google.protobuf.Timestamp - 44, // 11: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_original_scheduled_time:type_name -> google.protobuf.Timestamp - 46, // 12: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_type:type_name -> temporal.server.api.enums.v1.WorkflowTaskType - 47, // 13: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_suggest_continue_as_new_reasons:type_name -> temporal.api.enums.v1.SuggestContinueAsNewReason - 45, // 14: temporal.server.api.persistence.v1.WorkflowExecutionInfo.sticky_schedule_to_start_timeout:type_name -> google.protobuf.Duration - 45, // 15: temporal.server.api.persistence.v1.WorkflowExecutionInfo.retry_initial_interval:type_name -> google.protobuf.Duration - 45, // 16: temporal.server.api.persistence.v1.WorkflowExecutionInfo.retry_maximum_interval:type_name -> google.protobuf.Duration - 44, // 17: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_execution_expiration_time:type_name -> google.protobuf.Timestamp - 48, // 18: temporal.server.api.persistence.v1.WorkflowExecutionInfo.auto_reset_points:type_name -> temporal.api.workflow.v1.ResetPoints + 47, // 3: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_execution_timeout:type_name -> google.protobuf.Duration + 47, // 4: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_run_timeout:type_name -> google.protobuf.Duration + 47, // 5: temporal.server.api.persistence.v1.WorkflowExecutionInfo.default_workflow_task_timeout:type_name -> google.protobuf.Duration + 46, // 6: temporal.server.api.persistence.v1.WorkflowExecutionInfo.start_time:type_name -> google.protobuf.Timestamp + 46, // 7: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_update_time:type_name -> google.protobuf.Timestamp + 47, // 8: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_timeout:type_name -> google.protobuf.Duration + 46, // 9: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_started_time:type_name -> google.protobuf.Timestamp + 46, // 10: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_scheduled_time:type_name -> google.protobuf.Timestamp + 46, // 11: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_original_scheduled_time:type_name -> google.protobuf.Timestamp + 48, // 12: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_type:type_name -> temporal.server.api.enums.v1.WorkflowTaskType + 49, // 13: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_suggest_continue_as_new_reasons:type_name -> temporal.api.enums.v1.SuggestContinueAsNewReason + 47, // 14: temporal.server.api.persistence.v1.WorkflowExecutionInfo.sticky_schedule_to_start_timeout:type_name -> google.protobuf.Duration + 47, // 15: temporal.server.api.persistence.v1.WorkflowExecutionInfo.retry_initial_interval:type_name -> google.protobuf.Duration + 47, // 16: temporal.server.api.persistence.v1.WorkflowExecutionInfo.retry_maximum_interval:type_name -> google.protobuf.Duration + 46, // 17: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_execution_expiration_time:type_name -> google.protobuf.Timestamp + 50, // 18: temporal.server.api.persistence.v1.WorkflowExecutionInfo.auto_reset_points:type_name -> temporal.api.workflow.v1.ResetPoints 29, // 19: temporal.server.api.persistence.v1.WorkflowExecutionInfo.search_attributes:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.SearchAttributesEntry 30, // 20: temporal.server.api.persistence.v1.WorkflowExecutionInfo.memo:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.MemoEntry - 49, // 21: temporal.server.api.persistence.v1.WorkflowExecutionInfo.version_histories:type_name -> temporal.server.api.history.v1.VersionHistories + 51, // 21: temporal.server.api.persistence.v1.WorkflowExecutionInfo.version_histories:type_name -> temporal.server.api.history.v1.VersionHistories 2, // 22: temporal.server.api.persistence.v1.WorkflowExecutionInfo.execution_stats:type_name -> temporal.server.api.persistence.v1.ExecutionStats - 44, // 23: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_run_expiration_time:type_name -> google.protobuf.Timestamp - 44, // 24: temporal.server.api.persistence.v1.WorkflowExecutionInfo.execution_time:type_name -> google.protobuf.Timestamp - 50, // 25: temporal.server.api.persistence.v1.WorkflowExecutionInfo.parent_clock:type_name -> temporal.server.api.clock.v1.VectorClock - 44, // 26: temporal.server.api.persistence.v1.WorkflowExecutionInfo.close_time:type_name -> google.protobuf.Timestamp - 51, // 27: temporal.server.api.persistence.v1.WorkflowExecutionInfo.base_execution_info:type_name -> temporal.server.api.workflow.v1.BaseExecutionInfo - 52, // 28: temporal.server.api.persistence.v1.WorkflowExecutionInfo.most_recent_worker_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp + 46, // 23: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_run_expiration_time:type_name -> google.protobuf.Timestamp + 46, // 24: temporal.server.api.persistence.v1.WorkflowExecutionInfo.execution_time:type_name -> google.protobuf.Timestamp + 52, // 25: temporal.server.api.persistence.v1.WorkflowExecutionInfo.parent_clock:type_name -> temporal.server.api.clock.v1.VectorClock + 46, // 26: temporal.server.api.persistence.v1.WorkflowExecutionInfo.close_time:type_name -> google.protobuf.Timestamp + 53, // 27: temporal.server.api.persistence.v1.WorkflowExecutionInfo.base_execution_info:type_name -> temporal.server.api.workflow.v1.BaseExecutionInfo + 54, // 28: temporal.server.api.persistence.v1.WorkflowExecutionInfo.most_recent_worker_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp 31, // 29: temporal.server.api.persistence.v1.WorkflowExecutionInfo.update_infos:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.UpdateInfosEntry - 53, // 30: temporal.server.api.persistence.v1.WorkflowExecutionInfo.transition_history:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 55, // 30: temporal.server.api.persistence.v1.WorkflowExecutionInfo.transition_history:type_name -> temporal.server.api.persistence.v1.VersionedTransition 32, // 31: temporal.server.api.persistence.v1.WorkflowExecutionInfo.sub_state_machines_by_type:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.SubStateMachinesByTypeEntry - 54, // 32: temporal.server.api.persistence.v1.WorkflowExecutionInfo.state_machine_timers:type_name -> temporal.server.api.persistence.v1.StateMachineTimerGroup - 53, // 33: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 53, // 34: temporal.server.api.persistence.v1.WorkflowExecutionInfo.visibility_last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 53, // 35: temporal.server.api.persistence.v1.WorkflowExecutionInfo.signal_request_ids_last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 55, // 36: temporal.server.api.persistence.v1.WorkflowExecutionInfo.sub_state_machine_tombstone_batches:type_name -> temporal.server.api.persistence.v1.StateMachineTombstoneBatch - 56, // 37: temporal.server.api.persistence.v1.WorkflowExecutionInfo.versioning_info:type_name -> temporal.api.workflow.v1.WorkflowExecutionVersioningInfo - 53, // 38: temporal.server.api.persistence.v1.WorkflowExecutionInfo.previous_transition_history:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 53, // 39: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_transition_history_break_point:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 56, // 32: temporal.server.api.persistence.v1.WorkflowExecutionInfo.state_machine_timers:type_name -> temporal.server.api.persistence.v1.StateMachineTimerGroup + 55, // 33: temporal.server.api.persistence.v1.WorkflowExecutionInfo.workflow_task_last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 55, // 34: temporal.server.api.persistence.v1.WorkflowExecutionInfo.visibility_last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 55, // 35: temporal.server.api.persistence.v1.WorkflowExecutionInfo.signal_request_ids_last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 57, // 36: temporal.server.api.persistence.v1.WorkflowExecutionInfo.sub_state_machine_tombstone_batches:type_name -> temporal.server.api.persistence.v1.StateMachineTombstoneBatch + 58, // 37: temporal.server.api.persistence.v1.WorkflowExecutionInfo.versioning_info:type_name -> temporal.api.workflow.v1.WorkflowExecutionVersioningInfo + 55, // 38: temporal.server.api.persistence.v1.WorkflowExecutionInfo.previous_transition_history:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 55, // 39: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_transition_history_break_point:type_name -> temporal.server.api.persistence.v1.VersionedTransition 33, // 40: temporal.server.api.persistence.v1.WorkflowExecutionInfo.children_initialized_post_reset_point:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionInfo.ChildrenInitializedPostResetPointEntry - 57, // 41: temporal.server.api.persistence.v1.WorkflowExecutionInfo.priority:type_name -> temporal.api.common.v1.Priority + 59, // 41: temporal.server.api.persistence.v1.WorkflowExecutionInfo.priority:type_name -> temporal.api.common.v1.Priority 26, // 42: temporal.server.api.persistence.v1.WorkflowExecutionInfo.pause_info:type_name -> temporal.server.api.persistence.v1.WorkflowPauseInfo - 58, // 43: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_workflow_task_failure_cause:type_name -> temporal.api.enums.v1.WorkflowTaskFailedCause - 59, // 44: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_workflow_task_timed_out_type:type_name -> temporal.api.enums.v1.TimeoutType - 60, // 45: temporal.server.api.persistence.v1.WorkflowExecutionState.state:type_name -> temporal.server.api.enums.v1.WorkflowExecutionState - 61, // 46: temporal.server.api.persistence.v1.WorkflowExecutionState.status:type_name -> temporal.api.enums.v1.WorkflowExecutionStatus - 53, // 47: temporal.server.api.persistence.v1.WorkflowExecutionState.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 44, // 48: temporal.server.api.persistence.v1.WorkflowExecutionState.start_time:type_name -> google.protobuf.Timestamp + 60, // 43: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_workflow_task_failure_cause:type_name -> temporal.api.enums.v1.WorkflowTaskFailedCause + 61, // 44: temporal.server.api.persistence.v1.WorkflowExecutionInfo.last_workflow_task_timed_out_type:type_name -> temporal.api.enums.v1.TimeoutType + 62, // 45: temporal.server.api.persistence.v1.WorkflowExecutionState.state:type_name -> temporal.server.api.enums.v1.WorkflowExecutionState + 63, // 46: temporal.server.api.persistence.v1.WorkflowExecutionState.status:type_name -> temporal.api.enums.v1.WorkflowExecutionStatus + 55, // 47: temporal.server.api.persistence.v1.WorkflowExecutionState.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 46, // 48: temporal.server.api.persistence.v1.WorkflowExecutionState.start_time:type_name -> google.protobuf.Timestamp 34, // 49: temporal.server.api.persistence.v1.WorkflowExecutionState.request_ids:type_name -> temporal.server.api.persistence.v1.WorkflowExecutionState.RequestIdsEntry - 62, // 50: temporal.server.api.persistence.v1.RequestIDInfo.event_type:type_name -> temporal.api.enums.v1.EventType - 63, // 51: temporal.server.api.persistence.v1.TransferTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 44, // 52: temporal.server.api.persistence.v1.TransferTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 64, // 50: temporal.server.api.persistence.v1.RequestIDInfo.event_type:type_name -> temporal.api.enums.v1.EventType + 65, // 51: temporal.server.api.persistence.v1.TransferTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 46, // 52: temporal.server.api.persistence.v1.TransferTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp 35, // 53: temporal.server.api.persistence.v1.TransferTaskInfo.close_execution_task_details:type_name -> temporal.server.api.persistence.v1.TransferTaskInfo.CloseExecutionTaskDetails - 64, // 54: temporal.server.api.persistence.v1.TransferTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo - 63, // 55: temporal.server.api.persistence.v1.ReplicationTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 44, // 56: temporal.server.api.persistence.v1.ReplicationTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 65, // 57: temporal.server.api.persistence.v1.ReplicationTaskInfo.priority:type_name -> temporal.server.api.enums.v1.TaskPriority - 53, // 58: temporal.server.api.persistence.v1.ReplicationTaskInfo.versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 66, // 54: temporal.server.api.persistence.v1.TransferTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo + 65, // 55: temporal.server.api.persistence.v1.ReplicationTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 46, // 56: temporal.server.api.persistence.v1.ReplicationTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 67, // 57: temporal.server.api.persistence.v1.ReplicationTaskInfo.priority:type_name -> temporal.server.api.enums.v1.TaskPriority + 55, // 58: temporal.server.api.persistence.v1.ReplicationTaskInfo.versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition 6, // 59: temporal.server.api.persistence.v1.ReplicationTaskInfo.task_equivalents:type_name -> temporal.server.api.persistence.v1.ReplicationTaskInfo - 66, // 60: temporal.server.api.persistence.v1.ReplicationTaskInfo.last_version_history_item:type_name -> temporal.server.api.history.v1.VersionHistoryItem - 63, // 61: temporal.server.api.persistence.v1.VisibilityTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 44, // 62: temporal.server.api.persistence.v1.VisibilityTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 44, // 63: temporal.server.api.persistence.v1.VisibilityTaskInfo.close_time:type_name -> google.protobuf.Timestamp - 64, // 64: temporal.server.api.persistence.v1.VisibilityTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo - 63, // 65: temporal.server.api.persistence.v1.TimerTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 59, // 66: temporal.server.api.persistence.v1.TimerTaskInfo.timeout_type:type_name -> temporal.api.enums.v1.TimeoutType - 67, // 67: temporal.server.api.persistence.v1.TimerTaskInfo.workflow_backoff_type:type_name -> temporal.server.api.enums.v1.WorkflowBackoffType - 44, // 68: temporal.server.api.persistence.v1.TimerTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 64, // 69: temporal.server.api.persistence.v1.TimerTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo - 63, // 70: temporal.server.api.persistence.v1.ArchivalTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 44, // 71: temporal.server.api.persistence.v1.ArchivalTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 63, // 72: temporal.server.api.persistence.v1.OutboundTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType - 44, // 73: temporal.server.api.persistence.v1.OutboundTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp - 68, // 74: temporal.server.api.persistence.v1.OutboundTaskInfo.state_machine_info:type_name -> temporal.server.api.persistence.v1.StateMachineTaskInfo - 64, // 75: temporal.server.api.persistence.v1.OutboundTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo - 11, // 76: temporal.server.api.persistence.v1.OutboundTaskInfo.activity_command_info:type_name -> temporal.server.api.persistence.v1.ActivityCommandTaskInfo - 69, // 77: temporal.server.api.persistence.v1.ActivityCommandTaskInfo.command_type:type_name -> temporal.server.api.enums.v1.ActivityCommandType - 44, // 78: temporal.server.api.persistence.v1.ActivityInfo.scheduled_time:type_name -> google.protobuf.Timestamp - 44, // 79: temporal.server.api.persistence.v1.ActivityInfo.started_time:type_name -> google.protobuf.Timestamp - 45, // 80: temporal.server.api.persistence.v1.ActivityInfo.schedule_to_start_timeout:type_name -> google.protobuf.Duration - 45, // 81: temporal.server.api.persistence.v1.ActivityInfo.schedule_to_close_timeout:type_name -> google.protobuf.Duration - 45, // 82: temporal.server.api.persistence.v1.ActivityInfo.start_to_close_timeout:type_name -> google.protobuf.Duration - 45, // 83: temporal.server.api.persistence.v1.ActivityInfo.heartbeat_timeout:type_name -> google.protobuf.Duration - 45, // 84: temporal.server.api.persistence.v1.ActivityInfo.retry_initial_interval:type_name -> google.protobuf.Duration - 45, // 85: temporal.server.api.persistence.v1.ActivityInfo.retry_maximum_interval:type_name -> google.protobuf.Duration - 44, // 86: temporal.server.api.persistence.v1.ActivityInfo.retry_expiration_time:type_name -> google.protobuf.Timestamp - 70, // 87: temporal.server.api.persistence.v1.ActivityInfo.retry_last_failure:type_name -> temporal.api.failure.v1.Failure - 71, // 88: temporal.server.api.persistence.v1.ActivityInfo.last_heartbeat_details:type_name -> temporal.api.common.v1.Payloads - 44, // 89: temporal.server.api.persistence.v1.ActivityInfo.last_heartbeat_update_time:type_name -> google.protobuf.Timestamp - 72, // 90: temporal.server.api.persistence.v1.ActivityInfo.activity_type:type_name -> temporal.api.common.v1.ActivityType - 36, // 91: temporal.server.api.persistence.v1.ActivityInfo.use_workflow_build_id_info:type_name -> temporal.server.api.persistence.v1.ActivityInfo.UseWorkflowBuildIdInfo - 52, // 92: temporal.server.api.persistence.v1.ActivityInfo.last_worker_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp - 53, // 93: temporal.server.api.persistence.v1.ActivityInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 44, // 94: temporal.server.api.persistence.v1.ActivityInfo.first_scheduled_time:type_name -> google.protobuf.Timestamp - 44, // 95: temporal.server.api.persistence.v1.ActivityInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp - 73, // 96: temporal.server.api.persistence.v1.ActivityInfo.last_started_deployment:type_name -> temporal.api.deployment.v1.Deployment - 74, // 97: temporal.server.api.persistence.v1.ActivityInfo.last_deployment_version:type_name -> temporal.api.deployment.v1.WorkerDeploymentVersion - 57, // 98: temporal.server.api.persistence.v1.ActivityInfo.priority:type_name -> temporal.api.common.v1.Priority - 37, // 99: temporal.server.api.persistence.v1.ActivityInfo.pause_info:type_name -> temporal.server.api.persistence.v1.ActivityInfo.PauseInfo - 44, // 100: temporal.server.api.persistence.v1.TimerInfo.expiry_time:type_name -> google.protobuf.Timestamp - 53, // 101: temporal.server.api.persistence.v1.TimerInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 75, // 102: temporal.server.api.persistence.v1.ChildExecutionInfo.parent_close_policy:type_name -> temporal.api.enums.v1.ParentClosePolicy - 50, // 103: temporal.server.api.persistence.v1.ChildExecutionInfo.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 53, // 104: temporal.server.api.persistence.v1.ChildExecutionInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 57, // 105: temporal.server.api.persistence.v1.ChildExecutionInfo.priority:type_name -> temporal.api.common.v1.Priority - 53, // 106: temporal.server.api.persistence.v1.RequestCancelInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 53, // 107: temporal.server.api.persistence.v1.SignalInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 76, // 108: temporal.server.api.persistence.v1.Checksum.flavor:type_name -> temporal.server.api.enums.v1.ChecksumFlavor - 39, // 109: temporal.server.api.persistence.v1.Callback.nexus:type_name -> temporal.server.api.persistence.v1.Callback.Nexus - 40, // 110: temporal.server.api.persistence.v1.Callback.hsm:type_name -> temporal.server.api.persistence.v1.Callback.HSM - 77, // 111: temporal.server.api.persistence.v1.Callback.links:type_name -> temporal.api.common.v1.Link - 78, // 112: temporal.server.api.persistence.v1.HSMCompletionCallbackArg.last_event:type_name -> temporal.api.history.v1.HistoryEvent + 68, // 60: temporal.server.api.persistence.v1.ReplicationTaskInfo.last_version_history_item:type_name -> temporal.server.api.history.v1.VersionHistoryItem + 65, // 61: temporal.server.api.persistence.v1.VisibilityTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 46, // 62: temporal.server.api.persistence.v1.VisibilityTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 46, // 63: temporal.server.api.persistence.v1.VisibilityTaskInfo.close_time:type_name -> google.protobuf.Timestamp + 66, // 64: temporal.server.api.persistence.v1.VisibilityTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo + 65, // 65: temporal.server.api.persistence.v1.TimerTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 61, // 66: temporal.server.api.persistence.v1.TimerTaskInfo.timeout_type:type_name -> temporal.api.enums.v1.TimeoutType + 69, // 67: temporal.server.api.persistence.v1.TimerTaskInfo.workflow_backoff_type:type_name -> temporal.server.api.enums.v1.WorkflowBackoffType + 46, // 68: temporal.server.api.persistence.v1.TimerTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 66, // 69: temporal.server.api.persistence.v1.TimerTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo + 65, // 70: temporal.server.api.persistence.v1.ArchivalTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 46, // 71: temporal.server.api.persistence.v1.ArchivalTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 65, // 72: temporal.server.api.persistence.v1.OutboundTaskInfo.task_type:type_name -> temporal.server.api.enums.v1.TaskType + 46, // 73: temporal.server.api.persistence.v1.OutboundTaskInfo.visibility_time:type_name -> google.protobuf.Timestamp + 70, // 74: temporal.server.api.persistence.v1.OutboundTaskInfo.state_machine_info:type_name -> temporal.server.api.persistence.v1.StateMachineTaskInfo + 66, // 75: temporal.server.api.persistence.v1.OutboundTaskInfo.chasm_task_info:type_name -> temporal.server.api.persistence.v1.ChasmTaskInfo + 11, // 76: temporal.server.api.persistence.v1.OutboundTaskInfo.worker_commands_task:type_name -> temporal.server.api.persistence.v1.WorkerCommandsTask + 36, // 77: temporal.server.api.persistence.v1.WorkerCommandsTask.commands:type_name -> temporal.server.api.persistence.v1.WorkerCommandsTask.WorkerCommand + 46, // 78: temporal.server.api.persistence.v1.ActivityInfo.scheduled_time:type_name -> google.protobuf.Timestamp + 46, // 79: temporal.server.api.persistence.v1.ActivityInfo.started_time:type_name -> google.protobuf.Timestamp + 47, // 80: temporal.server.api.persistence.v1.ActivityInfo.schedule_to_start_timeout:type_name -> google.protobuf.Duration + 47, // 81: temporal.server.api.persistence.v1.ActivityInfo.schedule_to_close_timeout:type_name -> google.protobuf.Duration + 47, // 82: temporal.server.api.persistence.v1.ActivityInfo.start_to_close_timeout:type_name -> google.protobuf.Duration + 47, // 83: temporal.server.api.persistence.v1.ActivityInfo.heartbeat_timeout:type_name -> google.protobuf.Duration + 47, // 84: temporal.server.api.persistence.v1.ActivityInfo.retry_initial_interval:type_name -> google.protobuf.Duration + 47, // 85: temporal.server.api.persistence.v1.ActivityInfo.retry_maximum_interval:type_name -> google.protobuf.Duration + 46, // 86: temporal.server.api.persistence.v1.ActivityInfo.retry_expiration_time:type_name -> google.protobuf.Timestamp + 71, // 87: temporal.server.api.persistence.v1.ActivityInfo.retry_last_failure:type_name -> temporal.api.failure.v1.Failure + 72, // 88: temporal.server.api.persistence.v1.ActivityInfo.last_heartbeat_details:type_name -> temporal.api.common.v1.Payloads + 46, // 89: temporal.server.api.persistence.v1.ActivityInfo.last_heartbeat_update_time:type_name -> google.protobuf.Timestamp + 73, // 90: temporal.server.api.persistence.v1.ActivityInfo.activity_type:type_name -> temporal.api.common.v1.ActivityType + 38, // 91: temporal.server.api.persistence.v1.ActivityInfo.use_workflow_build_id_info:type_name -> temporal.server.api.persistence.v1.ActivityInfo.UseWorkflowBuildIdInfo + 54, // 92: temporal.server.api.persistence.v1.ActivityInfo.last_worker_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp + 55, // 93: temporal.server.api.persistence.v1.ActivityInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 46, // 94: temporal.server.api.persistence.v1.ActivityInfo.first_scheduled_time:type_name -> google.protobuf.Timestamp + 46, // 95: temporal.server.api.persistence.v1.ActivityInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp + 74, // 96: temporal.server.api.persistence.v1.ActivityInfo.last_started_deployment:type_name -> temporal.api.deployment.v1.Deployment + 75, // 97: temporal.server.api.persistence.v1.ActivityInfo.last_deployment_version:type_name -> temporal.api.deployment.v1.WorkerDeploymentVersion + 59, // 98: temporal.server.api.persistence.v1.ActivityInfo.priority:type_name -> temporal.api.common.v1.Priority + 39, // 99: temporal.server.api.persistence.v1.ActivityInfo.pause_info:type_name -> temporal.server.api.persistence.v1.ActivityInfo.PauseInfo + 46, // 100: temporal.server.api.persistence.v1.TimerInfo.expiry_time:type_name -> google.protobuf.Timestamp + 55, // 101: temporal.server.api.persistence.v1.TimerInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 76, // 102: temporal.server.api.persistence.v1.ChildExecutionInfo.parent_close_policy:type_name -> temporal.api.enums.v1.ParentClosePolicy + 52, // 103: temporal.server.api.persistence.v1.ChildExecutionInfo.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 55, // 104: temporal.server.api.persistence.v1.ChildExecutionInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 59, // 105: temporal.server.api.persistence.v1.ChildExecutionInfo.priority:type_name -> temporal.api.common.v1.Priority + 55, // 106: temporal.server.api.persistence.v1.RequestCancelInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 55, // 107: temporal.server.api.persistence.v1.SignalInfo.last_update_versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 77, // 108: temporal.server.api.persistence.v1.Checksum.flavor:type_name -> temporal.server.api.enums.v1.ChecksumFlavor + 41, // 109: temporal.server.api.persistence.v1.Callback.nexus:type_name -> temporal.server.api.persistence.v1.Callback.Nexus + 42, // 110: temporal.server.api.persistence.v1.Callback.hsm:type_name -> temporal.server.api.persistence.v1.Callback.HSM + 78, // 111: temporal.server.api.persistence.v1.Callback.links:type_name -> temporal.api.common.v1.Link + 79, // 112: temporal.server.api.persistence.v1.HSMCompletionCallbackArg.last_event:type_name -> temporal.api.history.v1.HistoryEvent 20, // 113: temporal.server.api.persistence.v1.CallbackInfo.callback:type_name -> temporal.server.api.persistence.v1.Callback - 43, // 114: temporal.server.api.persistence.v1.CallbackInfo.trigger:type_name -> temporal.server.api.persistence.v1.CallbackInfo.Trigger - 44, // 115: temporal.server.api.persistence.v1.CallbackInfo.registration_time:type_name -> google.protobuf.Timestamp - 79, // 116: temporal.server.api.persistence.v1.CallbackInfo.state:type_name -> temporal.server.api.enums.v1.CallbackState - 44, // 117: temporal.server.api.persistence.v1.CallbackInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp - 70, // 118: temporal.server.api.persistence.v1.CallbackInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure - 44, // 119: temporal.server.api.persistence.v1.CallbackInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp - 45, // 120: temporal.server.api.persistence.v1.NexusOperationInfo.schedule_to_close_timeout:type_name -> google.protobuf.Duration - 44, // 121: temporal.server.api.persistence.v1.NexusOperationInfo.scheduled_time:type_name -> google.protobuf.Timestamp - 80, // 122: temporal.server.api.persistence.v1.NexusOperationInfo.state:type_name -> temporal.server.api.enums.v1.NexusOperationState - 44, // 123: temporal.server.api.persistence.v1.NexusOperationInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp - 70, // 124: temporal.server.api.persistence.v1.NexusOperationInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure - 44, // 125: temporal.server.api.persistence.v1.NexusOperationInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp - 45, // 126: temporal.server.api.persistence.v1.NexusOperationInfo.schedule_to_start_timeout:type_name -> google.protobuf.Duration - 45, // 127: temporal.server.api.persistence.v1.NexusOperationInfo.start_to_close_timeout:type_name -> google.protobuf.Duration - 44, // 128: temporal.server.api.persistence.v1.NexusOperationInfo.started_time:type_name -> google.protobuf.Timestamp - 44, // 129: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.requested_time:type_name -> google.protobuf.Timestamp - 81, // 130: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.state:type_name -> temporal.api.enums.v1.NexusOperationCancellationState - 44, // 131: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp - 70, // 132: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure - 44, // 133: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp - 44, // 134: temporal.server.api.persistence.v1.WorkflowPauseInfo.pause_time:type_name -> google.protobuf.Timestamp - 82, // 135: temporal.server.api.persistence.v1.ShardInfo.QueueStatesEntry.value:type_name -> temporal.server.api.persistence.v1.QueueState - 83, // 136: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SearchAttributesEntry.value:type_name -> temporal.api.common.v1.Payload - 83, // 137: temporal.server.api.persistence.v1.WorkflowExecutionInfo.MemoEntry.value:type_name -> temporal.api.common.v1.Payload - 84, // 138: temporal.server.api.persistence.v1.WorkflowExecutionInfo.UpdateInfosEntry.value:type_name -> temporal.server.api.persistence.v1.UpdateInfo - 85, // 139: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SubStateMachinesByTypeEntry.value:type_name -> temporal.server.api.persistence.v1.StateMachineMap + 45, // 114: temporal.server.api.persistence.v1.CallbackInfo.trigger:type_name -> temporal.server.api.persistence.v1.CallbackInfo.Trigger + 46, // 115: temporal.server.api.persistence.v1.CallbackInfo.registration_time:type_name -> google.protobuf.Timestamp + 80, // 116: temporal.server.api.persistence.v1.CallbackInfo.state:type_name -> temporal.server.api.enums.v1.CallbackState + 46, // 117: temporal.server.api.persistence.v1.CallbackInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp + 71, // 118: temporal.server.api.persistence.v1.CallbackInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure + 46, // 119: temporal.server.api.persistence.v1.CallbackInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp + 47, // 120: temporal.server.api.persistence.v1.NexusOperationInfo.schedule_to_close_timeout:type_name -> google.protobuf.Duration + 46, // 121: temporal.server.api.persistence.v1.NexusOperationInfo.scheduled_time:type_name -> google.protobuf.Timestamp + 81, // 122: temporal.server.api.persistence.v1.NexusOperationInfo.state:type_name -> temporal.server.api.enums.v1.NexusOperationState + 46, // 123: temporal.server.api.persistence.v1.NexusOperationInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp + 71, // 124: temporal.server.api.persistence.v1.NexusOperationInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure + 46, // 125: temporal.server.api.persistence.v1.NexusOperationInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp + 47, // 126: temporal.server.api.persistence.v1.NexusOperationInfo.schedule_to_start_timeout:type_name -> google.protobuf.Duration + 47, // 127: temporal.server.api.persistence.v1.NexusOperationInfo.start_to_close_timeout:type_name -> google.protobuf.Duration + 46, // 128: temporal.server.api.persistence.v1.NexusOperationInfo.started_time:type_name -> google.protobuf.Timestamp + 46, // 129: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.requested_time:type_name -> google.protobuf.Timestamp + 82, // 130: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.state:type_name -> temporal.api.enums.v1.NexusOperationCancellationState + 46, // 131: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp + 71, // 132: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.last_attempt_failure:type_name -> temporal.api.failure.v1.Failure + 46, // 133: temporal.server.api.persistence.v1.NexusOperationCancellationInfo.next_attempt_schedule_time:type_name -> google.protobuf.Timestamp + 46, // 134: temporal.server.api.persistence.v1.WorkflowPauseInfo.pause_time:type_name -> google.protobuf.Timestamp + 83, // 135: temporal.server.api.persistence.v1.ShardInfo.QueueStatesEntry.value:type_name -> temporal.server.api.persistence.v1.QueueState + 84, // 136: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SearchAttributesEntry.value:type_name -> temporal.api.common.v1.Payload + 84, // 137: temporal.server.api.persistence.v1.WorkflowExecutionInfo.MemoEntry.value:type_name -> temporal.api.common.v1.Payload + 85, // 138: temporal.server.api.persistence.v1.WorkflowExecutionInfo.UpdateInfosEntry.value:type_name -> temporal.server.api.persistence.v1.UpdateInfo + 86, // 139: temporal.server.api.persistence.v1.WorkflowExecutionInfo.SubStateMachinesByTypeEntry.value:type_name -> temporal.server.api.persistence.v1.StateMachineMap 25, // 140: temporal.server.api.persistence.v1.WorkflowExecutionInfo.ChildrenInitializedPostResetPointEntry.value:type_name -> temporal.server.api.persistence.v1.ResetChildInfo 4, // 141: temporal.server.api.persistence.v1.WorkflowExecutionState.RequestIdsEntry.value:type_name -> temporal.server.api.persistence.v1.RequestIDInfo - 44, // 142: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.pause_time:type_name -> google.protobuf.Timestamp - 38, // 143: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.manual:type_name -> temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.Manual - 41, // 144: temporal.server.api.persistence.v1.Callback.Nexus.header:type_name -> temporal.server.api.persistence.v1.Callback.Nexus.HeaderEntry - 86, // 145: temporal.server.api.persistence.v1.Callback.HSM.ref:type_name -> temporal.server.api.persistence.v1.StateMachineRef - 42, // 146: temporal.server.api.persistence.v1.CallbackInfo.Trigger.workflow_closed:type_name -> temporal.server.api.persistence.v1.CallbackInfo.WorkflowClosed - 147, // [147:147] is the sub-list for method output_type - 147, // [147:147] is the sub-list for method input_type - 147, // [147:147] is the sub-list for extension type_name - 147, // [147:147] is the sub-list for extension extendee - 0, // [0:147] is the sub-list for field type_name + 37, // 142: temporal.server.api.persistence.v1.WorkerCommandsTask.WorkerCommand.cancel_activity:type_name -> temporal.server.api.persistence.v1.WorkerCommandsTask.CancelActivity + 46, // 143: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.pause_time:type_name -> google.protobuf.Timestamp + 40, // 144: temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.manual:type_name -> temporal.server.api.persistence.v1.ActivityInfo.PauseInfo.Manual + 43, // 145: temporal.server.api.persistence.v1.Callback.Nexus.header:type_name -> temporal.server.api.persistence.v1.Callback.Nexus.HeaderEntry + 87, // 146: temporal.server.api.persistence.v1.Callback.HSM.ref:type_name -> temporal.server.api.persistence.v1.StateMachineRef + 44, // 147: temporal.server.api.persistence.v1.CallbackInfo.Trigger.workflow_closed:type_name -> temporal.server.api.persistence.v1.CallbackInfo.WorkflowClosed + 148, // [148:148] is the sub-list for method output_type + 148, // [148:148] is the sub-list for method input_type + 148, // [148:148] is the sub-list for extension type_name + 148, // [148:148] is the sub-list for extension extendee + 0, // [0:148] is the sub-list for field type_name } func init() { file_temporal_server_api_persistence_v1_executions_proto_init() } @@ -5400,7 +5507,7 @@ func file_temporal_server_api_persistence_v1_executions_proto_init() { file_temporal_server_api_persistence_v1_executions_proto_msgTypes[10].OneofWrappers = []any{ (*OutboundTaskInfo_StateMachineInfo)(nil), (*OutboundTaskInfo_ChasmTaskInfo)(nil), - (*OutboundTaskInfo_ActivityCommandInfo)(nil), + (*OutboundTaskInfo_WorkerCommandsTask)(nil), } file_temporal_server_api_persistence_v1_executions_proto_msgTypes[14].OneofWrappers = []any{ (*ActivityInfo_UseWorkflowBuildIdInfo_)(nil), @@ -5410,11 +5517,14 @@ func file_temporal_server_api_persistence_v1_executions_proto_init() { (*Callback_Nexus_)(nil), (*Callback_Hsm)(nil), } - file_temporal_server_api_persistence_v1_executions_proto_msgTypes[37].OneofWrappers = []any{ + file_temporal_server_api_persistence_v1_executions_proto_msgTypes[36].OneofWrappers = []any{ + (*WorkerCommandsTask_WorkerCommand_CancelActivity)(nil), + } + file_temporal_server_api_persistence_v1_executions_proto_msgTypes[39].OneofWrappers = []any{ (*ActivityInfo_PauseInfo_Manual_)(nil), (*ActivityInfo_PauseInfo_RuleId)(nil), } - file_temporal_server_api_persistence_v1_executions_proto_msgTypes[43].OneofWrappers = []any{ + file_temporal_server_api_persistence_v1_executions_proto_msgTypes[45].OneofWrappers = []any{ (*CallbackInfo_Trigger_WorkflowClosed)(nil), } type x struct{} @@ -5423,7 +5533,7 @@ func file_temporal_server_api_persistence_v1_executions_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_persistence_v1_executions_proto_rawDesc), len(file_temporal_server_api_persistence_v1_executions_proto_rawDesc)), NumEnums: 0, - NumMessages: 44, + NumMessages: 46, NumExtensions: 0, NumServices: 0, }, diff --git a/common/persistence/serialization/task_serializers.go b/common/persistence/serialization/task_serializers.go index a9397e4bf5..fcaf83d62d 100644 --- a/common/persistence/serialization/task_serializers.go +++ b/common/persistence/serialization/task_serializers.go @@ -1447,6 +1447,21 @@ func serializeOutboundTask( }, } case *tasks.ActivityCommandTask: + commands := make([]*persistencespb.WorkerCommandsTask_WorkerCommand, 0, len(task.TaskTokens)) + for _, token := range task.TaskTokens { + switch task.CommandType { + case enumsspb.ACTIVITY_COMMAND_TYPE_CANCEL: + commands = append(commands, &persistencespb.WorkerCommandsTask_WorkerCommand{ + Type: &persistencespb.WorkerCommandsTask_WorkerCommand_CancelActivity{ + CancelActivity: &persistencespb.WorkerCommandsTask_CancelActivity{ + TaskToken: token, + }, + }, + }) + default: + return nil, serviceerror.NewInternalf("unknown activity command type: %v", task.CommandType) + } + } outboundTaskInfo = &persistencespb.OutboundTaskInfo{ NamespaceId: task.NamespaceID, WorkflowId: task.WorkflowID, @@ -1455,10 +1470,9 @@ func serializeOutboundTask( TaskType: task.GetType(), Destination: task.Destination, VisibilityTime: timestamppb.New(task.VisibilityTimestamp), - TaskDetails: &persistencespb.OutboundTaskInfo_ActivityCommandInfo{ - ActivityCommandInfo: &persistencespb.ActivityCommandTaskInfo{ - CommandType: task.CommandType, - TaskTokens: task.TaskTokens, + TaskDetails: &persistencespb.OutboundTaskInfo_WorkerCommandsTask{ + WorkerCommandsTask: &persistencespb.WorkerCommandsTask{ + Commands: commands, }, }, } @@ -1505,7 +1519,15 @@ func deserializeOutboundTask( Destination: info.Destination, }, nil case enumsspb.TASK_TYPE_ACTIVITY_COMMAND: - activityCommandInfo := info.GetActivityCommandInfo() + workerCommandsTask := info.GetWorkerCommandsTask() + var commandType enumsspb.ActivityCommandType + var taskTokens [][]byte + for _, cmd := range workerCommandsTask.GetCommands() { + if cancelActivity := cmd.GetCancelActivity(); cancelActivity != nil { + commandType = enumsspb.ACTIVITY_COMMAND_TYPE_CANCEL + taskTokens = append(taskTokens, cancelActivity.GetTaskToken()) + } + } return &tasks.ActivityCommandTask{ WorkflowKey: definition.NewWorkflowKey( info.NamespaceId, @@ -1514,8 +1536,8 @@ func deserializeOutboundTask( ), VisibilityTimestamp: info.VisibilityTime.AsTime(), TaskID: info.TaskId, - CommandType: activityCommandInfo.GetCommandType(), - TaskTokens: activityCommandInfo.GetTaskTokens(), + CommandType: commandType, + TaskTokens: taskTokens, Destination: info.Destination, }, nil default: diff --git a/proto/internal/temporal/server/api/persistence/v1/executions.proto b/proto/internal/temporal/server/api/persistence/v1/executions.proto index 75e2641f5d..c61481b90b 100644 --- a/proto/internal/temporal/server/api/persistence/v1/executions.proto +++ b/proto/internal/temporal/server/api/persistence/v1/executions.proto @@ -484,18 +484,25 @@ message OutboundTaskInfo { // If the task addresses a CHASM component, this field will be set. ChasmTaskInfo chasm_task_info = 9; - // If the task is an activity command task. - ActivityCommandTaskInfo activity_command_info = 10; + // If the task is a worker commands task. + WorkerCommandsTask worker_commands_task = 10; } } -// ActivityCommandTaskInfo contains details for activity command operation. -message ActivityCommandTaskInfo { - // Type of command to send. - temporal.server.api.enums.v1.ActivityCommandType command_type = 1; +// WorkerCommandsTask contains worker commands to dispatch via Nexus. +message WorkerCommandsTask { + repeated WorkerCommand commands = 1; - // Task tokens of activities. - repeated bytes task_tokens = 2; + message WorkerCommand { + oneof type { + CancelActivity cancel_activity = 1; + } + } + + message CancelActivity { + // Task token identifying the activity to cancel. + bytes task_token = 1; + } } message NexusInvocationTaskInfo {