From c976980e45165f3296f9a4ba31557011f589d522 Mon Sep 17 00:00:00 2001 From: Moe Dashti Date: Fri, 25 Sep 2026 08:29:21 -0700 Subject: [PATCH 1/7] Delivered consumed ranges through Workflow Tasks, routed across hosts. Records ride the task response and the completion records only the offset range consumed, so replay re-reads the payloads from the stream instead of History carrying them. A range that cannot be served fails the task with its own cause, and a non-sticky query asks History for the same ranges after it has fetched the history. --- .../v1/request_response.go-helpers.pb.go | 74 + api/historyservice/v1/request_response.pb.go | 2708 +++++++++-------- api/historyservice/v1/service.pb.go | 625 ++-- api/historyservice/v1/service_grpc.pb.go | 43 + .../v1/service_grpc.pb.mock.go | 35 + api/matchingservice/v1/request_response.pb.go | 684 +++-- chasm/lib/workflow/stream_cursor_test.go | 50 + chasm/lib/workflow/workflow.go | 80 + client/history/client_gen.go | 20 + client/history/metric_client_gen.go | 14 + client/history/retryable_client_gen.go | 15 + .../logtags/history_service_server_gen.go | 7 + common/util.go | 1 + .../historyservice/v1/request_response.proto | 25 + .../api/historyservice/v1/service.proto | 7 + .../matchingservice/v1/request_response.proto | 9 + service/frontend/workflow_handler.go | 1 + .../api/recordworkflowtaskstarted/api.go | 92 + .../stream_routing.go | 72 + .../stream_routing_test.go | 163 + .../stream_slices.go | 756 +++++ .../api/respondworkflowtaskcompleted/api.go | 9 + service/history/handler.go | 27 + service/history/history_engine.go | 38 + .../history/historybuilder/event_factory.go | 5 + .../history/historybuilder/history_builder.go | 3 + .../history_builder_categorization_test.go | 1 + .../historybuilder/history_builder_test.go | 1 + service/history/interfaces/engine.go | 1 + service/history/interfaces/engine_mock.go | 15 + service/history/interfaces/mutable_state.go | 9 + .../history/interfaces/mutable_state_mock.go | 28 + .../history/workflow/mutable_state_impl.go | 75 + .../workflow/workflow_task_state_machine.go | 8 +- service/matching/matching_engine.go | 40 + service/matching/matching_engine_test.go | 67 + service/matching/wire_compat_test.go | 178 ++ tests/sdk_server_host_test.go | 81 + tests/stream_consume_test.go | 1088 +++++++ tests/stream_consumer_lifecycle_test.go | 166 + tests/stream_publish_cost_test.go | 307 ++ tests/stream_query_test.go | 137 + tests/stream_rejection_test.go | 80 + tests/stream_replay_test.go | 280 ++ tests/stream_retention_test.go | 272 ++ tests/stream_routing_cross_host_test.go | 384 +++ tests/streaming_baseline_test.go | 470 +++ tests/streaming_native_test.go | 262 ++ tests/testcore/onebox.go | 60 +- 49 files changed, 7635 insertions(+), 1938 deletions(-) create mode 100644 service/history/api/recordworkflowtaskstarted/stream_routing_test.go create mode 100644 service/history/api/recordworkflowtaskstarted/stream_slices.go create mode 100644 service/matching/wire_compat_test.go create mode 100644 tests/sdk_server_host_test.go create mode 100644 tests/stream_publish_cost_test.go create mode 100644 tests/stream_query_test.go create mode 100644 tests/stream_retention_test.go create mode 100644 tests/stream_routing_cross_host_test.go create mode 100644 tests/streaming_baseline_test.go create mode 100644 tests/streaming_native_test.go diff --git a/api/historyservice/v1/request_response.go-helpers.pb.go b/api/historyservice/v1/request_response.go-helpers.pb.go index 68cf73e2c50..33050f93afe 100644 --- a/api/historyservice/v1/request_response.go-helpers.pb.go +++ b/api/historyservice/v1/request_response.go-helpers.pb.go @@ -116,6 +116,80 @@ func (this *StartWorkflowExecutionResponse) Equal(that interface{}) bool { return proto.Equal(this, that1) } +// Marshal an object of type GetStreamReplaySlicesRequest to the protobuf v3 wire format +func (val *GetStreamReplaySlicesRequest) Marshal() ([]byte, error) { + return proto.Marshal(val) +} + +// Unmarshal an object of type GetStreamReplaySlicesRequest from the protobuf v3 wire format +func (val *GetStreamReplaySlicesRequest) Unmarshal(buf []byte) error { + return proto.Unmarshal(buf, val) +} + +// Size returns the size of the object, in bytes, once serialized +func (val *GetStreamReplaySlicesRequest) Size() int { + return proto.Size(val) +} + +// Equal returns whether two GetStreamReplaySlicesRequest 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 *GetStreamReplaySlicesRequest) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + var that1 *GetStreamReplaySlicesRequest + switch t := that.(type) { + case *GetStreamReplaySlicesRequest: + that1 = t + case GetStreamReplaySlicesRequest: + that1 = &t + default: + return false + } + + return proto.Equal(this, that1) +} + +// Marshal an object of type GetStreamReplaySlicesResponse to the protobuf v3 wire format +func (val *GetStreamReplaySlicesResponse) Marshal() ([]byte, error) { + return proto.Marshal(val) +} + +// Unmarshal an object of type GetStreamReplaySlicesResponse from the protobuf v3 wire format +func (val *GetStreamReplaySlicesResponse) Unmarshal(buf []byte) error { + return proto.Unmarshal(buf, val) +} + +// Size returns the size of the object, in bytes, once serialized +func (val *GetStreamReplaySlicesResponse) Size() int { + return proto.Size(val) +} + +// Equal returns whether two GetStreamReplaySlicesResponse 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 *GetStreamReplaySlicesResponse) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + var that1 *GetStreamReplaySlicesResponse + switch t := that.(type) { + case *GetStreamReplaySlicesResponse: + that1 = t + case GetStreamReplaySlicesResponse: + that1 = &t + default: + return false + } + + return proto.Equal(this, that1) +} + // Marshal an object of type GetMutableStateRequest to the protobuf v3 wire format func (val *GetMutableStateRequest) Marshal() ([]byte, error) { return proto.Marshal(val) diff --git a/api/historyservice/v1/request_response.pb.go b/api/historyservice/v1/request_response.pb.go index a7f13f19b10..d911cf62654 100644 --- a/api/historyservice/v1/request_response.pb.go +++ b/api/historyservice/v1/request_response.pb.go @@ -11,29 +11,30 @@ import ( sync "sync" unsafe "unsafe" - v123 "go.temporal.io/api/activity/v1" + v124 "go.temporal.io/api/activity/v1" v14 "go.temporal.io/api/common/v1" v16 "go.temporal.io/api/deployment/v1" v12 "go.temporal.io/api/enums/v1" v13 "go.temporal.io/api/failure/v1" v17 "go.temporal.io/api/history/v1" - v121 "go.temporal.io/api/nexus/v1" - v115 "go.temporal.io/api/protocol/v1" - v114 "go.temporal.io/api/query/v1" - v111 "go.temporal.io/api/taskqueue/v1" + v122 "go.temporal.io/api/nexus/v1" + v116 "go.temporal.io/api/protocol/v1" + v115 "go.temporal.io/api/query/v1" + v19 "go.temporal.io/api/stream/v1" + v112 "go.temporal.io/api/taskqueue/v1" v15 "go.temporal.io/api/workflow/v1" v1 "go.temporal.io/api/workflowservice/v1" - v118 "go.temporal.io/server/api/adminservice/v1" + v119 "go.temporal.io/server/api/adminservice/v1" v18 "go.temporal.io/server/api/clock/v1" - v119 "go.temporal.io/server/api/common/v1" - v112 "go.temporal.io/server/api/enums/v1" - v122 "go.temporal.io/server/api/health/v1" - v19 "go.temporal.io/server/api/history/v1" - v116 "go.temporal.io/server/api/namespace/v1" - v110 "go.temporal.io/server/api/persistence/v1" - v117 "go.temporal.io/server/api/replication/v1" - v113 "go.temporal.io/server/api/taskqueue/v1" - v120 "go.temporal.io/server/api/token/v1" + v120 "go.temporal.io/server/api/common/v1" + v113 "go.temporal.io/server/api/enums/v1" + v123 "go.temporal.io/server/api/health/v1" + v110 "go.temporal.io/server/api/history/v1" + v117 "go.temporal.io/server/api/namespace/v1" + v111 "go.temporal.io/server/api/persistence/v1" + v118 "go.temporal.io/server/api/replication/v1" + v114 "go.temporal.io/server/api/taskqueue/v1" + v121 "go.temporal.io/server/api/token/v1" v11 "go.temporal.io/server/api/workflow/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -458,21 +459,122 @@ func (x *StartWorkflowExecutionResponse) GetFirstExecutionRunId() string { return "" } +// Asks for the stream ranges a workflow's completed tasks recorded, re-read from +// their streams, for a task that is built without RecordWorkflowTaskStarted. +// A query dispatched straight through matching is the one such task. +type GetStreamReplaySlicesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` + Execution *v14.WorkflowExecution `protobuf:"bytes,2,opt,name=execution,proto3" json:"execution,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetStreamReplaySlicesRequest) Reset() { + *x = GetStreamReplaySlicesRequest{} + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetStreamReplaySlicesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetStreamReplaySlicesRequest) ProtoMessage() {} + +func (x *GetStreamReplaySlicesRequest) ProtoReflect() protoreflect.Message { + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[3] + 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 GetStreamReplaySlicesRequest.ProtoReflect.Descriptor instead. +func (*GetStreamReplaySlicesRequest) Descriptor() ([]byte, []int) { + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{3} +} + +func (x *GetStreamReplaySlicesRequest) GetNamespaceId() string { + if x != nil { + return x.NamespaceId + } + return "" +} + +func (x *GetStreamReplaySlicesRequest) GetExecution() *v14.WorkflowExecution { + if x != nil { + return x.Execution + } + return nil +} + +type GetStreamReplaySlicesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Every slice is tagged with the completed event that recorded its range. + // Empty when the workflow consumes no stream. + StreamSlices []*v19.StreamSlice `protobuf:"bytes,1,rep,name=stream_slices,json=streamSlices,proto3" json:"stream_slices,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetStreamReplaySlicesResponse) Reset() { + *x = GetStreamReplaySlicesResponse{} + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetStreamReplaySlicesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetStreamReplaySlicesResponse) ProtoMessage() {} + +func (x *GetStreamReplaySlicesResponse) ProtoReflect() protoreflect.Message { + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[4] + 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 GetStreamReplaySlicesResponse.ProtoReflect.Descriptor instead. +func (*GetStreamReplaySlicesResponse) Descriptor() ([]byte, []int) { + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{4} +} + +func (x *GetStreamReplaySlicesResponse) GetStreamSlices() []*v19.StreamSlice { + if x != nil { + return x.StreamSlices + } + return nil +} + type GetMutableStateRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` Execution *v14.WorkflowExecution `protobuf:"bytes,2,opt,name=execution,proto3" json:"execution,omitempty"` ExpectedNextEventId int64 `protobuf:"varint,3,opt,name=expected_next_event_id,json=expectedNextEventId,proto3" json:"expected_next_event_id,omitempty"` CurrentBranchToken []byte `protobuf:"bytes,4,opt,name=current_branch_token,json=currentBranchToken,proto3" json:"current_branch_token,omitempty"` - VersionHistoryItem *v19.VersionHistoryItem `protobuf:"bytes,5,opt,name=version_history_item,json=versionHistoryItem,proto3" json:"version_history_item,omitempty"` - VersionedTransition *v110.VersionedTransition `protobuf:"bytes,6,opt,name=versioned_transition,json=versionedTransition,proto3" json:"versioned_transition,omitempty"` + VersionHistoryItem *v110.VersionHistoryItem `protobuf:"bytes,5,opt,name=version_history_item,json=versionHistoryItem,proto3" json:"version_history_item,omitempty"` + VersionedTransition *v111.VersionedTransition `protobuf:"bytes,6,opt,name=versioned_transition,json=versionedTransition,proto3" json:"versioned_transition,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetMutableStateRequest) Reset() { *x = GetMutableStateRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[3] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -484,7 +586,7 @@ func (x *GetMutableStateRequest) String() string { func (*GetMutableStateRequest) ProtoMessage() {} func (x *GetMutableStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[3] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -497,7 +599,7 @@ func (x *GetMutableStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMutableStateRequest.ProtoReflect.Descriptor instead. func (*GetMutableStateRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{3} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{5} } func (x *GetMutableStateRequest) GetNamespaceId() string { @@ -528,14 +630,14 @@ func (x *GetMutableStateRequest) GetCurrentBranchToken() []byte { return nil } -func (x *GetMutableStateRequest) GetVersionHistoryItem() *v19.VersionHistoryItem { +func (x *GetMutableStateRequest) GetVersionHistoryItem() *v110.VersionHistoryItem { if x != nil { return x.VersionHistoryItem } return nil } -func (x *GetMutableStateRequest) GetVersionedTransition() *v110.VersionedTransition { +func (x *GetMutableStateRequest) GetVersionedTransition() *v111.VersionedTransition { if x != nil { return x.VersionedTransition } @@ -549,16 +651,16 @@ type GetMutableStateResponse struct { NextEventId int64 `protobuf:"varint,3,opt,name=next_event_id,json=nextEventId,proto3" json:"next_event_id,omitempty"` PreviousStartedEventId int64 `protobuf:"varint,4,opt,name=previous_started_event_id,json=previousStartedEventId,proto3" json:"previous_started_event_id,omitempty"` LastFirstEventId int64 `protobuf:"varint,5,opt,name=last_first_event_id,json=lastFirstEventId,proto3" json:"last_first_event_id,omitempty"` - TaskQueue *v111.TaskQueue `protobuf:"bytes,6,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` - StickyTaskQueue *v111.TaskQueue `protobuf:"bytes,7,opt,name=sticky_task_queue,json=stickyTaskQueue,proto3" json:"sticky_task_queue,omitempty"` + TaskQueue *v112.TaskQueue `protobuf:"bytes,6,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` + StickyTaskQueue *v112.TaskQueue `protobuf:"bytes,7,opt,name=sticky_task_queue,json=stickyTaskQueue,proto3" json:"sticky_task_queue,omitempty"` // (-- api-linter: core::0140::prepositions=disabled // // aip.dev/not-precedent: "to" is used to indicate interval. --) StickyTaskQueueScheduleToStartTimeout *durationpb.Duration `protobuf:"bytes,11,opt,name=sticky_task_queue_schedule_to_start_timeout,json=stickyTaskQueueScheduleToStartTimeout,proto3" json:"sticky_task_queue_schedule_to_start_timeout,omitempty"` CurrentBranchToken []byte `protobuf:"bytes,13,opt,name=current_branch_token,json=currentBranchToken,proto3" json:"current_branch_token,omitempty"` - WorkflowState v112.WorkflowExecutionState `protobuf:"varint,15,opt,name=workflow_state,json=workflowState,proto3,enum=temporal.server.api.enums.v1.WorkflowExecutionState" json:"workflow_state,omitempty"` + WorkflowState v113.WorkflowExecutionState `protobuf:"varint,15,opt,name=workflow_state,json=workflowState,proto3,enum=temporal.server.api.enums.v1.WorkflowExecutionState" json:"workflow_state,omitempty"` WorkflowStatus v12.WorkflowExecutionStatus `protobuf:"varint,16,opt,name=workflow_status,json=workflowStatus,proto3,enum=temporal.api.enums.v1.WorkflowExecutionStatus" json:"workflow_status,omitempty"` - VersionHistories *v19.VersionHistories `protobuf:"bytes,17,opt,name=version_histories,json=versionHistories,proto3" json:"version_histories,omitempty"` + VersionHistories *v110.VersionHistories `protobuf:"bytes,17,opt,name=version_histories,json=versionHistories,proto3" json:"version_histories,omitempty"` IsStickyTaskQueueEnabled bool `protobuf:"varint,18,opt,name=is_sticky_task_queue_enabled,json=isStickyTaskQueueEnabled,proto3" json:"is_sticky_task_queue_enabled,omitempty"` LastFirstEventTxnId int64 `protobuf:"varint,19,opt,name=last_first_event_txn_id,json=lastFirstEventTxnId,proto3" json:"last_first_event_txn_id,omitempty"` FirstExecutionRunId string `protobuf:"bytes,20,opt,name=first_execution_run_id,json=firstExecutionRunId,proto3" json:"first_execution_run_id,omitempty"` @@ -569,18 +671,18 @@ type GetMutableStateResponse struct { // for this execution. AssignedBuildId string `protobuf:"bytes,22,opt,name=assigned_build_id,json=assignedBuildId,proto3" json:"assigned_build_id,omitempty"` InheritedBuildId string `protobuf:"bytes,23,opt,name=inherited_build_id,json=inheritedBuildId,proto3" json:"inherited_build_id,omitempty"` - TransitionHistory []*v110.VersionedTransition `protobuf:"bytes,24,rep,name=transition_history,json=transitionHistory,proto3" json:"transition_history,omitempty"` + TransitionHistory []*v111.VersionedTransition `protobuf:"bytes,24,rep,name=transition_history,json=transitionHistory,proto3" json:"transition_history,omitempty"` VersioningInfo *v15.WorkflowExecutionVersioningInfo `protobuf:"bytes,25,opt,name=versioning_info,json=versioningInfo,proto3" json:"versioning_info,omitempty"` // Transient or speculative workflow task events which are not yet persisted in the history. // These events should be appended to the history when it is returned to the worker. - TransientOrSpeculativeTasks *v19.TransientWorkflowTaskInfo `protobuf:"bytes,26,opt,name=transient_or_speculative_tasks,json=transientOrSpeculativeTasks,proto3" json:"transient_or_speculative_tasks,omitempty"` + TransientOrSpeculativeTasks *v110.TransientWorkflowTaskInfo `protobuf:"bytes,26,opt,name=transient_or_speculative_tasks,json=transientOrSpeculativeTasks,proto3" json:"transient_or_speculative_tasks,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetMutableStateResponse) Reset() { *x = GetMutableStateResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[4] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -592,7 +694,7 @@ func (x *GetMutableStateResponse) String() string { func (*GetMutableStateResponse) ProtoMessage() {} func (x *GetMutableStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[4] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -605,7 +707,7 @@ func (x *GetMutableStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMutableStateResponse.ProtoReflect.Descriptor instead. func (*GetMutableStateResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{4} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{6} } func (x *GetMutableStateResponse) GetExecution() *v14.WorkflowExecution { @@ -643,14 +745,14 @@ func (x *GetMutableStateResponse) GetLastFirstEventId() int64 { return 0 } -func (x *GetMutableStateResponse) GetTaskQueue() *v111.TaskQueue { +func (x *GetMutableStateResponse) GetTaskQueue() *v112.TaskQueue { if x != nil { return x.TaskQueue } return nil } -func (x *GetMutableStateResponse) GetStickyTaskQueue() *v111.TaskQueue { +func (x *GetMutableStateResponse) GetStickyTaskQueue() *v112.TaskQueue { if x != nil { return x.StickyTaskQueue } @@ -671,11 +773,11 @@ func (x *GetMutableStateResponse) GetCurrentBranchToken() []byte { return nil } -func (x *GetMutableStateResponse) GetWorkflowState() v112.WorkflowExecutionState { +func (x *GetMutableStateResponse) GetWorkflowState() v113.WorkflowExecutionState { if x != nil { return x.WorkflowState } - return v112.WorkflowExecutionState(0) + return v113.WorkflowExecutionState(0) } func (x *GetMutableStateResponse) GetWorkflowStatus() v12.WorkflowExecutionStatus { @@ -685,7 +787,7 @@ func (x *GetMutableStateResponse) GetWorkflowStatus() v12.WorkflowExecutionStatu return v12.WorkflowExecutionStatus(0) } -func (x *GetMutableStateResponse) GetVersionHistories() *v19.VersionHistories { +func (x *GetMutableStateResponse) GetVersionHistories() *v110.VersionHistories { if x != nil { return x.VersionHistories } @@ -734,7 +836,7 @@ func (x *GetMutableStateResponse) GetInheritedBuildId() string { return "" } -func (x *GetMutableStateResponse) GetTransitionHistory() []*v110.VersionedTransition { +func (x *GetMutableStateResponse) GetTransitionHistory() []*v111.VersionedTransition { if x != nil { return x.TransitionHistory } @@ -748,7 +850,7 @@ func (x *GetMutableStateResponse) GetVersioningInfo() *v15.WorkflowExecutionVers return nil } -func (x *GetMutableStateResponse) GetTransientOrSpeculativeTasks() *v19.TransientWorkflowTaskInfo { +func (x *GetMutableStateResponse) GetTransientOrSpeculativeTasks() *v110.TransientWorkflowTaskInfo { if x != nil { return x.TransientOrSpeculativeTasks } @@ -756,19 +858,19 @@ func (x *GetMutableStateResponse) GetTransientOrSpeculativeTasks() *v19.Transien } type PollMutableStateRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - Execution *v14.WorkflowExecution `protobuf:"bytes,2,opt,name=execution,proto3" json:"execution,omitempty"` - ExpectedNextEventId int64 `protobuf:"varint,3,opt,name=expected_next_event_id,json=expectedNextEventId,proto3" json:"expected_next_event_id,omitempty"` - CurrentBranchToken []byte `protobuf:"bytes,4,opt,name=current_branch_token,json=currentBranchToken,proto3" json:"current_branch_token,omitempty"` - VersionHistoryItem *v19.VersionHistoryItem `protobuf:"bytes,5,opt,name=version_history_item,json=versionHistoryItem,proto3" json:"version_history_item,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` + Execution *v14.WorkflowExecution `protobuf:"bytes,2,opt,name=execution,proto3" json:"execution,omitempty"` + ExpectedNextEventId int64 `protobuf:"varint,3,opt,name=expected_next_event_id,json=expectedNextEventId,proto3" json:"expected_next_event_id,omitempty"` + CurrentBranchToken []byte `protobuf:"bytes,4,opt,name=current_branch_token,json=currentBranchToken,proto3" json:"current_branch_token,omitempty"` + VersionHistoryItem *v110.VersionHistoryItem `protobuf:"bytes,5,opt,name=version_history_item,json=versionHistoryItem,proto3" json:"version_history_item,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PollMutableStateRequest) Reset() { *x = PollMutableStateRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[5] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -780,7 +882,7 @@ func (x *PollMutableStateRequest) String() string { func (*PollMutableStateRequest) ProtoMessage() {} func (x *PollMutableStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[5] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -793,7 +895,7 @@ func (x *PollMutableStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PollMutableStateRequest.ProtoReflect.Descriptor instead. func (*PollMutableStateRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{5} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{7} } func (x *PollMutableStateRequest) GetNamespaceId() string { @@ -824,7 +926,7 @@ func (x *PollMutableStateRequest) GetCurrentBranchToken() []byte { return nil } -func (x *PollMutableStateRequest) GetVersionHistoryItem() *v19.VersionHistoryItem { +func (x *PollMutableStateRequest) GetVersionHistoryItem() *v110.VersionHistoryItem { if x != nil { return x.VersionHistoryItem } @@ -838,15 +940,15 @@ type PollMutableStateResponse struct { NextEventId int64 `protobuf:"varint,3,opt,name=next_event_id,json=nextEventId,proto3" json:"next_event_id,omitempty"` PreviousStartedEventId int64 `protobuf:"varint,4,opt,name=previous_started_event_id,json=previousStartedEventId,proto3" json:"previous_started_event_id,omitempty"` LastFirstEventId int64 `protobuf:"varint,5,opt,name=last_first_event_id,json=lastFirstEventId,proto3" json:"last_first_event_id,omitempty"` - TaskQueue *v111.TaskQueue `protobuf:"bytes,6,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` - StickyTaskQueue *v111.TaskQueue `protobuf:"bytes,7,opt,name=sticky_task_queue,json=stickyTaskQueue,proto3" json:"sticky_task_queue,omitempty"` + TaskQueue *v112.TaskQueue `protobuf:"bytes,6,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` + StickyTaskQueue *v112.TaskQueue `protobuf:"bytes,7,opt,name=sticky_task_queue,json=stickyTaskQueue,proto3" json:"sticky_task_queue,omitempty"` // (-- api-linter: core::0140::prepositions=disabled // // aip.dev/not-precedent: "to" is used to indicate interval. --) StickyTaskQueueScheduleToStartTimeout *durationpb.Duration `protobuf:"bytes,11,opt,name=sticky_task_queue_schedule_to_start_timeout,json=stickyTaskQueueScheduleToStartTimeout,proto3" json:"sticky_task_queue_schedule_to_start_timeout,omitempty"` CurrentBranchToken []byte `protobuf:"bytes,12,opt,name=current_branch_token,json=currentBranchToken,proto3" json:"current_branch_token,omitempty"` - VersionHistories *v19.VersionHistories `protobuf:"bytes,14,opt,name=version_histories,json=versionHistories,proto3" json:"version_histories,omitempty"` - WorkflowState v112.WorkflowExecutionState `protobuf:"varint,15,opt,name=workflow_state,json=workflowState,proto3,enum=temporal.server.api.enums.v1.WorkflowExecutionState" json:"workflow_state,omitempty"` + VersionHistories *v110.VersionHistories `protobuf:"bytes,14,opt,name=version_histories,json=versionHistories,proto3" json:"version_histories,omitempty"` + WorkflowState v113.WorkflowExecutionState `protobuf:"varint,15,opt,name=workflow_state,json=workflowState,proto3,enum=temporal.server.api.enums.v1.WorkflowExecutionState" json:"workflow_state,omitempty"` WorkflowStatus v12.WorkflowExecutionStatus `protobuf:"varint,16,opt,name=workflow_status,json=workflowStatus,proto3,enum=temporal.api.enums.v1.WorkflowExecutionStatus" json:"workflow_status,omitempty"` LastFirstEventTxnId int64 `protobuf:"varint,17,opt,name=last_first_event_txn_id,json=lastFirstEventTxnId,proto3" json:"last_first_event_txn_id,omitempty"` FirstExecutionRunId string `protobuf:"bytes,18,opt,name=first_execution_run_id,json=firstExecutionRunId,proto3" json:"first_execution_run_id,omitempty"` @@ -856,7 +958,7 @@ type PollMutableStateResponse struct { func (x *PollMutableStateResponse) Reset() { *x = PollMutableStateResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[6] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -868,7 +970,7 @@ func (x *PollMutableStateResponse) String() string { func (*PollMutableStateResponse) ProtoMessage() {} func (x *PollMutableStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[6] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -881,7 +983,7 @@ func (x *PollMutableStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PollMutableStateResponse.ProtoReflect.Descriptor instead. func (*PollMutableStateResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{6} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{8} } func (x *PollMutableStateResponse) GetExecution() *v14.WorkflowExecution { @@ -919,14 +1021,14 @@ func (x *PollMutableStateResponse) GetLastFirstEventId() int64 { return 0 } -func (x *PollMutableStateResponse) GetTaskQueue() *v111.TaskQueue { +func (x *PollMutableStateResponse) GetTaskQueue() *v112.TaskQueue { if x != nil { return x.TaskQueue } return nil } -func (x *PollMutableStateResponse) GetStickyTaskQueue() *v111.TaskQueue { +func (x *PollMutableStateResponse) GetStickyTaskQueue() *v112.TaskQueue { if x != nil { return x.StickyTaskQueue } @@ -947,18 +1049,18 @@ func (x *PollMutableStateResponse) GetCurrentBranchToken() []byte { return nil } -func (x *PollMutableStateResponse) GetVersionHistories() *v19.VersionHistories { +func (x *PollMutableStateResponse) GetVersionHistories() *v110.VersionHistories { if x != nil { return x.VersionHistories } return nil } -func (x *PollMutableStateResponse) GetWorkflowState() v112.WorkflowExecutionState { +func (x *PollMutableStateResponse) GetWorkflowState() v113.WorkflowExecutionState { if x != nil { return x.WorkflowState } - return v112.WorkflowExecutionState(0) + return v113.WorkflowExecutionState(0) } func (x *PollMutableStateResponse) GetWorkflowStatus() v12.WorkflowExecutionStatus { @@ -992,7 +1094,7 @@ type ResetStickyTaskQueueRequest struct { func (x *ResetStickyTaskQueueRequest) Reset() { *x = ResetStickyTaskQueueRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[7] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1004,7 +1106,7 @@ func (x *ResetStickyTaskQueueRequest) String() string { func (*ResetStickyTaskQueueRequest) ProtoMessage() {} func (x *ResetStickyTaskQueueRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[7] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1017,7 +1119,7 @@ func (x *ResetStickyTaskQueueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetStickyTaskQueueRequest.ProtoReflect.Descriptor instead. func (*ResetStickyTaskQueueRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{7} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{9} } func (x *ResetStickyTaskQueueRequest) GetNamespaceId() string { @@ -1042,7 +1144,7 @@ type ResetStickyTaskQueueResponse struct { func (x *ResetStickyTaskQueueResponse) Reset() { *x = ResetStickyTaskQueueResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[8] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1054,7 +1156,7 @@ func (x *ResetStickyTaskQueueResponse) String() string { func (*ResetStickyTaskQueueResponse) ProtoMessage() {} func (x *ResetStickyTaskQueueResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[8] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1067,7 +1169,7 @@ func (x *ResetStickyTaskQueueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetStickyTaskQueueResponse.ProtoReflect.Descriptor instead. func (*ResetStickyTaskQueueResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{8} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{10} } type ExecuteMultiOperationRequest struct { @@ -1081,7 +1183,7 @@ type ExecuteMultiOperationRequest struct { func (x *ExecuteMultiOperationRequest) Reset() { *x = ExecuteMultiOperationRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[9] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1093,7 +1195,7 @@ func (x *ExecuteMultiOperationRequest) String() string { func (*ExecuteMultiOperationRequest) ProtoMessage() {} func (x *ExecuteMultiOperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[9] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1106,7 +1208,7 @@ func (x *ExecuteMultiOperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecuteMultiOperationRequest.ProtoReflect.Descriptor instead. func (*ExecuteMultiOperationRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{9} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{11} } func (x *ExecuteMultiOperationRequest) GetNamespaceId() string { @@ -1139,7 +1241,7 @@ type ExecuteMultiOperationResponse struct { func (x *ExecuteMultiOperationResponse) Reset() { *x = ExecuteMultiOperationResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[10] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1151,7 +1253,7 @@ func (x *ExecuteMultiOperationResponse) String() string { func (*ExecuteMultiOperationResponse) ProtoMessage() {} func (x *ExecuteMultiOperationResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[10] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1164,7 +1266,7 @@ func (x *ExecuteMultiOperationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecuteMultiOperationResponse.ProtoReflect.Descriptor instead. func (*ExecuteMultiOperationResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{10} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{12} } func (x *ExecuteMultiOperationResponse) GetResponses() []*ExecuteMultiOperationResponse_Response { @@ -1183,12 +1285,12 @@ type RecordWorkflowTaskStartedRequest struct { RequestId string `protobuf:"bytes,5,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` PollRequest *v1.PollWorkflowTaskQueueRequest `protobuf:"bytes,6,opt,name=poll_request,json=pollRequest,proto3" json:"poll_request,omitempty"` Clock *v18.VectorClock `protobuf:"bytes,7,opt,name=clock,proto3" json:"clock,omitempty"` - BuildIdRedirectInfo *v113.BuildIdRedirectInfo `protobuf:"bytes,8,opt,name=build_id_redirect_info,json=buildIdRedirectInfo,proto3" json:"build_id_redirect_info,omitempty"` + BuildIdRedirectInfo *v114.BuildIdRedirectInfo `protobuf:"bytes,8,opt,name=build_id_redirect_info,json=buildIdRedirectInfo,proto3" json:"build_id_redirect_info,omitempty"` // The deployment passed by History when the task was scheduled. // Deprecated. use `version_directive.deployment`. ScheduledDeployment *v16.Deployment `protobuf:"bytes,9,opt,name=scheduled_deployment,json=scheduledDeployment,proto3" json:"scheduled_deployment,omitempty"` // Versioning directive that was sent by history when scheduling the task. - VersionDirective *v113.TaskVersionDirective `protobuf:"bytes,10,opt,name=version_directive,json=versionDirective,proto3" json:"version_directive,omitempty"` + VersionDirective *v114.TaskVersionDirective `protobuf:"bytes,10,opt,name=version_directive,json=versionDirective,proto3" json:"version_directive,omitempty"` // Stamp value from when the workflow task was scheduled. Used to validate the task is still relevant. Stamp int32 `protobuf:"varint,11,opt,name=stamp,proto3" json:"stamp,omitempty"` // Revision number that was sent by matching when the task was dispatched. Used to resolve eventual consistency issues @@ -1204,7 +1306,7 @@ type RecordWorkflowTaskStartedRequest struct { func (x *RecordWorkflowTaskStartedRequest) Reset() { *x = RecordWorkflowTaskStartedRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[11] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1216,7 +1318,7 @@ func (x *RecordWorkflowTaskStartedRequest) String() string { func (*RecordWorkflowTaskStartedRequest) ProtoMessage() {} func (x *RecordWorkflowTaskStartedRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[11] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1229,7 +1331,7 @@ func (x *RecordWorkflowTaskStartedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RecordWorkflowTaskStartedRequest.ProtoReflect.Descriptor instead. func (*RecordWorkflowTaskStartedRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{11} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{13} } func (x *RecordWorkflowTaskStartedRequest) GetNamespaceId() string { @@ -1274,7 +1376,7 @@ func (x *RecordWorkflowTaskStartedRequest) GetClock() *v18.VectorClock { return nil } -func (x *RecordWorkflowTaskStartedRequest) GetBuildIdRedirectInfo() *v113.BuildIdRedirectInfo { +func (x *RecordWorkflowTaskStartedRequest) GetBuildIdRedirectInfo() *v114.BuildIdRedirectInfo { if x != nil { return x.BuildIdRedirectInfo } @@ -1288,7 +1390,7 @@ func (x *RecordWorkflowTaskStartedRequest) GetScheduledDeployment() *v16.Deploym return nil } -func (x *RecordWorkflowTaskStartedRequest) GetVersionDirective() *v113.TaskVersionDirective { +func (x *RecordWorkflowTaskStartedRequest) GetVersionDirective() *v114.TaskVersionDirective { if x != nil { return x.VersionDirective } @@ -1317,25 +1419,25 @@ func (x *RecordWorkflowTaskStartedRequest) GetTargetDeploymentVersion() *v16.Wor } type RecordWorkflowTaskStartedResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - WorkflowType *v14.WorkflowType `protobuf:"bytes,1,opt,name=workflow_type,json=workflowType,proto3" json:"workflow_type,omitempty"` - PreviousStartedEventId int64 `protobuf:"varint,2,opt,name=previous_started_event_id,json=previousStartedEventId,proto3" json:"previous_started_event_id,omitempty"` - ScheduledEventId int64 `protobuf:"varint,3,opt,name=scheduled_event_id,json=scheduledEventId,proto3" json:"scheduled_event_id,omitempty"` - StartedEventId int64 `protobuf:"varint,4,opt,name=started_event_id,json=startedEventId,proto3" json:"started_event_id,omitempty"` - NextEventId int64 `protobuf:"varint,5,opt,name=next_event_id,json=nextEventId,proto3" json:"next_event_id,omitempty"` - Attempt int32 `protobuf:"varint,6,opt,name=attempt,proto3" json:"attempt,omitempty"` - StickyExecutionEnabled bool `protobuf:"varint,7,opt,name=sticky_execution_enabled,json=stickyExecutionEnabled,proto3" json:"sticky_execution_enabled,omitempty"` - TransientWorkflowTask *v19.TransientWorkflowTaskInfo `protobuf:"bytes,8,opt,name=transient_workflow_task,json=transientWorkflowTask,proto3" json:"transient_workflow_task,omitempty"` - WorkflowExecutionTaskQueue *v111.TaskQueue `protobuf:"bytes,9,opt,name=workflow_execution_task_queue,json=workflowExecutionTaskQueue,proto3" json:"workflow_execution_task_queue,omitempty"` - BranchToken []byte `protobuf:"bytes,11,opt,name=branch_token,json=branchToken,proto3" json:"branch_token,omitempty"` - ScheduledTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=scheduled_time,json=scheduledTime,proto3" json:"scheduled_time,omitempty"` - StartedTime *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=started_time,json=startedTime,proto3" json:"started_time,omitempty"` - Queries map[string]*v114.WorkflowQuery `protobuf:"bytes,14,rep,name=queries,proto3" json:"queries,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - Clock *v18.VectorClock `protobuf:"bytes,15,opt,name=clock,proto3" json:"clock,omitempty"` - Messages []*v115.Message `protobuf:"bytes,16,rep,name=messages,proto3" json:"messages,omitempty"` - Version int64 `protobuf:"varint,17,opt,name=version,proto3" json:"version,omitempty"` - History *v17.History `protobuf:"bytes,18,opt,name=history,proto3" json:"history,omitempty"` - NextPageToken []byte `protobuf:"bytes,19,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + WorkflowType *v14.WorkflowType `protobuf:"bytes,1,opt,name=workflow_type,json=workflowType,proto3" json:"workflow_type,omitempty"` + PreviousStartedEventId int64 `protobuf:"varint,2,opt,name=previous_started_event_id,json=previousStartedEventId,proto3" json:"previous_started_event_id,omitempty"` + ScheduledEventId int64 `protobuf:"varint,3,opt,name=scheduled_event_id,json=scheduledEventId,proto3" json:"scheduled_event_id,omitempty"` + StartedEventId int64 `protobuf:"varint,4,opt,name=started_event_id,json=startedEventId,proto3" json:"started_event_id,omitempty"` + NextEventId int64 `protobuf:"varint,5,opt,name=next_event_id,json=nextEventId,proto3" json:"next_event_id,omitempty"` + Attempt int32 `protobuf:"varint,6,opt,name=attempt,proto3" json:"attempt,omitempty"` + StickyExecutionEnabled bool `protobuf:"varint,7,opt,name=sticky_execution_enabled,json=stickyExecutionEnabled,proto3" json:"sticky_execution_enabled,omitempty"` + TransientWorkflowTask *v110.TransientWorkflowTaskInfo `protobuf:"bytes,8,opt,name=transient_workflow_task,json=transientWorkflowTask,proto3" json:"transient_workflow_task,omitempty"` + WorkflowExecutionTaskQueue *v112.TaskQueue `protobuf:"bytes,9,opt,name=workflow_execution_task_queue,json=workflowExecutionTaskQueue,proto3" json:"workflow_execution_task_queue,omitempty"` + BranchToken []byte `protobuf:"bytes,11,opt,name=branch_token,json=branchToken,proto3" json:"branch_token,omitempty"` + ScheduledTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=scheduled_time,json=scheduledTime,proto3" json:"scheduled_time,omitempty"` + StartedTime *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=started_time,json=startedTime,proto3" json:"started_time,omitempty"` + Queries map[string]*v115.WorkflowQuery `protobuf:"bytes,14,rep,name=queries,proto3" json:"queries,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Clock *v18.VectorClock `protobuf:"bytes,15,opt,name=clock,proto3" json:"clock,omitempty"` + Messages []*v116.Message `protobuf:"bytes,16,rep,name=messages,proto3" json:"messages,omitempty"` + Version int64 `protobuf:"varint,17,opt,name=version,proto3" json:"version,omitempty"` + History *v17.History `protobuf:"bytes,18,opt,name=history,proto3" json:"history,omitempty"` + NextPageToken []byte `protobuf:"bytes,19,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` // Deprecated: This field is being replaced by raw_history_bytes which sends raw bytes // instead of a proto-decoded History. This avoids matching service having to decode history. // TODO: PRATHYUSH @@ -1353,13 +1455,17 @@ type RecordWorkflowTaskStartedResponse struct { // Deprecated: Marked as deprecated in temporal/server/api/historyservice/v1/request_response.proto. RawHistory *v17.History `protobuf:"bytes,20,opt,name=raw_history,json=rawHistory,proto3" json:"raw_history,omitempty"` RawHistoryBytes [][]byte `protobuf:"bytes,21,rep,name=raw_history_bytes,json=rawHistoryBytes,proto3" json:"raw_history_bytes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Slices of the streams this Workflow is consuming, each covering the offset + // range the task may deliver. Payloads ride here and never enter History; + // only the consumed range is recorded, on WorkflowTaskCompleted. + StreamSlices []*v19.StreamSlice `protobuf:"bytes,22,rep,name=stream_slices,json=streamSlices,proto3" json:"stream_slices,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RecordWorkflowTaskStartedResponse) Reset() { *x = RecordWorkflowTaskStartedResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[12] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1371,7 +1477,7 @@ func (x *RecordWorkflowTaskStartedResponse) String() string { func (*RecordWorkflowTaskStartedResponse) ProtoMessage() {} func (x *RecordWorkflowTaskStartedResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[12] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1384,7 +1490,7 @@ func (x *RecordWorkflowTaskStartedResponse) ProtoReflect() protoreflect.Message // Deprecated: Use RecordWorkflowTaskStartedResponse.ProtoReflect.Descriptor instead. func (*RecordWorkflowTaskStartedResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{12} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{14} } func (x *RecordWorkflowTaskStartedResponse) GetWorkflowType() *v14.WorkflowType { @@ -1436,14 +1542,14 @@ func (x *RecordWorkflowTaskStartedResponse) GetStickyExecutionEnabled() bool { return false } -func (x *RecordWorkflowTaskStartedResponse) GetTransientWorkflowTask() *v19.TransientWorkflowTaskInfo { +func (x *RecordWorkflowTaskStartedResponse) GetTransientWorkflowTask() *v110.TransientWorkflowTaskInfo { if x != nil { return x.TransientWorkflowTask } return nil } -func (x *RecordWorkflowTaskStartedResponse) GetWorkflowExecutionTaskQueue() *v111.TaskQueue { +func (x *RecordWorkflowTaskStartedResponse) GetWorkflowExecutionTaskQueue() *v112.TaskQueue { if x != nil { return x.WorkflowExecutionTaskQueue } @@ -1471,7 +1577,7 @@ func (x *RecordWorkflowTaskStartedResponse) GetStartedTime() *timestamppb.Timest return nil } -func (x *RecordWorkflowTaskStartedResponse) GetQueries() map[string]*v114.WorkflowQuery { +func (x *RecordWorkflowTaskStartedResponse) GetQueries() map[string]*v115.WorkflowQuery { if x != nil { return x.Queries } @@ -1485,7 +1591,7 @@ func (x *RecordWorkflowTaskStartedResponse) GetClock() *v18.VectorClock { return nil } -func (x *RecordWorkflowTaskStartedResponse) GetMessages() []*v115.Message { +func (x *RecordWorkflowTaskStartedResponse) GetMessages() []*v116.Message { if x != nil { return x.Messages } @@ -1528,6 +1634,13 @@ func (x *RecordWorkflowTaskStartedResponse) GetRawHistoryBytes() [][]byte { return nil } +func (x *RecordWorkflowTaskStartedResponse) GetStreamSlices() []*v19.StreamSlice { + if x != nil { + return x.StreamSlices + } + return nil +} + // RecordWorkflowTaskStartedResponseWithRawHistory is wire-compatible with RecordWorkflowTaskStartedResponse. // // WIRE COMPATIBILITY PATTERN: @@ -1547,38 +1660,42 @@ func (x *RecordWorkflowTaskStartedResponse) GetRawHistoryBytes() [][]byte { // IMPORTANT: Field numbers and all other fields must remain identical between these two messages. // Any change to RecordWorkflowTaskStartedResponse must be mirrored here. type RecordWorkflowTaskStartedResponseWithRawHistory struct { - state protoimpl.MessageState `protogen:"open.v1"` - WorkflowType *v14.WorkflowType `protobuf:"bytes,1,opt,name=workflow_type,json=workflowType,proto3" json:"workflow_type,omitempty"` - PreviousStartedEventId int64 `protobuf:"varint,2,opt,name=previous_started_event_id,json=previousStartedEventId,proto3" json:"previous_started_event_id,omitempty"` - ScheduledEventId int64 `protobuf:"varint,3,opt,name=scheduled_event_id,json=scheduledEventId,proto3" json:"scheduled_event_id,omitempty"` - StartedEventId int64 `protobuf:"varint,4,opt,name=started_event_id,json=startedEventId,proto3" json:"started_event_id,omitempty"` - NextEventId int64 `protobuf:"varint,5,opt,name=next_event_id,json=nextEventId,proto3" json:"next_event_id,omitempty"` - Attempt int32 `protobuf:"varint,6,opt,name=attempt,proto3" json:"attempt,omitempty"` - StickyExecutionEnabled bool `protobuf:"varint,7,opt,name=sticky_execution_enabled,json=stickyExecutionEnabled,proto3" json:"sticky_execution_enabled,omitempty"` - TransientWorkflowTask *v19.TransientWorkflowTaskInfo `protobuf:"bytes,8,opt,name=transient_workflow_task,json=transientWorkflowTask,proto3" json:"transient_workflow_task,omitempty"` - WorkflowExecutionTaskQueue *v111.TaskQueue `protobuf:"bytes,9,opt,name=workflow_execution_task_queue,json=workflowExecutionTaskQueue,proto3" json:"workflow_execution_task_queue,omitempty"` - BranchToken []byte `protobuf:"bytes,11,opt,name=branch_token,json=branchToken,proto3" json:"branch_token,omitempty"` - ScheduledTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=scheduled_time,json=scheduledTime,proto3" json:"scheduled_time,omitempty"` - StartedTime *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=started_time,json=startedTime,proto3" json:"started_time,omitempty"` - Queries map[string]*v114.WorkflowQuery `protobuf:"bytes,14,rep,name=queries,proto3" json:"queries,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - Clock *v18.VectorClock `protobuf:"bytes,15,opt,name=clock,proto3" json:"clock,omitempty"` - Messages []*v115.Message `protobuf:"bytes,16,rep,name=messages,proto3" json:"messages,omitempty"` - Version int64 `protobuf:"varint,17,opt,name=version,proto3" json:"version,omitempty"` - History *v17.History `protobuf:"bytes,18,opt,name=history,proto3" json:"history,omitempty"` - NextPageToken []byte `protobuf:"bytes,19,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + WorkflowType *v14.WorkflowType `protobuf:"bytes,1,opt,name=workflow_type,json=workflowType,proto3" json:"workflow_type,omitempty"` + PreviousStartedEventId int64 `protobuf:"varint,2,opt,name=previous_started_event_id,json=previousStartedEventId,proto3" json:"previous_started_event_id,omitempty"` + ScheduledEventId int64 `protobuf:"varint,3,opt,name=scheduled_event_id,json=scheduledEventId,proto3" json:"scheduled_event_id,omitempty"` + StartedEventId int64 `protobuf:"varint,4,opt,name=started_event_id,json=startedEventId,proto3" json:"started_event_id,omitempty"` + NextEventId int64 `protobuf:"varint,5,opt,name=next_event_id,json=nextEventId,proto3" json:"next_event_id,omitempty"` + Attempt int32 `protobuf:"varint,6,opt,name=attempt,proto3" json:"attempt,omitempty"` + StickyExecutionEnabled bool `protobuf:"varint,7,opt,name=sticky_execution_enabled,json=stickyExecutionEnabled,proto3" json:"sticky_execution_enabled,omitempty"` + TransientWorkflowTask *v110.TransientWorkflowTaskInfo `protobuf:"bytes,8,opt,name=transient_workflow_task,json=transientWorkflowTask,proto3" json:"transient_workflow_task,omitempty"` + WorkflowExecutionTaskQueue *v112.TaskQueue `protobuf:"bytes,9,opt,name=workflow_execution_task_queue,json=workflowExecutionTaskQueue,proto3" json:"workflow_execution_task_queue,omitempty"` + BranchToken []byte `protobuf:"bytes,11,opt,name=branch_token,json=branchToken,proto3" json:"branch_token,omitempty"` + ScheduledTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=scheduled_time,json=scheduledTime,proto3" json:"scheduled_time,omitempty"` + StartedTime *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=started_time,json=startedTime,proto3" json:"started_time,omitempty"` + Queries map[string]*v115.WorkflowQuery `protobuf:"bytes,14,rep,name=queries,proto3" json:"queries,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Clock *v18.VectorClock `protobuf:"bytes,15,opt,name=clock,proto3" json:"clock,omitempty"` + Messages []*v116.Message `protobuf:"bytes,16,rep,name=messages,proto3" json:"messages,omitempty"` + Version int64 `protobuf:"varint,17,opt,name=version,proto3" json:"version,omitempty"` + History *v17.History `protobuf:"bytes,18,opt,name=history,proto3" json:"history,omitempty"` + NextPageToken []byte `protobuf:"bytes,19,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` // Deprecated: This field is being replaced by raw_history_bytes which sends raw bytes // instead of a proto-decoded History. This avoids matching service having to decode history. // // Deprecated: Marked as deprecated in temporal/server/api/historyservice/v1/request_response.proto. RawHistory [][]byte `protobuf:"bytes,20,rep,name=raw_history,json=rawHistory,proto3" json:"raw_history,omitempty"` RawHistoryBytes [][]byte `protobuf:"bytes,21,rep,name=raw_history_bytes,json=rawHistoryBytes,proto3" json:"raw_history_bytes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Slices of the streams this Workflow is consuming, each covering the offset + // range the task may deliver. Payloads ride here and never enter History; + // only the consumed range is recorded, on WorkflowTaskCompleted. + StreamSlices []*v19.StreamSlice `protobuf:"bytes,22,rep,name=stream_slices,json=streamSlices,proto3" json:"stream_slices,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RecordWorkflowTaskStartedResponseWithRawHistory) Reset() { *x = RecordWorkflowTaskStartedResponseWithRawHistory{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[13] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1590,7 +1707,7 @@ func (x *RecordWorkflowTaskStartedResponseWithRawHistory) String() string { func (*RecordWorkflowTaskStartedResponseWithRawHistory) ProtoMessage() {} func (x *RecordWorkflowTaskStartedResponseWithRawHistory) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[13] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1603,7 +1720,7 @@ func (x *RecordWorkflowTaskStartedResponseWithRawHistory) ProtoReflect() protore // Deprecated: Use RecordWorkflowTaskStartedResponseWithRawHistory.ProtoReflect.Descriptor instead. func (*RecordWorkflowTaskStartedResponseWithRawHistory) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{13} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{15} } func (x *RecordWorkflowTaskStartedResponseWithRawHistory) GetWorkflowType() *v14.WorkflowType { @@ -1655,14 +1772,14 @@ func (x *RecordWorkflowTaskStartedResponseWithRawHistory) GetStickyExecutionEnab return false } -func (x *RecordWorkflowTaskStartedResponseWithRawHistory) GetTransientWorkflowTask() *v19.TransientWorkflowTaskInfo { +func (x *RecordWorkflowTaskStartedResponseWithRawHistory) GetTransientWorkflowTask() *v110.TransientWorkflowTaskInfo { if x != nil { return x.TransientWorkflowTask } return nil } -func (x *RecordWorkflowTaskStartedResponseWithRawHistory) GetWorkflowExecutionTaskQueue() *v111.TaskQueue { +func (x *RecordWorkflowTaskStartedResponseWithRawHistory) GetWorkflowExecutionTaskQueue() *v112.TaskQueue { if x != nil { return x.WorkflowExecutionTaskQueue } @@ -1690,7 +1807,7 @@ func (x *RecordWorkflowTaskStartedResponseWithRawHistory) GetStartedTime() *time return nil } -func (x *RecordWorkflowTaskStartedResponseWithRawHistory) GetQueries() map[string]*v114.WorkflowQuery { +func (x *RecordWorkflowTaskStartedResponseWithRawHistory) GetQueries() map[string]*v115.WorkflowQuery { if x != nil { return x.Queries } @@ -1704,7 +1821,7 @@ func (x *RecordWorkflowTaskStartedResponseWithRawHistory) GetClock() *v18.Vector return nil } -func (x *RecordWorkflowTaskStartedResponseWithRawHistory) GetMessages() []*v115.Message { +func (x *RecordWorkflowTaskStartedResponseWithRawHistory) GetMessages() []*v116.Message { if x != nil { return x.Messages } @@ -1747,6 +1864,13 @@ func (x *RecordWorkflowTaskStartedResponseWithRawHistory) GetRawHistoryBytes() [ return nil } +func (x *RecordWorkflowTaskStartedResponseWithRawHistory) GetStreamSlices() []*v19.StreamSlice { + if x != nil { + return x.StreamSlices + } + return nil +} + type RecordActivityTaskStartedRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` @@ -1756,14 +1880,14 @@ type RecordActivityTaskStartedRequest struct { RequestId string `protobuf:"bytes,5,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` PollRequest *v1.PollActivityTaskQueueRequest `protobuf:"bytes,6,opt,name=poll_request,json=pollRequest,proto3" json:"poll_request,omitempty"` Clock *v18.VectorClock `protobuf:"bytes,7,opt,name=clock,proto3" json:"clock,omitempty"` - BuildIdRedirectInfo *v113.BuildIdRedirectInfo `protobuf:"bytes,8,opt,name=build_id_redirect_info,json=buildIdRedirectInfo,proto3" json:"build_id_redirect_info,omitempty"` + BuildIdRedirectInfo *v114.BuildIdRedirectInfo `protobuf:"bytes,8,opt,name=build_id_redirect_info,json=buildIdRedirectInfo,proto3" json:"build_id_redirect_info,omitempty"` // Stamp represents the internal “version” of the activity options and can/will be changed with Activity API. Stamp int32 `protobuf:"varint,9,opt,name=stamp,proto3" json:"stamp,omitempty"` // The deployment passed by History when the task was scheduled. // Deprecated. use `version_directive.deployment`. ScheduledDeployment *v16.Deployment `protobuf:"bytes,10,opt,name=scheduled_deployment,json=scheduledDeployment,proto3" json:"scheduled_deployment,omitempty"` // Versioning directive that was sent by history when scheduling the task. - VersionDirective *v113.TaskVersionDirective `protobuf:"bytes,12,opt,name=version_directive,json=versionDirective,proto3" json:"version_directive,omitempty"` + VersionDirective *v114.TaskVersionDirective `protobuf:"bytes,12,opt,name=version_directive,json=versionDirective,proto3" json:"version_directive,omitempty"` // Revision number that was sent by matching when the task was dispatched. Used to resolve eventual consistency issues // that may arise due to stale routing configs in task queue partitions. TaskDispatchRevisionNumber int64 `protobuf:"varint,13,opt,name=task_dispatch_revision_number,json=taskDispatchRevisionNumber,proto3" json:"task_dispatch_revision_number,omitempty"` @@ -1777,7 +1901,7 @@ type RecordActivityTaskStartedRequest struct { func (x *RecordActivityTaskStartedRequest) Reset() { *x = RecordActivityTaskStartedRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[14] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1789,7 +1913,7 @@ func (x *RecordActivityTaskStartedRequest) String() string { func (*RecordActivityTaskStartedRequest) ProtoMessage() {} func (x *RecordActivityTaskStartedRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[14] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1802,7 +1926,7 @@ func (x *RecordActivityTaskStartedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RecordActivityTaskStartedRequest.ProtoReflect.Descriptor instead. func (*RecordActivityTaskStartedRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{14} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{16} } func (x *RecordActivityTaskStartedRequest) GetNamespaceId() string { @@ -1847,7 +1971,7 @@ func (x *RecordActivityTaskStartedRequest) GetClock() *v18.VectorClock { return nil } -func (x *RecordActivityTaskStartedRequest) GetBuildIdRedirectInfo() *v113.BuildIdRedirectInfo { +func (x *RecordActivityTaskStartedRequest) GetBuildIdRedirectInfo() *v114.BuildIdRedirectInfo { if x != nil { return x.BuildIdRedirectInfo } @@ -1868,7 +1992,7 @@ func (x *RecordActivityTaskStartedRequest) GetScheduledDeployment() *v16.Deploym return nil } -func (x *RecordActivityTaskStartedRequest) GetVersionDirective() *v113.TaskVersionDirective { +func (x *RecordActivityTaskStartedRequest) GetVersionDirective() *v114.TaskVersionDirective { if x != nil { return x.VersionDirective } @@ -1911,7 +2035,7 @@ type RecordActivityTaskStartedResponse struct { func (x *RecordActivityTaskStartedResponse) Reset() { *x = RecordActivityTaskStartedResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[15] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1923,7 +2047,7 @@ func (x *RecordActivityTaskStartedResponse) String() string { func (*RecordActivityTaskStartedResponse) ProtoMessage() {} func (x *RecordActivityTaskStartedResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[15] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1936,7 +2060,7 @@ func (x *RecordActivityTaskStartedResponse) ProtoReflect() protoreflect.Message // Deprecated: Use RecordActivityTaskStartedResponse.ProtoReflect.Descriptor instead. func (*RecordActivityTaskStartedResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{15} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{17} } func (x *RecordActivityTaskStartedResponse) GetScheduledEvent() *v17.HistoryEvent { @@ -2040,7 +2164,7 @@ type RespondWorkflowTaskCompletedRequest struct { func (x *RespondWorkflowTaskCompletedRequest) Reset() { *x = RespondWorkflowTaskCompletedRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[16] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2052,7 +2176,7 @@ func (x *RespondWorkflowTaskCompletedRequest) String() string { func (*RespondWorkflowTaskCompletedRequest) ProtoMessage() {} func (x *RespondWorkflowTaskCompletedRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[16] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2065,7 +2189,7 @@ func (x *RespondWorkflowTaskCompletedRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use RespondWorkflowTaskCompletedRequest.ProtoReflect.Descriptor instead. func (*RespondWorkflowTaskCompletedRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{16} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{18} } func (x *RespondWorkflowTaskCompletedRequest) GetNamespaceId() string { @@ -2095,7 +2219,7 @@ type RespondWorkflowTaskCompletedResponse struct { func (x *RespondWorkflowTaskCompletedResponse) Reset() { *x = RespondWorkflowTaskCompletedResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[17] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2107,7 +2231,7 @@ func (x *RespondWorkflowTaskCompletedResponse) String() string { func (*RespondWorkflowTaskCompletedResponse) ProtoMessage() {} func (x *RespondWorkflowTaskCompletedResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[17] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2120,7 +2244,7 @@ func (x *RespondWorkflowTaskCompletedResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use RespondWorkflowTaskCompletedResponse.ProtoReflect.Descriptor instead. func (*RespondWorkflowTaskCompletedResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{17} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{19} } // Deprecated: Marked as deprecated in temporal/server/api/historyservice/v1/request_response.proto. @@ -2162,7 +2286,7 @@ type RespondWorkflowTaskFailedRequest struct { func (x *RespondWorkflowTaskFailedRequest) Reset() { *x = RespondWorkflowTaskFailedRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[18] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2174,7 +2298,7 @@ func (x *RespondWorkflowTaskFailedRequest) String() string { func (*RespondWorkflowTaskFailedRequest) ProtoMessage() {} func (x *RespondWorkflowTaskFailedRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[18] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2187,7 +2311,7 @@ func (x *RespondWorkflowTaskFailedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RespondWorkflowTaskFailedRequest.ProtoReflect.Descriptor instead. func (*RespondWorkflowTaskFailedRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{18} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{20} } func (x *RespondWorkflowTaskFailedRequest) GetNamespaceId() string { @@ -2212,7 +2336,7 @@ type RespondWorkflowTaskFailedResponse struct { func (x *RespondWorkflowTaskFailedResponse) Reset() { *x = RespondWorkflowTaskFailedResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[19] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2224,7 +2348,7 @@ func (x *RespondWorkflowTaskFailedResponse) String() string { func (*RespondWorkflowTaskFailedResponse) ProtoMessage() {} func (x *RespondWorkflowTaskFailedResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[19] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2237,7 +2361,7 @@ func (x *RespondWorkflowTaskFailedResponse) ProtoReflect() protoreflect.Message // Deprecated: Use RespondWorkflowTaskFailedResponse.ProtoReflect.Descriptor instead. func (*RespondWorkflowTaskFailedResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{19} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{21} } type IsWorkflowTaskValidRequest struct { @@ -2253,7 +2377,7 @@ type IsWorkflowTaskValidRequest struct { func (x *IsWorkflowTaskValidRequest) Reset() { *x = IsWorkflowTaskValidRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[20] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2265,7 +2389,7 @@ func (x *IsWorkflowTaskValidRequest) String() string { func (*IsWorkflowTaskValidRequest) ProtoMessage() {} func (x *IsWorkflowTaskValidRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[20] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2278,7 +2402,7 @@ func (x *IsWorkflowTaskValidRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use IsWorkflowTaskValidRequest.ProtoReflect.Descriptor instead. func (*IsWorkflowTaskValidRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{20} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{22} } func (x *IsWorkflowTaskValidRequest) GetNamespaceId() string { @@ -2326,7 +2450,7 @@ type IsWorkflowTaskValidResponse struct { func (x *IsWorkflowTaskValidResponse) Reset() { *x = IsWorkflowTaskValidResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[21] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2338,7 +2462,7 @@ func (x *IsWorkflowTaskValidResponse) String() string { func (*IsWorkflowTaskValidResponse) ProtoMessage() {} func (x *IsWorkflowTaskValidResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[21] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2351,7 +2475,7 @@ func (x *IsWorkflowTaskValidResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use IsWorkflowTaskValidResponse.ProtoReflect.Descriptor instead. func (*IsWorkflowTaskValidResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{21} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{23} } func (x *IsWorkflowTaskValidResponse) GetIsValid() bool { @@ -2371,7 +2495,7 @@ type RecordActivityTaskHeartbeatRequest struct { func (x *RecordActivityTaskHeartbeatRequest) Reset() { *x = RecordActivityTaskHeartbeatRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[22] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2383,7 +2507,7 @@ func (x *RecordActivityTaskHeartbeatRequest) String() string { func (*RecordActivityTaskHeartbeatRequest) ProtoMessage() {} func (x *RecordActivityTaskHeartbeatRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[22] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2396,7 +2520,7 @@ func (x *RecordActivityTaskHeartbeatRequest) ProtoReflect() protoreflect.Message // Deprecated: Use RecordActivityTaskHeartbeatRequest.ProtoReflect.Descriptor instead. func (*RecordActivityTaskHeartbeatRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{22} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{24} } func (x *RecordActivityTaskHeartbeatRequest) GetNamespaceId() string { @@ -2424,7 +2548,7 @@ type RecordActivityTaskHeartbeatResponse struct { func (x *RecordActivityTaskHeartbeatResponse) Reset() { *x = RecordActivityTaskHeartbeatResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[23] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2436,7 +2560,7 @@ func (x *RecordActivityTaskHeartbeatResponse) String() string { func (*RecordActivityTaskHeartbeatResponse) ProtoMessage() {} func (x *RecordActivityTaskHeartbeatResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[23] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2449,7 +2573,7 @@ func (x *RecordActivityTaskHeartbeatResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use RecordActivityTaskHeartbeatResponse.ProtoReflect.Descriptor instead. func (*RecordActivityTaskHeartbeatResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{23} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{25} } func (x *RecordActivityTaskHeartbeatResponse) GetCancelRequested() bool { @@ -2483,7 +2607,7 @@ type RespondActivityTaskCompletedRequest struct { func (x *RespondActivityTaskCompletedRequest) Reset() { *x = RespondActivityTaskCompletedRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[24] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2495,7 +2619,7 @@ func (x *RespondActivityTaskCompletedRequest) String() string { func (*RespondActivityTaskCompletedRequest) ProtoMessage() {} func (x *RespondActivityTaskCompletedRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[24] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2508,7 +2632,7 @@ func (x *RespondActivityTaskCompletedRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use RespondActivityTaskCompletedRequest.ProtoReflect.Descriptor instead. func (*RespondActivityTaskCompletedRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{24} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{26} } func (x *RespondActivityTaskCompletedRequest) GetNamespaceId() string { @@ -2533,7 +2657,7 @@ type RespondActivityTaskCompletedResponse struct { func (x *RespondActivityTaskCompletedResponse) Reset() { *x = RespondActivityTaskCompletedResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[25] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2545,7 +2669,7 @@ func (x *RespondActivityTaskCompletedResponse) String() string { func (*RespondActivityTaskCompletedResponse) ProtoMessage() {} func (x *RespondActivityTaskCompletedResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[25] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2558,7 +2682,7 @@ func (x *RespondActivityTaskCompletedResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use RespondActivityTaskCompletedResponse.ProtoReflect.Descriptor instead. func (*RespondActivityTaskCompletedResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{25} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{27} } type RespondActivityTaskFailedRequest struct { @@ -2571,7 +2695,7 @@ type RespondActivityTaskFailedRequest struct { func (x *RespondActivityTaskFailedRequest) Reset() { *x = RespondActivityTaskFailedRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[26] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2583,7 +2707,7 @@ func (x *RespondActivityTaskFailedRequest) String() string { func (*RespondActivityTaskFailedRequest) ProtoMessage() {} func (x *RespondActivityTaskFailedRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[26] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2596,7 +2720,7 @@ func (x *RespondActivityTaskFailedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RespondActivityTaskFailedRequest.ProtoReflect.Descriptor instead. func (*RespondActivityTaskFailedRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{26} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{28} } func (x *RespondActivityTaskFailedRequest) GetNamespaceId() string { @@ -2621,7 +2745,7 @@ type RespondActivityTaskFailedResponse struct { func (x *RespondActivityTaskFailedResponse) Reset() { *x = RespondActivityTaskFailedResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[27] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2633,7 +2757,7 @@ func (x *RespondActivityTaskFailedResponse) String() string { func (*RespondActivityTaskFailedResponse) ProtoMessage() {} func (x *RespondActivityTaskFailedResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[27] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2646,7 +2770,7 @@ func (x *RespondActivityTaskFailedResponse) ProtoReflect() protoreflect.Message // Deprecated: Use RespondActivityTaskFailedResponse.ProtoReflect.Descriptor instead. func (*RespondActivityTaskFailedResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{27} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{29} } type RespondActivityTaskCanceledRequest struct { @@ -2659,7 +2783,7 @@ type RespondActivityTaskCanceledRequest struct { func (x *RespondActivityTaskCanceledRequest) Reset() { *x = RespondActivityTaskCanceledRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[28] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2671,7 +2795,7 @@ func (x *RespondActivityTaskCanceledRequest) String() string { func (*RespondActivityTaskCanceledRequest) ProtoMessage() {} func (x *RespondActivityTaskCanceledRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[28] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2684,7 +2808,7 @@ func (x *RespondActivityTaskCanceledRequest) ProtoReflect() protoreflect.Message // Deprecated: Use RespondActivityTaskCanceledRequest.ProtoReflect.Descriptor instead. func (*RespondActivityTaskCanceledRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{28} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{30} } func (x *RespondActivityTaskCanceledRequest) GetNamespaceId() string { @@ -2709,7 +2833,7 @@ type RespondActivityTaskCanceledResponse struct { func (x *RespondActivityTaskCanceledResponse) Reset() { *x = RespondActivityTaskCanceledResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[29] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2721,7 +2845,7 @@ func (x *RespondActivityTaskCanceledResponse) String() string { func (*RespondActivityTaskCanceledResponse) ProtoMessage() {} func (x *RespondActivityTaskCanceledResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[29] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2734,7 +2858,7 @@ func (x *RespondActivityTaskCanceledResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use RespondActivityTaskCanceledResponse.ProtoReflect.Descriptor instead. func (*RespondActivityTaskCanceledResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{29} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{31} } type IsActivityTaskValidRequest struct { @@ -2751,7 +2875,7 @@ type IsActivityTaskValidRequest struct { func (x *IsActivityTaskValidRequest) Reset() { *x = IsActivityTaskValidRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[30] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2763,7 +2887,7 @@ func (x *IsActivityTaskValidRequest) String() string { func (*IsActivityTaskValidRequest) ProtoMessage() {} func (x *IsActivityTaskValidRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[30] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2776,7 +2900,7 @@ func (x *IsActivityTaskValidRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use IsActivityTaskValidRequest.ProtoReflect.Descriptor instead. func (*IsActivityTaskValidRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{30} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{32} } func (x *IsActivityTaskValidRequest) GetNamespaceId() string { @@ -2824,7 +2948,7 @@ type IsActivityTaskValidResponse struct { func (x *IsActivityTaskValidResponse) Reset() { *x = IsActivityTaskValidResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[31] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2836,7 +2960,7 @@ func (x *IsActivityTaskValidResponse) String() string { func (*IsActivityTaskValidResponse) ProtoMessage() {} func (x *IsActivityTaskValidResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[31] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2849,7 +2973,7 @@ func (x *IsActivityTaskValidResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use IsActivityTaskValidResponse.ProtoReflect.Descriptor instead. func (*IsActivityTaskValidResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{31} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{33} } func (x *IsActivityTaskValidResponse) GetIsValid() bool { @@ -2871,7 +2995,7 @@ type SignalWorkflowExecutionRequest struct { func (x *SignalWorkflowExecutionRequest) Reset() { *x = SignalWorkflowExecutionRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[32] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2883,7 +3007,7 @@ func (x *SignalWorkflowExecutionRequest) String() string { func (*SignalWorkflowExecutionRequest) ProtoMessage() {} func (x *SignalWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[32] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2896,7 +3020,7 @@ func (x *SignalWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SignalWorkflowExecutionRequest.ProtoReflect.Descriptor instead. func (*SignalWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{32} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{34} } func (x *SignalWorkflowExecutionRequest) GetNamespaceId() string { @@ -2936,7 +3060,7 @@ type SignalWorkflowExecutionResponse struct { func (x *SignalWorkflowExecutionResponse) Reset() { *x = SignalWorkflowExecutionResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[33] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2948,7 +3072,7 @@ func (x *SignalWorkflowExecutionResponse) String() string { func (*SignalWorkflowExecutionResponse) ProtoMessage() {} func (x *SignalWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[33] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2961,7 +3085,7 @@ func (x *SignalWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SignalWorkflowExecutionResponse.ProtoReflect.Descriptor instead. func (*SignalWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{33} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{35} } func (x *SignalWorkflowExecutionResponse) GetLink() *v14.Link { @@ -2984,7 +3108,7 @@ type SignalWithStartWorkflowExecutionRequest struct { func (x *SignalWithStartWorkflowExecutionRequest) Reset() { *x = SignalWithStartWorkflowExecutionRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[34] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2996,7 +3120,7 @@ func (x *SignalWithStartWorkflowExecutionRequest) String() string { func (*SignalWithStartWorkflowExecutionRequest) ProtoMessage() {} func (x *SignalWithStartWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[34] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3009,7 +3133,7 @@ func (x *SignalWithStartWorkflowExecutionRequest) ProtoReflect() protoreflect.Me // Deprecated: Use SignalWithStartWorkflowExecutionRequest.ProtoReflect.Descriptor instead. func (*SignalWithStartWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{34} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{36} } func (x *SignalWithStartWorkflowExecutionRequest) GetNamespaceId() string { @@ -3041,7 +3165,7 @@ type SignalWithStartWorkflowExecutionResponse struct { func (x *SignalWithStartWorkflowExecutionResponse) Reset() { *x = SignalWithStartWorkflowExecutionResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[35] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3053,7 +3177,7 @@ func (x *SignalWithStartWorkflowExecutionResponse) String() string { func (*SignalWithStartWorkflowExecutionResponse) ProtoMessage() {} func (x *SignalWithStartWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[35] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3066,7 +3190,7 @@ func (x *SignalWithStartWorkflowExecutionResponse) ProtoReflect() protoreflect.M // Deprecated: Use SignalWithStartWorkflowExecutionResponse.ProtoReflect.Descriptor instead. func (*SignalWithStartWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{35} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{37} } func (x *SignalWithStartWorkflowExecutionResponse) GetRunId() string { @@ -3108,7 +3232,7 @@ type RemoveSignalMutableStateRequest struct { func (x *RemoveSignalMutableStateRequest) Reset() { *x = RemoveSignalMutableStateRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[36] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3120,7 +3244,7 @@ func (x *RemoveSignalMutableStateRequest) String() string { func (*RemoveSignalMutableStateRequest) ProtoMessage() {} func (x *RemoveSignalMutableStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[36] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3133,7 +3257,7 @@ func (x *RemoveSignalMutableStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveSignalMutableStateRequest.ProtoReflect.Descriptor instead. func (*RemoveSignalMutableStateRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{36} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{38} } func (x *RemoveSignalMutableStateRequest) GetNamespaceId() string { @@ -3165,7 +3289,7 @@ type RemoveSignalMutableStateResponse struct { func (x *RemoveSignalMutableStateResponse) Reset() { *x = RemoveSignalMutableStateResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[37] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3177,7 +3301,7 @@ func (x *RemoveSignalMutableStateResponse) String() string { func (*RemoveSignalMutableStateResponse) ProtoMessage() {} func (x *RemoveSignalMutableStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[37] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3190,7 +3314,7 @@ func (x *RemoveSignalMutableStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveSignalMutableStateResponse.ProtoReflect.Descriptor instead. func (*RemoveSignalMutableStateResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{37} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{39} } type TerminateWorkflowExecutionRequest struct { @@ -3205,7 +3329,7 @@ type TerminateWorkflowExecutionRequest struct { func (x *TerminateWorkflowExecutionRequest) Reset() { *x = TerminateWorkflowExecutionRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[38] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3217,7 +3341,7 @@ func (x *TerminateWorkflowExecutionRequest) String() string { func (*TerminateWorkflowExecutionRequest) ProtoMessage() {} func (x *TerminateWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[38] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3230,7 +3354,7 @@ func (x *TerminateWorkflowExecutionRequest) ProtoReflect() protoreflect.Message // Deprecated: Use TerminateWorkflowExecutionRequest.ProtoReflect.Descriptor instead. func (*TerminateWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{38} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{40} } func (x *TerminateWorkflowExecutionRequest) GetNamespaceId() string { @@ -3269,7 +3393,7 @@ type TerminateWorkflowExecutionResponse struct { func (x *TerminateWorkflowExecutionResponse) Reset() { *x = TerminateWorkflowExecutionResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[39] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3281,7 +3405,7 @@ func (x *TerminateWorkflowExecutionResponse) String() string { func (*TerminateWorkflowExecutionResponse) ProtoMessage() {} func (x *TerminateWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[39] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3294,7 +3418,7 @@ func (x *TerminateWorkflowExecutionResponse) ProtoReflect() protoreflect.Message // Deprecated: Use TerminateWorkflowExecutionResponse.ProtoReflect.Descriptor instead. func (*TerminateWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{39} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{41} } type DeleteWorkflowExecutionRequest struct { @@ -3308,7 +3432,7 @@ type DeleteWorkflowExecutionRequest struct { func (x *DeleteWorkflowExecutionRequest) Reset() { *x = DeleteWorkflowExecutionRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[40] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3320,7 +3444,7 @@ func (x *DeleteWorkflowExecutionRequest) String() string { func (*DeleteWorkflowExecutionRequest) ProtoMessage() {} func (x *DeleteWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[40] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3333,7 +3457,7 @@ func (x *DeleteWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteWorkflowExecutionRequest.ProtoReflect.Descriptor instead. func (*DeleteWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{40} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{42} } func (x *DeleteWorkflowExecutionRequest) GetNamespaceId() string { @@ -3365,7 +3489,7 @@ type DeleteWorkflowExecutionResponse struct { func (x *DeleteWorkflowExecutionResponse) Reset() { *x = DeleteWorkflowExecutionResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[41] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3377,7 +3501,7 @@ func (x *DeleteWorkflowExecutionResponse) String() string { func (*DeleteWorkflowExecutionResponse) ProtoMessage() {} func (x *DeleteWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[41] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3390,7 +3514,7 @@ func (x *DeleteWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteWorkflowExecutionResponse.ProtoReflect.Descriptor instead. func (*DeleteWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{41} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{43} } type ResetWorkflowExecutionRequest struct { @@ -3403,7 +3527,7 @@ type ResetWorkflowExecutionRequest struct { func (x *ResetWorkflowExecutionRequest) Reset() { *x = ResetWorkflowExecutionRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[42] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3415,7 +3539,7 @@ func (x *ResetWorkflowExecutionRequest) String() string { func (*ResetWorkflowExecutionRequest) ProtoMessage() {} func (x *ResetWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[42] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3428,7 +3552,7 @@ func (x *ResetWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetWorkflowExecutionRequest.ProtoReflect.Descriptor instead. func (*ResetWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{42} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{44} } func (x *ResetWorkflowExecutionRequest) GetNamespaceId() string { @@ -3454,7 +3578,7 @@ type ResetWorkflowExecutionResponse struct { func (x *ResetWorkflowExecutionResponse) Reset() { *x = ResetWorkflowExecutionResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[43] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3466,7 +3590,7 @@ func (x *ResetWorkflowExecutionResponse) String() string { func (*ResetWorkflowExecutionResponse) ProtoMessage() {} func (x *ResetWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[43] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3479,7 +3603,7 @@ func (x *ResetWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetWorkflowExecutionResponse.ProtoReflect.Descriptor instead. func (*ResetWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{43} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{45} } func (x *ResetWorkflowExecutionResponse) GetRunId() string { @@ -3502,7 +3626,7 @@ type RequestCancelWorkflowExecutionRequest struct { func (x *RequestCancelWorkflowExecutionRequest) Reset() { *x = RequestCancelWorkflowExecutionRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[44] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3514,7 +3638,7 @@ func (x *RequestCancelWorkflowExecutionRequest) String() string { func (*RequestCancelWorkflowExecutionRequest) ProtoMessage() {} func (x *RequestCancelWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[44] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3527,7 +3651,7 @@ func (x *RequestCancelWorkflowExecutionRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use RequestCancelWorkflowExecutionRequest.ProtoReflect.Descriptor instead. func (*RequestCancelWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{44} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{46} } func (x *RequestCancelWorkflowExecutionRequest) GetNamespaceId() string { @@ -3573,7 +3697,7 @@ type RequestCancelWorkflowExecutionResponse struct { func (x *RequestCancelWorkflowExecutionResponse) Reset() { *x = RequestCancelWorkflowExecutionResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[45] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3585,7 +3709,7 @@ func (x *RequestCancelWorkflowExecutionResponse) String() string { func (*RequestCancelWorkflowExecutionResponse) ProtoMessage() {} func (x *RequestCancelWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[45] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3598,7 +3722,7 @@ func (x *RequestCancelWorkflowExecutionResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use RequestCancelWorkflowExecutionResponse.ProtoReflect.Descriptor instead. func (*RequestCancelWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{45} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{47} } type ScheduleWorkflowTaskRequest struct { @@ -3614,7 +3738,7 @@ type ScheduleWorkflowTaskRequest struct { func (x *ScheduleWorkflowTaskRequest) Reset() { *x = ScheduleWorkflowTaskRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[46] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3626,7 +3750,7 @@ func (x *ScheduleWorkflowTaskRequest) String() string { func (*ScheduleWorkflowTaskRequest) ProtoMessage() {} func (x *ScheduleWorkflowTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[46] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3639,7 +3763,7 @@ func (x *ScheduleWorkflowTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ScheduleWorkflowTaskRequest.ProtoReflect.Descriptor instead. func (*ScheduleWorkflowTaskRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{46} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{48} } func (x *ScheduleWorkflowTaskRequest) GetNamespaceId() string { @@ -3685,7 +3809,7 @@ type ScheduleWorkflowTaskResponse struct { func (x *ScheduleWorkflowTaskResponse) Reset() { *x = ScheduleWorkflowTaskResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[47] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3697,7 +3821,7 @@ func (x *ScheduleWorkflowTaskResponse) String() string { func (*ScheduleWorkflowTaskResponse) ProtoMessage() {} func (x *ScheduleWorkflowTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[47] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3710,7 +3834,7 @@ func (x *ScheduleWorkflowTaskResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ScheduleWorkflowTaskResponse.ProtoReflect.Descriptor instead. func (*ScheduleWorkflowTaskResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{47} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{49} } type VerifyFirstWorkflowTaskScheduledRequest struct { @@ -3725,7 +3849,7 @@ type VerifyFirstWorkflowTaskScheduledRequest struct { func (x *VerifyFirstWorkflowTaskScheduledRequest) Reset() { *x = VerifyFirstWorkflowTaskScheduledRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[48] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3737,7 +3861,7 @@ func (x *VerifyFirstWorkflowTaskScheduledRequest) String() string { func (*VerifyFirstWorkflowTaskScheduledRequest) ProtoMessage() {} func (x *VerifyFirstWorkflowTaskScheduledRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[48] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3750,7 +3874,7 @@ func (x *VerifyFirstWorkflowTaskScheduledRequest) ProtoReflect() protoreflect.Me // Deprecated: Use VerifyFirstWorkflowTaskScheduledRequest.ProtoReflect.Descriptor instead. func (*VerifyFirstWorkflowTaskScheduledRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{48} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{50} } func (x *VerifyFirstWorkflowTaskScheduledRequest) GetNamespaceId() string { @@ -3789,7 +3913,7 @@ type VerifyFirstWorkflowTaskScheduledResponse struct { func (x *VerifyFirstWorkflowTaskScheduledResponse) Reset() { *x = VerifyFirstWorkflowTaskScheduledResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[49] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3801,7 +3925,7 @@ func (x *VerifyFirstWorkflowTaskScheduledResponse) String() string { func (*VerifyFirstWorkflowTaskScheduledResponse) ProtoMessage() {} func (x *VerifyFirstWorkflowTaskScheduledResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[49] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3814,7 +3938,7 @@ func (x *VerifyFirstWorkflowTaskScheduledResponse) ProtoReflect() protoreflect.M // Deprecated: Use VerifyFirstWorkflowTaskScheduledResponse.ProtoReflect.Descriptor instead. func (*VerifyFirstWorkflowTaskScheduledResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{49} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{51} } // * @@ -3839,7 +3963,7 @@ type RecordChildExecutionCompletedRequest struct { func (x *RecordChildExecutionCompletedRequest) Reset() { *x = RecordChildExecutionCompletedRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[50] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3851,7 +3975,7 @@ func (x *RecordChildExecutionCompletedRequest) String() string { func (*RecordChildExecutionCompletedRequest) ProtoMessage() {} func (x *RecordChildExecutionCompletedRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[50] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3864,7 +3988,7 @@ func (x *RecordChildExecutionCompletedRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use RecordChildExecutionCompletedRequest.ProtoReflect.Descriptor instead. func (*RecordChildExecutionCompletedRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{50} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{52} } func (x *RecordChildExecutionCompletedRequest) GetNamespaceId() string { @@ -3931,7 +4055,7 @@ type RecordChildExecutionCompletedResponse struct { func (x *RecordChildExecutionCompletedResponse) Reset() { *x = RecordChildExecutionCompletedResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[51] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3943,7 +4067,7 @@ func (x *RecordChildExecutionCompletedResponse) String() string { func (*RecordChildExecutionCompletedResponse) ProtoMessage() {} func (x *RecordChildExecutionCompletedResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[51] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3956,7 +4080,7 @@ func (x *RecordChildExecutionCompletedResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use RecordChildExecutionCompletedResponse.ProtoReflect.Descriptor instead. func (*RecordChildExecutionCompletedResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{51} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{53} } type VerifyChildExecutionCompletionRecordedRequest struct { @@ -3974,7 +4098,7 @@ type VerifyChildExecutionCompletionRecordedRequest struct { func (x *VerifyChildExecutionCompletionRecordedRequest) Reset() { *x = VerifyChildExecutionCompletionRecordedRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[52] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3986,7 +4110,7 @@ func (x *VerifyChildExecutionCompletionRecordedRequest) String() string { func (*VerifyChildExecutionCompletionRecordedRequest) ProtoMessage() {} func (x *VerifyChildExecutionCompletionRecordedRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[52] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3999,7 +4123,7 @@ func (x *VerifyChildExecutionCompletionRecordedRequest) ProtoReflect() protorefl // Deprecated: Use VerifyChildExecutionCompletionRecordedRequest.ProtoReflect.Descriptor instead. func (*VerifyChildExecutionCompletionRecordedRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{52} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{54} } func (x *VerifyChildExecutionCompletionRecordedRequest) GetNamespaceId() string { @@ -4059,7 +4183,7 @@ type VerifyChildExecutionCompletionRecordedResponse struct { func (x *VerifyChildExecutionCompletionRecordedResponse) Reset() { *x = VerifyChildExecutionCompletionRecordedResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[53] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4071,7 +4195,7 @@ func (x *VerifyChildExecutionCompletionRecordedResponse) String() string { func (*VerifyChildExecutionCompletionRecordedResponse) ProtoMessage() {} func (x *VerifyChildExecutionCompletionRecordedResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[53] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4084,7 +4208,7 @@ func (x *VerifyChildExecutionCompletionRecordedResponse) ProtoReflect() protoref // Deprecated: Use VerifyChildExecutionCompletionRecordedResponse.ProtoReflect.Descriptor instead. func (*VerifyChildExecutionCompletionRecordedResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{53} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{55} } type DescribeWorkflowExecutionRequest struct { @@ -4097,7 +4221,7 @@ type DescribeWorkflowExecutionRequest struct { func (x *DescribeWorkflowExecutionRequest) Reset() { *x = DescribeWorkflowExecutionRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[54] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4109,7 +4233,7 @@ func (x *DescribeWorkflowExecutionRequest) String() string { func (*DescribeWorkflowExecutionRequest) ProtoMessage() {} func (x *DescribeWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[54] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4122,7 +4246,7 @@ func (x *DescribeWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DescribeWorkflowExecutionRequest.ProtoReflect.Descriptor instead. func (*DescribeWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{54} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{56} } func (x *DescribeWorkflowExecutionRequest) GetNamespaceId() string { @@ -4155,7 +4279,7 @@ type DescribeWorkflowExecutionResponse struct { func (x *DescribeWorkflowExecutionResponse) Reset() { *x = DescribeWorkflowExecutionResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[55] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4167,7 +4291,7 @@ func (x *DescribeWorkflowExecutionResponse) String() string { func (*DescribeWorkflowExecutionResponse) ProtoMessage() {} func (x *DescribeWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[55] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4180,7 +4304,7 @@ func (x *DescribeWorkflowExecutionResponse) ProtoReflect() protoreflect.Message // Deprecated: Use DescribeWorkflowExecutionResponse.ProtoReflect.Descriptor instead. func (*DescribeWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{55} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{57} } func (x *DescribeWorkflowExecutionResponse) GetExecutionConfig() *v15.WorkflowExecutionConfig { @@ -4240,11 +4364,11 @@ func (x *DescribeWorkflowExecutionResponse) GetWorkflowExtendedInfo() *v15.Workf } type ReplicateEventsV2Request struct { - state protoimpl.MessageState `protogen:"open.v1"` - NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - WorkflowExecution *v14.WorkflowExecution `protobuf:"bytes,2,opt,name=workflow_execution,json=workflowExecution,proto3" json:"workflow_execution,omitempty"` - VersionHistoryItems []*v19.VersionHistoryItem `protobuf:"bytes,3,rep,name=version_history_items,json=versionHistoryItems,proto3" json:"version_history_items,omitempty"` - Events *v14.DataBlob `protobuf:"bytes,4,opt,name=events,proto3" json:"events,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` + WorkflowExecution *v14.WorkflowExecution `protobuf:"bytes,2,opt,name=workflow_execution,json=workflowExecution,proto3" json:"workflow_execution,omitempty"` + VersionHistoryItems []*v110.VersionHistoryItem `protobuf:"bytes,3,rep,name=version_history_items,json=versionHistoryItems,proto3" json:"version_history_items,omitempty"` + Events *v14.DataBlob `protobuf:"bytes,4,opt,name=events,proto3" json:"events,omitempty"` // New run events does not need version history since there is no prior events. NewRunEvents *v14.DataBlob `protobuf:"bytes,5,opt,name=new_run_events,json=newRunEvents,proto3" json:"new_run_events,omitempty"` BaseExecutionInfo *v11.BaseExecutionInfo `protobuf:"bytes,6,opt,name=base_execution_info,json=baseExecutionInfo,proto3" json:"base_execution_info,omitempty"` @@ -4255,7 +4379,7 @@ type ReplicateEventsV2Request struct { func (x *ReplicateEventsV2Request) Reset() { *x = ReplicateEventsV2Request{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[56] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4267,7 +4391,7 @@ func (x *ReplicateEventsV2Request) String() string { func (*ReplicateEventsV2Request) ProtoMessage() {} func (x *ReplicateEventsV2Request) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[56] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4280,7 +4404,7 @@ func (x *ReplicateEventsV2Request) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplicateEventsV2Request.ProtoReflect.Descriptor instead. func (*ReplicateEventsV2Request) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{56} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{58} } func (x *ReplicateEventsV2Request) GetNamespaceId() string { @@ -4297,7 +4421,7 @@ func (x *ReplicateEventsV2Request) GetWorkflowExecution() *v14.WorkflowExecution return nil } -func (x *ReplicateEventsV2Request) GetVersionHistoryItems() []*v19.VersionHistoryItem { +func (x *ReplicateEventsV2Request) GetVersionHistoryItems() []*v110.VersionHistoryItem { if x != nil { return x.VersionHistoryItems } @@ -4340,7 +4464,7 @@ type ReplicateEventsV2Response struct { func (x *ReplicateEventsV2Response) Reset() { *x = ReplicateEventsV2Response{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[57] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4352,7 +4476,7 @@ func (x *ReplicateEventsV2Response) String() string { func (*ReplicateEventsV2Response) ProtoMessage() {} func (x *ReplicateEventsV2Response) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[57] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4365,12 +4489,12 @@ func (x *ReplicateEventsV2Response) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplicateEventsV2Response.ProtoReflect.Descriptor instead. func (*ReplicateEventsV2Response) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{57} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{59} } type ReplicateWorkflowStateRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - WorkflowState *v110.WorkflowMutableState `protobuf:"bytes,1,opt,name=workflow_state,json=workflowState,proto3" json:"workflow_state,omitempty"` + WorkflowState *v111.WorkflowMutableState `protobuf:"bytes,1,opt,name=workflow_state,json=workflowState,proto3" json:"workflow_state,omitempty"` RemoteCluster string `protobuf:"bytes,2,opt,name=remote_cluster,json=remoteCluster,proto3" json:"remote_cluster,omitempty"` NamespaceId string `protobuf:"bytes,3,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` IsForceReplication bool `protobuf:"varint,4,opt,name=is_force_replication,json=isForceReplication,proto3" json:"is_force_replication,omitempty"` @@ -4381,7 +4505,7 @@ type ReplicateWorkflowStateRequest struct { func (x *ReplicateWorkflowStateRequest) Reset() { *x = ReplicateWorkflowStateRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[58] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4393,7 +4517,7 @@ func (x *ReplicateWorkflowStateRequest) String() string { func (*ReplicateWorkflowStateRequest) ProtoMessage() {} func (x *ReplicateWorkflowStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[58] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4406,10 +4530,10 @@ func (x *ReplicateWorkflowStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplicateWorkflowStateRequest.ProtoReflect.Descriptor instead. func (*ReplicateWorkflowStateRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{58} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{60} } -func (x *ReplicateWorkflowStateRequest) GetWorkflowState() *v110.WorkflowMutableState { +func (x *ReplicateWorkflowStateRequest) GetWorkflowState() *v111.WorkflowMutableState { if x != nil { return x.WorkflowState } @@ -4452,7 +4576,7 @@ type ReplicateWorkflowStateResponse struct { func (x *ReplicateWorkflowStateResponse) Reset() { *x = ReplicateWorkflowStateResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[59] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4464,7 +4588,7 @@ func (x *ReplicateWorkflowStateResponse) String() string { func (*ReplicateWorkflowStateResponse) ProtoMessage() {} func (x *ReplicateWorkflowStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[59] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4477,7 +4601,7 @@ func (x *ReplicateWorkflowStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplicateWorkflowStateResponse.ProtoReflect.Descriptor instead. func (*ReplicateWorkflowStateResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{59} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{61} } type SyncShardStatusRequest struct { @@ -4491,7 +4615,7 @@ type SyncShardStatusRequest struct { func (x *SyncShardStatusRequest) Reset() { *x = SyncShardStatusRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[60] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4503,7 +4627,7 @@ func (x *SyncShardStatusRequest) String() string { func (*SyncShardStatusRequest) ProtoMessage() {} func (x *SyncShardStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[60] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4516,7 +4640,7 @@ func (x *SyncShardStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncShardStatusRequest.ProtoReflect.Descriptor instead. func (*SyncShardStatusRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{60} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{62} } func (x *SyncShardStatusRequest) GetSourceCluster() string { @@ -4548,7 +4672,7 @@ type SyncShardStatusResponse struct { func (x *SyncShardStatusResponse) Reset() { *x = SyncShardStatusResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[61] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4560,7 +4684,7 @@ func (x *SyncShardStatusResponse) String() string { func (*SyncShardStatusResponse) ProtoMessage() {} func (x *SyncShardStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[61] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4573,7 +4697,7 @@ func (x *SyncShardStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncShardStatusResponse.ProtoReflect.Descriptor instead. func (*SyncShardStatusResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{61} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{63} } type SyncActivityRequest struct { @@ -4591,7 +4715,7 @@ type SyncActivityRequest struct { Attempt int32 `protobuf:"varint,11,opt,name=attempt,proto3" json:"attempt,omitempty"` LastFailure *v13.Failure `protobuf:"bytes,12,opt,name=last_failure,json=lastFailure,proto3" json:"last_failure,omitempty"` LastWorkerIdentity string `protobuf:"bytes,13,opt,name=last_worker_identity,json=lastWorkerIdentity,proto3" json:"last_worker_identity,omitempty"` - VersionHistory *v19.VersionHistory `protobuf:"bytes,14,opt,name=version_history,json=versionHistory,proto3" json:"version_history,omitempty"` + VersionHistory *v110.VersionHistory `protobuf:"bytes,14,opt,name=version_history,json=versionHistory,proto3" json:"version_history,omitempty"` BaseExecutionInfo *v11.BaseExecutionInfo `protobuf:"bytes,15,opt,name=base_execution_info,json=baseExecutionInfo,proto3" json:"base_execution_info,omitempty"` // build ID of the worker who received this activity last time LastStartedBuildId string `protobuf:"bytes,16,opt,name=last_started_build_id,json=lastStartedBuildId,proto3" json:"last_started_build_id,omitempty"` @@ -4617,7 +4741,7 @@ type SyncActivityRequest struct { func (x *SyncActivityRequest) Reset() { *x = SyncActivityRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[62] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4629,7 +4753,7 @@ func (x *SyncActivityRequest) String() string { func (*SyncActivityRequest) ProtoMessage() {} func (x *SyncActivityRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[62] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4642,7 +4766,7 @@ func (x *SyncActivityRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncActivityRequest.ProtoReflect.Descriptor instead. func (*SyncActivityRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{62} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{64} } func (x *SyncActivityRequest) GetNamespaceId() string { @@ -4736,7 +4860,7 @@ func (x *SyncActivityRequest) GetLastWorkerIdentity() string { return "" } -func (x *SyncActivityRequest) GetVersionHistory() *v19.VersionHistory { +func (x *SyncActivityRequest) GetVersionHistory() *v110.VersionHistory { if x != nil { return x.VersionHistory } @@ -4839,7 +4963,7 @@ type SyncActivitiesRequest struct { func (x *SyncActivitiesRequest) Reset() { *x = SyncActivitiesRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[63] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4851,7 +4975,7 @@ func (x *SyncActivitiesRequest) String() string { func (*SyncActivitiesRequest) ProtoMessage() {} func (x *SyncActivitiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[63] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4864,7 +4988,7 @@ func (x *SyncActivitiesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncActivitiesRequest.ProtoReflect.Descriptor instead. func (*SyncActivitiesRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{63} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{65} } func (x *SyncActivitiesRequest) GetNamespaceId() string { @@ -4907,7 +5031,7 @@ type ActivitySyncInfo struct { Attempt int32 `protobuf:"varint,8,opt,name=attempt,proto3" json:"attempt,omitempty"` LastFailure *v13.Failure `protobuf:"bytes,9,opt,name=last_failure,json=lastFailure,proto3" json:"last_failure,omitempty"` LastWorkerIdentity string `protobuf:"bytes,10,opt,name=last_worker_identity,json=lastWorkerIdentity,proto3" json:"last_worker_identity,omitempty"` - VersionHistory *v19.VersionHistory `protobuf:"bytes,11,opt,name=version_history,json=versionHistory,proto3" json:"version_history,omitempty"` + VersionHistory *v110.VersionHistory `protobuf:"bytes,11,opt,name=version_history,json=versionHistory,proto3" json:"version_history,omitempty"` // build ID of the worker who received this activity last time LastStartedBuildId string `protobuf:"bytes,12,opt,name=last_started_build_id,json=lastStartedBuildId,proto3" json:"last_started_build_id,omitempty"` // workflows redirect_counter value when this activity started last time @@ -4932,7 +5056,7 @@ type ActivitySyncInfo struct { func (x *ActivitySyncInfo) Reset() { *x = ActivitySyncInfo{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[64] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4944,7 +5068,7 @@ func (x *ActivitySyncInfo) String() string { func (*ActivitySyncInfo) ProtoMessage() {} func (x *ActivitySyncInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[64] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4957,7 +5081,7 @@ func (x *ActivitySyncInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ActivitySyncInfo.ProtoReflect.Descriptor instead. func (*ActivitySyncInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{64} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{66} } func (x *ActivitySyncInfo) GetVersion() int64 { @@ -5030,7 +5154,7 @@ func (x *ActivitySyncInfo) GetLastWorkerIdentity() string { return "" } -func (x *ActivitySyncInfo) GetVersionHistory() *v19.VersionHistory { +func (x *ActivitySyncInfo) GetVersionHistory() *v110.VersionHistory { if x != nil { return x.VersionHistory } @@ -5122,7 +5246,7 @@ type SyncActivityResponse struct { func (x *SyncActivityResponse) Reset() { *x = SyncActivityResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[65] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5134,7 +5258,7 @@ func (x *SyncActivityResponse) String() string { func (*SyncActivityResponse) ProtoMessage() {} func (x *SyncActivityResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[65] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5147,7 +5271,7 @@ func (x *SyncActivityResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncActivityResponse.ProtoReflect.Descriptor instead. func (*SyncActivityResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{65} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{67} } type DescribeMutableStateRequest struct { @@ -5163,7 +5287,7 @@ type DescribeMutableStateRequest struct { func (x *DescribeMutableStateRequest) Reset() { *x = DescribeMutableStateRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[66] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5175,7 +5299,7 @@ func (x *DescribeMutableStateRequest) String() string { func (*DescribeMutableStateRequest) ProtoMessage() {} func (x *DescribeMutableStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[66] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5188,7 +5312,7 @@ func (x *DescribeMutableStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DescribeMutableStateRequest.ProtoReflect.Descriptor instead. func (*DescribeMutableStateRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{66} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{68} } func (x *DescribeMutableStateRequest) GetNamespaceId() string { @@ -5222,17 +5346,17 @@ func (x *DescribeMutableStateRequest) GetArchetypeId() uint32 { type DescribeMutableStateResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // CacheMutableState is only available when mutable state is in cache. - CacheMutableState *v110.WorkflowMutableState `protobuf:"bytes,1,opt,name=cache_mutable_state,json=cacheMutableState,proto3" json:"cache_mutable_state,omitempty"` + CacheMutableState *v111.WorkflowMutableState `protobuf:"bytes,1,opt,name=cache_mutable_state,json=cacheMutableState,proto3" json:"cache_mutable_state,omitempty"` // DatabaseMutableState is always available, // but only loaded from database when mutable state is NOT in cache or skip_force_reload is false. - DatabaseMutableState *v110.WorkflowMutableState `protobuf:"bytes,2,opt,name=database_mutable_state,json=databaseMutableState,proto3" json:"database_mutable_state,omitempty"` + DatabaseMutableState *v111.WorkflowMutableState `protobuf:"bytes,2,opt,name=database_mutable_state,json=databaseMutableState,proto3" json:"database_mutable_state,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DescribeMutableStateResponse) Reset() { *x = DescribeMutableStateResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[67] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5244,7 +5368,7 @@ func (x *DescribeMutableStateResponse) String() string { func (*DescribeMutableStateResponse) ProtoMessage() {} func (x *DescribeMutableStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[67] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5257,17 +5381,17 @@ func (x *DescribeMutableStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DescribeMutableStateResponse.ProtoReflect.Descriptor instead. func (*DescribeMutableStateResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{67} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{69} } -func (x *DescribeMutableStateResponse) GetCacheMutableState() *v110.WorkflowMutableState { +func (x *DescribeMutableStateResponse) GetCacheMutableState() *v111.WorkflowMutableState { if x != nil { return x.CacheMutableState } return nil } -func (x *DescribeMutableStateResponse) GetDatabaseMutableState() *v110.WorkflowMutableState { +func (x *DescribeMutableStateResponse) GetDatabaseMutableState() *v111.WorkflowMutableState { if x != nil { return x.DatabaseMutableState } @@ -5288,7 +5412,7 @@ type DescribeHistoryHostRequest struct { func (x *DescribeHistoryHostRequest) Reset() { *x = DescribeHistoryHostRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[68] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5300,7 +5424,7 @@ func (x *DescribeHistoryHostRequest) String() string { func (*DescribeHistoryHostRequest) ProtoMessage() {} func (x *DescribeHistoryHostRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[68] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5313,7 +5437,7 @@ func (x *DescribeHistoryHostRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DescribeHistoryHostRequest.ProtoReflect.Descriptor instead. func (*DescribeHistoryHostRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{68} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{70} } func (x *DescribeHistoryHostRequest) GetHostAddress() string { @@ -5348,7 +5472,7 @@ type DescribeHistoryHostResponse struct { state protoimpl.MessageState `protogen:"open.v1"` ShardsNumber int32 `protobuf:"varint,1,opt,name=shards_number,json=shardsNumber,proto3" json:"shards_number,omitempty"` ShardIds []int32 `protobuf:"varint,2,rep,packed,name=shard_ids,json=shardIds,proto3" json:"shard_ids,omitempty"` - NamespaceCache *v116.NamespaceCacheInfo `protobuf:"bytes,3,opt,name=namespace_cache,json=namespaceCache,proto3" json:"namespace_cache,omitempty"` + NamespaceCache *v117.NamespaceCacheInfo `protobuf:"bytes,3,opt,name=namespace_cache,json=namespaceCache,proto3" json:"namespace_cache,omitempty"` Address string `protobuf:"bytes,5,opt,name=address,proto3" json:"address,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -5356,7 +5480,7 @@ type DescribeHistoryHostResponse struct { func (x *DescribeHistoryHostResponse) Reset() { *x = DescribeHistoryHostResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[69] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5368,7 +5492,7 @@ func (x *DescribeHistoryHostResponse) String() string { func (*DescribeHistoryHostResponse) ProtoMessage() {} func (x *DescribeHistoryHostResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[69] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5381,7 +5505,7 @@ func (x *DescribeHistoryHostResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DescribeHistoryHostResponse.ProtoReflect.Descriptor instead. func (*DescribeHistoryHostResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{69} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{71} } func (x *DescribeHistoryHostResponse) GetShardsNumber() int32 { @@ -5398,7 +5522,7 @@ func (x *DescribeHistoryHostResponse) GetShardIds() []int32 { return nil } -func (x *DescribeHistoryHostResponse) GetNamespaceCache() *v116.NamespaceCacheInfo { +func (x *DescribeHistoryHostResponse) GetNamespaceCache() *v117.NamespaceCacheInfo { if x != nil { return x.NamespaceCache } @@ -5421,7 +5545,7 @@ type CloseShardRequest struct { func (x *CloseShardRequest) Reset() { *x = CloseShardRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[70] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5433,7 +5557,7 @@ func (x *CloseShardRequest) String() string { func (*CloseShardRequest) ProtoMessage() {} func (x *CloseShardRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[70] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5446,7 +5570,7 @@ func (x *CloseShardRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CloseShardRequest.ProtoReflect.Descriptor instead. func (*CloseShardRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{70} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{72} } func (x *CloseShardRequest) GetShardId() int32 { @@ -5464,7 +5588,7 @@ type CloseShardResponse struct { func (x *CloseShardResponse) Reset() { *x = CloseShardResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[71] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5476,7 +5600,7 @@ func (x *CloseShardResponse) String() string { func (*CloseShardResponse) ProtoMessage() {} func (x *CloseShardResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[71] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5489,7 +5613,7 @@ func (x *CloseShardResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CloseShardResponse.ProtoReflect.Descriptor instead. func (*CloseShardResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{71} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{73} } type GetShardRequest struct { @@ -5501,7 +5625,7 @@ type GetShardRequest struct { func (x *GetShardRequest) Reset() { *x = GetShardRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[72] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5513,7 +5637,7 @@ func (x *GetShardRequest) String() string { func (*GetShardRequest) ProtoMessage() {} func (x *GetShardRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[72] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5526,7 +5650,7 @@ func (x *GetShardRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetShardRequest.ProtoReflect.Descriptor instead. func (*GetShardRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{72} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{74} } func (x *GetShardRequest) GetShardId() int32 { @@ -5538,14 +5662,14 @@ func (x *GetShardRequest) GetShardId() int32 { type GetShardResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - ShardInfo *v110.ShardInfo `protobuf:"bytes,1,opt,name=shard_info,json=shardInfo,proto3" json:"shard_info,omitempty"` + ShardInfo *v111.ShardInfo `protobuf:"bytes,1,opt,name=shard_info,json=shardInfo,proto3" json:"shard_info,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetShardResponse) Reset() { *x = GetShardResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[73] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5557,7 +5681,7 @@ func (x *GetShardResponse) String() string { func (*GetShardResponse) ProtoMessage() {} func (x *GetShardResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[73] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5570,10 +5694,10 @@ func (x *GetShardResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetShardResponse.ProtoReflect.Descriptor instead. func (*GetShardResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{73} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{75} } -func (x *GetShardResponse) GetShardInfo() *v110.ShardInfo { +func (x *GetShardResponse) GetShardInfo() *v111.ShardInfo { if x != nil { return x.ShardInfo } @@ -5593,7 +5717,7 @@ type RemoveTaskRequest struct { func (x *RemoveTaskRequest) Reset() { *x = RemoveTaskRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[74] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5605,7 +5729,7 @@ func (x *RemoveTaskRequest) String() string { func (*RemoveTaskRequest) ProtoMessage() {} func (x *RemoveTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[74] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5618,7 +5742,7 @@ func (x *RemoveTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveTaskRequest.ProtoReflect.Descriptor instead. func (*RemoveTaskRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{74} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{76} } func (x *RemoveTaskRequest) GetShardId() int32 { @@ -5657,7 +5781,7 @@ type RemoveTaskResponse struct { func (x *RemoveTaskResponse) Reset() { *x = RemoveTaskResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[75] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5669,7 +5793,7 @@ func (x *RemoveTaskResponse) String() string { func (*RemoveTaskResponse) ProtoMessage() {} func (x *RemoveTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[75] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5682,12 +5806,12 @@ func (x *RemoveTaskResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveTaskResponse.ProtoReflect.Descriptor instead. func (*RemoveTaskResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{75} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{77} } type GetReplicationMessagesRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - Tokens []*v117.ReplicationToken `protobuf:"bytes,1,rep,name=tokens,proto3" json:"tokens,omitempty"` + Tokens []*v118.ReplicationToken `protobuf:"bytes,1,rep,name=tokens,proto3" json:"tokens,omitempty"` ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -5695,7 +5819,7 @@ type GetReplicationMessagesRequest struct { func (x *GetReplicationMessagesRequest) Reset() { *x = GetReplicationMessagesRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[76] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5707,7 +5831,7 @@ func (x *GetReplicationMessagesRequest) String() string { func (*GetReplicationMessagesRequest) ProtoMessage() {} func (x *GetReplicationMessagesRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[76] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5720,10 +5844,10 @@ func (x *GetReplicationMessagesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetReplicationMessagesRequest.ProtoReflect.Descriptor instead. func (*GetReplicationMessagesRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{76} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{78} } -func (x *GetReplicationMessagesRequest) GetTokens() []*v117.ReplicationToken { +func (x *GetReplicationMessagesRequest) GetTokens() []*v118.ReplicationToken { if x != nil { return x.Tokens } @@ -5739,14 +5863,14 @@ func (x *GetReplicationMessagesRequest) GetClusterName() string { type GetReplicationMessagesResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - ShardMessages map[int32]*v117.ReplicationMessages `protobuf:"bytes,1,rep,name=shard_messages,json=shardMessages,proto3" json:"shard_messages,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + ShardMessages map[int32]*v118.ReplicationMessages `protobuf:"bytes,1,rep,name=shard_messages,json=shardMessages,proto3" json:"shard_messages,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetReplicationMessagesResponse) Reset() { *x = GetReplicationMessagesResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[77] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5758,7 +5882,7 @@ func (x *GetReplicationMessagesResponse) String() string { func (*GetReplicationMessagesResponse) ProtoMessage() {} func (x *GetReplicationMessagesResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[77] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5771,10 +5895,10 @@ func (x *GetReplicationMessagesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetReplicationMessagesResponse.ProtoReflect.Descriptor instead. func (*GetReplicationMessagesResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{77} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{79} } -func (x *GetReplicationMessagesResponse) GetShardMessages() map[int32]*v117.ReplicationMessages { +func (x *GetReplicationMessagesResponse) GetShardMessages() map[int32]*v118.ReplicationMessages { if x != nil { return x.ShardMessages } @@ -5783,14 +5907,14 @@ func (x *GetReplicationMessagesResponse) GetShardMessages() map[int32]*v117.Repl type GetDLQReplicationMessagesRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - TaskInfos []*v117.ReplicationTaskInfo `protobuf:"bytes,1,rep,name=task_infos,json=taskInfos,proto3" json:"task_infos,omitempty"` + TaskInfos []*v118.ReplicationTaskInfo `protobuf:"bytes,1,rep,name=task_infos,json=taskInfos,proto3" json:"task_infos,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetDLQReplicationMessagesRequest) Reset() { *x = GetDLQReplicationMessagesRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[78] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5802,7 +5926,7 @@ func (x *GetDLQReplicationMessagesRequest) String() string { func (*GetDLQReplicationMessagesRequest) ProtoMessage() {} func (x *GetDLQReplicationMessagesRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[78] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5815,10 +5939,10 @@ func (x *GetDLQReplicationMessagesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDLQReplicationMessagesRequest.ProtoReflect.Descriptor instead. func (*GetDLQReplicationMessagesRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{78} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{80} } -func (x *GetDLQReplicationMessagesRequest) GetTaskInfos() []*v117.ReplicationTaskInfo { +func (x *GetDLQReplicationMessagesRequest) GetTaskInfos() []*v118.ReplicationTaskInfo { if x != nil { return x.TaskInfos } @@ -5827,14 +5951,14 @@ func (x *GetDLQReplicationMessagesRequest) GetTaskInfos() []*v117.ReplicationTas type GetDLQReplicationMessagesResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - ReplicationTasks []*v117.ReplicationTask `protobuf:"bytes,1,rep,name=replication_tasks,json=replicationTasks,proto3" json:"replication_tasks,omitempty"` + ReplicationTasks []*v118.ReplicationTask `protobuf:"bytes,1,rep,name=replication_tasks,json=replicationTasks,proto3" json:"replication_tasks,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetDLQReplicationMessagesResponse) Reset() { *x = GetDLQReplicationMessagesResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[79] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5846,7 +5970,7 @@ func (x *GetDLQReplicationMessagesResponse) String() string { func (*GetDLQReplicationMessagesResponse) ProtoMessage() {} func (x *GetDLQReplicationMessagesResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[79] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5859,10 +5983,10 @@ func (x *GetDLQReplicationMessagesResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetDLQReplicationMessagesResponse.ProtoReflect.Descriptor instead. func (*GetDLQReplicationMessagesResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{79} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{81} } -func (x *GetDLQReplicationMessagesResponse) GetReplicationTasks() []*v117.ReplicationTask { +func (x *GetDLQReplicationMessagesResponse) GetReplicationTasks() []*v118.ReplicationTask { if x != nil { return x.ReplicationTasks } @@ -5879,7 +6003,7 @@ type QueryWorkflowRequest struct { func (x *QueryWorkflowRequest) Reset() { *x = QueryWorkflowRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[80] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5891,7 +6015,7 @@ func (x *QueryWorkflowRequest) String() string { func (*QueryWorkflowRequest) ProtoMessage() {} func (x *QueryWorkflowRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[80] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5904,7 +6028,7 @@ func (x *QueryWorkflowRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryWorkflowRequest.ProtoReflect.Descriptor instead. func (*QueryWorkflowRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{80} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{82} } func (x *QueryWorkflowRequest) GetNamespaceId() string { @@ -5930,7 +6054,7 @@ type QueryWorkflowResponse struct { func (x *QueryWorkflowResponse) Reset() { *x = QueryWorkflowResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[81] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5942,7 +6066,7 @@ func (x *QueryWorkflowResponse) String() string { func (*QueryWorkflowResponse) ProtoMessage() {} func (x *QueryWorkflowResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[81] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5955,7 +6079,7 @@ func (x *QueryWorkflowResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryWorkflowResponse.ProtoReflect.Descriptor instead. func (*QueryWorkflowResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{81} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{83} } func (x *QueryWorkflowResponse) GetResponse() *v1.QueryWorkflowResponse { @@ -5968,14 +6092,14 @@ func (x *QueryWorkflowResponse) GetResponse() *v1.QueryWorkflowResponse { type ReapplyEventsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - Request *v118.ReapplyEventsRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + Request *v119.ReapplyEventsRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ReapplyEventsRequest) Reset() { *x = ReapplyEventsRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[82] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5987,7 +6111,7 @@ func (x *ReapplyEventsRequest) String() string { func (*ReapplyEventsRequest) ProtoMessage() {} func (x *ReapplyEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[82] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6000,7 +6124,7 @@ func (x *ReapplyEventsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReapplyEventsRequest.ProtoReflect.Descriptor instead. func (*ReapplyEventsRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{82} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{84} } func (x *ReapplyEventsRequest) GetNamespaceId() string { @@ -6010,7 +6134,7 @@ func (x *ReapplyEventsRequest) GetNamespaceId() string { return "" } -func (x *ReapplyEventsRequest) GetRequest() *v118.ReapplyEventsRequest { +func (x *ReapplyEventsRequest) GetRequest() *v119.ReapplyEventsRequest { if x != nil { return x.Request } @@ -6025,7 +6149,7 @@ type ReapplyEventsResponse struct { func (x *ReapplyEventsResponse) Reset() { *x = ReapplyEventsResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[83] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6037,7 +6161,7 @@ func (x *ReapplyEventsResponse) String() string { func (*ReapplyEventsResponse) ProtoMessage() {} func (x *ReapplyEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[83] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6050,12 +6174,12 @@ func (x *ReapplyEventsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReapplyEventsResponse.ProtoReflect.Descriptor instead. func (*ReapplyEventsResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{83} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{85} } type GetDLQMessagesRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - Type v112.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` + Type v113.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` ShardId int32 `protobuf:"varint,2,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` SourceCluster string `protobuf:"bytes,3,opt,name=source_cluster,json=sourceCluster,proto3" json:"source_cluster,omitempty"` InclusiveEndMessageId int64 `protobuf:"varint,4,opt,name=inclusive_end_message_id,json=inclusiveEndMessageId,proto3" json:"inclusive_end_message_id,omitempty"` @@ -6067,7 +6191,7 @@ type GetDLQMessagesRequest struct { func (x *GetDLQMessagesRequest) Reset() { *x = GetDLQMessagesRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[84] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6079,7 +6203,7 @@ func (x *GetDLQMessagesRequest) String() string { func (*GetDLQMessagesRequest) ProtoMessage() {} func (x *GetDLQMessagesRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[84] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6092,14 +6216,14 @@ func (x *GetDLQMessagesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDLQMessagesRequest.ProtoReflect.Descriptor instead. func (*GetDLQMessagesRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{84} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{86} } -func (x *GetDLQMessagesRequest) GetType() v112.DeadLetterQueueType { +func (x *GetDLQMessagesRequest) GetType() v113.DeadLetterQueueType { if x != nil { return x.Type } - return v112.DeadLetterQueueType(0) + return v113.DeadLetterQueueType(0) } func (x *GetDLQMessagesRequest) GetShardId() int32 { @@ -6139,17 +6263,17 @@ func (x *GetDLQMessagesRequest) GetNextPageToken() []byte { type GetDLQMessagesResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Type v112.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` - ReplicationTasks []*v117.ReplicationTask `protobuf:"bytes,2,rep,name=replication_tasks,json=replicationTasks,proto3" json:"replication_tasks,omitempty"` + Type v113.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` + ReplicationTasks []*v118.ReplicationTask `protobuf:"bytes,2,rep,name=replication_tasks,json=replicationTasks,proto3" json:"replication_tasks,omitempty"` NextPageToken []byte `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - ReplicationTasksInfo []*v117.ReplicationTaskInfo `protobuf:"bytes,4,rep,name=replication_tasks_info,json=replicationTasksInfo,proto3" json:"replication_tasks_info,omitempty"` + ReplicationTasksInfo []*v118.ReplicationTaskInfo `protobuf:"bytes,4,rep,name=replication_tasks_info,json=replicationTasksInfo,proto3" json:"replication_tasks_info,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetDLQMessagesResponse) Reset() { *x = GetDLQMessagesResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[85] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6161,7 +6285,7 @@ func (x *GetDLQMessagesResponse) String() string { func (*GetDLQMessagesResponse) ProtoMessage() {} func (x *GetDLQMessagesResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[85] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6174,17 +6298,17 @@ func (x *GetDLQMessagesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDLQMessagesResponse.ProtoReflect.Descriptor instead. func (*GetDLQMessagesResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{85} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{87} } -func (x *GetDLQMessagesResponse) GetType() v112.DeadLetterQueueType { +func (x *GetDLQMessagesResponse) GetType() v113.DeadLetterQueueType { if x != nil { return x.Type } - return v112.DeadLetterQueueType(0) + return v113.DeadLetterQueueType(0) } -func (x *GetDLQMessagesResponse) GetReplicationTasks() []*v117.ReplicationTask { +func (x *GetDLQMessagesResponse) GetReplicationTasks() []*v118.ReplicationTask { if x != nil { return x.ReplicationTasks } @@ -6198,7 +6322,7 @@ func (x *GetDLQMessagesResponse) GetNextPageToken() []byte { return nil } -func (x *GetDLQMessagesResponse) GetReplicationTasksInfo() []*v117.ReplicationTaskInfo { +func (x *GetDLQMessagesResponse) GetReplicationTasksInfo() []*v118.ReplicationTaskInfo { if x != nil { return x.ReplicationTasksInfo } @@ -6207,7 +6331,7 @@ func (x *GetDLQMessagesResponse) GetReplicationTasksInfo() []*v117.ReplicationTa type PurgeDLQMessagesRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - Type v112.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` + Type v113.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` ShardId int32 `protobuf:"varint,2,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` SourceCluster string `protobuf:"bytes,3,opt,name=source_cluster,json=sourceCluster,proto3" json:"source_cluster,omitempty"` InclusiveEndMessageId int64 `protobuf:"varint,4,opt,name=inclusive_end_message_id,json=inclusiveEndMessageId,proto3" json:"inclusive_end_message_id,omitempty"` @@ -6217,7 +6341,7 @@ type PurgeDLQMessagesRequest struct { func (x *PurgeDLQMessagesRequest) Reset() { *x = PurgeDLQMessagesRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[86] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6229,7 +6353,7 @@ func (x *PurgeDLQMessagesRequest) String() string { func (*PurgeDLQMessagesRequest) ProtoMessage() {} func (x *PurgeDLQMessagesRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[86] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6242,14 +6366,14 @@ func (x *PurgeDLQMessagesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PurgeDLQMessagesRequest.ProtoReflect.Descriptor instead. func (*PurgeDLQMessagesRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{86} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{88} } -func (x *PurgeDLQMessagesRequest) GetType() v112.DeadLetterQueueType { +func (x *PurgeDLQMessagesRequest) GetType() v113.DeadLetterQueueType { if x != nil { return x.Type } - return v112.DeadLetterQueueType(0) + return v113.DeadLetterQueueType(0) } func (x *PurgeDLQMessagesRequest) GetShardId() int32 { @@ -6281,7 +6405,7 @@ type PurgeDLQMessagesResponse struct { func (x *PurgeDLQMessagesResponse) Reset() { *x = PurgeDLQMessagesResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[87] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6293,7 +6417,7 @@ func (x *PurgeDLQMessagesResponse) String() string { func (*PurgeDLQMessagesResponse) ProtoMessage() {} func (x *PurgeDLQMessagesResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[87] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6306,12 +6430,12 @@ func (x *PurgeDLQMessagesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PurgeDLQMessagesResponse.ProtoReflect.Descriptor instead. func (*PurgeDLQMessagesResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{87} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{89} } type MergeDLQMessagesRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - Type v112.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` + Type v113.DeadLetterQueueType `protobuf:"varint,1,opt,name=type,proto3,enum=temporal.server.api.enums.v1.DeadLetterQueueType" json:"type,omitempty"` ShardId int32 `protobuf:"varint,2,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` SourceCluster string `protobuf:"bytes,3,opt,name=source_cluster,json=sourceCluster,proto3" json:"source_cluster,omitempty"` InclusiveEndMessageId int64 `protobuf:"varint,4,opt,name=inclusive_end_message_id,json=inclusiveEndMessageId,proto3" json:"inclusive_end_message_id,omitempty"` @@ -6323,7 +6447,7 @@ type MergeDLQMessagesRequest struct { func (x *MergeDLQMessagesRequest) Reset() { *x = MergeDLQMessagesRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[88] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6335,7 +6459,7 @@ func (x *MergeDLQMessagesRequest) String() string { func (*MergeDLQMessagesRequest) ProtoMessage() {} func (x *MergeDLQMessagesRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[88] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6348,14 +6472,14 @@ func (x *MergeDLQMessagesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MergeDLQMessagesRequest.ProtoReflect.Descriptor instead. func (*MergeDLQMessagesRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{88} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{90} } -func (x *MergeDLQMessagesRequest) GetType() v112.DeadLetterQueueType { +func (x *MergeDLQMessagesRequest) GetType() v113.DeadLetterQueueType { if x != nil { return x.Type } - return v112.DeadLetterQueueType(0) + return v113.DeadLetterQueueType(0) } func (x *MergeDLQMessagesRequest) GetShardId() int32 { @@ -6402,7 +6526,7 @@ type MergeDLQMessagesResponse struct { func (x *MergeDLQMessagesResponse) Reset() { *x = MergeDLQMessagesResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[89] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6414,7 +6538,7 @@ func (x *MergeDLQMessagesResponse) String() string { func (*MergeDLQMessagesResponse) ProtoMessage() {} func (x *MergeDLQMessagesResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[89] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6427,7 +6551,7 @@ func (x *MergeDLQMessagesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MergeDLQMessagesResponse.ProtoReflect.Descriptor instead. func (*MergeDLQMessagesResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{89} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{91} } func (x *MergeDLQMessagesResponse) GetNextPageToken() []byte { @@ -6442,14 +6566,14 @@ type RefreshWorkflowTasksRequest struct { NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` // (-- api-linter: core::0141::forbidden-types=disabled --) ArchetypeId uint32 `protobuf:"varint,3,opt,name=archetype_id,json=archetypeId,proto3" json:"archetype_id,omitempty"` - Request *v118.RefreshWorkflowTasksRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + Request *v119.RefreshWorkflowTasksRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RefreshWorkflowTasksRequest) Reset() { *x = RefreshWorkflowTasksRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[90] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6461,7 +6585,7 @@ func (x *RefreshWorkflowTasksRequest) String() string { func (*RefreshWorkflowTasksRequest) ProtoMessage() {} func (x *RefreshWorkflowTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[90] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6474,7 +6598,7 @@ func (x *RefreshWorkflowTasksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshWorkflowTasksRequest.ProtoReflect.Descriptor instead. func (*RefreshWorkflowTasksRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{90} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{92} } func (x *RefreshWorkflowTasksRequest) GetNamespaceId() string { @@ -6491,7 +6615,7 @@ func (x *RefreshWorkflowTasksRequest) GetArchetypeId() uint32 { return 0 } -func (x *RefreshWorkflowTasksRequest) GetRequest() *v118.RefreshWorkflowTasksRequest { +func (x *RefreshWorkflowTasksRequest) GetRequest() *v119.RefreshWorkflowTasksRequest { if x != nil { return x.Request } @@ -6506,7 +6630,7 @@ type RefreshWorkflowTasksResponse struct { func (x *RefreshWorkflowTasksResponse) Reset() { *x = RefreshWorkflowTasksResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[91] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6518,7 +6642,7 @@ func (x *RefreshWorkflowTasksResponse) String() string { func (*RefreshWorkflowTasksResponse) ProtoMessage() {} func (x *RefreshWorkflowTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[91] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6531,7 +6655,7 @@ func (x *RefreshWorkflowTasksResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshWorkflowTasksResponse.ProtoReflect.Descriptor instead. func (*RefreshWorkflowTasksResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{91} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{93} } type GenerateLastHistoryReplicationTasksRequest struct { @@ -6547,7 +6671,7 @@ type GenerateLastHistoryReplicationTasksRequest struct { func (x *GenerateLastHistoryReplicationTasksRequest) Reset() { *x = GenerateLastHistoryReplicationTasksRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[92] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6559,7 +6683,7 @@ func (x *GenerateLastHistoryReplicationTasksRequest) String() string { func (*GenerateLastHistoryReplicationTasksRequest) ProtoMessage() {} func (x *GenerateLastHistoryReplicationTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[92] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6572,7 +6696,7 @@ func (x *GenerateLastHistoryReplicationTasksRequest) ProtoReflect() protoreflect // Deprecated: Use GenerateLastHistoryReplicationTasksRequest.ProtoReflect.Descriptor instead. func (*GenerateLastHistoryReplicationTasksRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{92} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{94} } func (x *GenerateLastHistoryReplicationTasksRequest) GetNamespaceId() string { @@ -6613,7 +6737,7 @@ type GenerateLastHistoryReplicationTasksResponse struct { func (x *GenerateLastHistoryReplicationTasksResponse) Reset() { *x = GenerateLastHistoryReplicationTasksResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[93] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6625,7 +6749,7 @@ func (x *GenerateLastHistoryReplicationTasksResponse) String() string { func (*GenerateLastHistoryReplicationTasksResponse) ProtoMessage() {} func (x *GenerateLastHistoryReplicationTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[93] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6638,7 +6762,7 @@ func (x *GenerateLastHistoryReplicationTasksResponse) ProtoReflect() protoreflec // Deprecated: Use GenerateLastHistoryReplicationTasksResponse.ProtoReflect.Descriptor instead. func (*GenerateLastHistoryReplicationTasksResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{93} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{95} } func (x *GenerateLastHistoryReplicationTasksResponse) GetStateTransitionCount() int64 { @@ -6665,7 +6789,7 @@ type GetReplicationStatusRequest struct { func (x *GetReplicationStatusRequest) Reset() { *x = GetReplicationStatusRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[94] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6677,7 +6801,7 @@ func (x *GetReplicationStatusRequest) String() string { func (*GetReplicationStatusRequest) ProtoMessage() {} func (x *GetReplicationStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[94] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6690,7 +6814,7 @@ func (x *GetReplicationStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetReplicationStatusRequest.ProtoReflect.Descriptor instead. func (*GetReplicationStatusRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{94} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{96} } func (x *GetReplicationStatusRequest) GetRemoteClusters() []string { @@ -6709,7 +6833,7 @@ type GetReplicationStatusResponse struct { func (x *GetReplicationStatusResponse) Reset() { *x = GetReplicationStatusResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[95] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6721,7 +6845,7 @@ func (x *GetReplicationStatusResponse) String() string { func (*GetReplicationStatusResponse) ProtoMessage() {} func (x *GetReplicationStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[95] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6734,7 +6858,7 @@ func (x *GetReplicationStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetReplicationStatusResponse.ProtoReflect.Descriptor instead. func (*GetReplicationStatusResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{95} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{97} } func (x *GetReplicationStatusResponse) GetShards() []*ShardReplicationStatus { @@ -6760,7 +6884,7 @@ type ShardReplicationStatus struct { func (x *ShardReplicationStatus) Reset() { *x = ShardReplicationStatus{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[96] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6772,7 +6896,7 @@ func (x *ShardReplicationStatus) String() string { func (*ShardReplicationStatus) ProtoMessage() {} func (x *ShardReplicationStatus) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[96] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6785,7 +6909,7 @@ func (x *ShardReplicationStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use ShardReplicationStatus.ProtoReflect.Descriptor instead. func (*ShardReplicationStatus) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{96} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{98} } func (x *ShardReplicationStatus) GetShardId() int32 { @@ -6840,7 +6964,7 @@ type HandoverNamespaceInfo struct { func (x *HandoverNamespaceInfo) Reset() { *x = HandoverNamespaceInfo{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[97] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6852,7 +6976,7 @@ func (x *HandoverNamespaceInfo) String() string { func (*HandoverNamespaceInfo) ProtoMessage() {} func (x *HandoverNamespaceInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[97] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6865,7 +6989,7 @@ func (x *HandoverNamespaceInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use HandoverNamespaceInfo.ProtoReflect.Descriptor instead. func (*HandoverNamespaceInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{97} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{99} } func (x *HandoverNamespaceInfo) GetHandoverReplicationTaskId() int64 { @@ -6887,7 +7011,7 @@ type ShardReplicationStatusPerCluster struct { func (x *ShardReplicationStatusPerCluster) Reset() { *x = ShardReplicationStatusPerCluster{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[98] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6899,7 +7023,7 @@ func (x *ShardReplicationStatusPerCluster) String() string { func (*ShardReplicationStatusPerCluster) ProtoMessage() {} func (x *ShardReplicationStatusPerCluster) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[98] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6912,7 +7036,7 @@ func (x *ShardReplicationStatusPerCluster) ProtoReflect() protoreflect.Message { // Deprecated: Use ShardReplicationStatusPerCluster.ProtoReflect.Descriptor instead. func (*ShardReplicationStatusPerCluster) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{98} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{100} } func (x *ShardReplicationStatusPerCluster) GetAckedTaskId() int64 { @@ -6939,7 +7063,7 @@ type RebuildMutableStateRequest struct { func (x *RebuildMutableStateRequest) Reset() { *x = RebuildMutableStateRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[99] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6951,7 +7075,7 @@ func (x *RebuildMutableStateRequest) String() string { func (*RebuildMutableStateRequest) ProtoMessage() {} func (x *RebuildMutableStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[99] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6964,7 +7088,7 @@ func (x *RebuildMutableStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RebuildMutableStateRequest.ProtoReflect.Descriptor instead. func (*RebuildMutableStateRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{99} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{101} } func (x *RebuildMutableStateRequest) GetNamespaceId() string { @@ -6989,7 +7113,7 @@ type RebuildMutableStateResponse struct { func (x *RebuildMutableStateResponse) Reset() { *x = RebuildMutableStateResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[100] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7001,7 +7125,7 @@ func (x *RebuildMutableStateResponse) String() string { func (*RebuildMutableStateResponse) ProtoMessage() {} func (x *RebuildMutableStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[100] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[102] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7014,7 +7138,7 @@ func (x *RebuildMutableStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RebuildMutableStateResponse.ProtoReflect.Descriptor instead. func (*RebuildMutableStateResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{100} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{102} } type ImportWorkflowExecutionRequest struct { @@ -7022,7 +7146,7 @@ type ImportWorkflowExecutionRequest struct { NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` Execution *v14.WorkflowExecution `protobuf:"bytes,2,opt,name=execution,proto3" json:"execution,omitempty"` HistoryBatches []*v14.DataBlob `protobuf:"bytes,3,rep,name=history_batches,json=historyBatches,proto3" json:"history_batches,omitempty"` - VersionHistory *v19.VersionHistory `protobuf:"bytes,4,opt,name=version_history,json=versionHistory,proto3" json:"version_history,omitempty"` + VersionHistory *v110.VersionHistory `protobuf:"bytes,4,opt,name=version_history,json=versionHistory,proto3" json:"version_history,omitempty"` Token []byte `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -7030,7 +7154,7 @@ type ImportWorkflowExecutionRequest struct { func (x *ImportWorkflowExecutionRequest) Reset() { *x = ImportWorkflowExecutionRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[101] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7042,7 +7166,7 @@ func (x *ImportWorkflowExecutionRequest) String() string { func (*ImportWorkflowExecutionRequest) ProtoMessage() {} func (x *ImportWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[101] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[103] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7055,7 +7179,7 @@ func (x *ImportWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ImportWorkflowExecutionRequest.ProtoReflect.Descriptor instead. func (*ImportWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{101} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{103} } func (x *ImportWorkflowExecutionRequest) GetNamespaceId() string { @@ -7079,7 +7203,7 @@ func (x *ImportWorkflowExecutionRequest) GetHistoryBatches() []*v14.DataBlob { return nil } -func (x *ImportWorkflowExecutionRequest) GetVersionHistory() *v19.VersionHistory { +func (x *ImportWorkflowExecutionRequest) GetVersionHistory() *v110.VersionHistory { if x != nil { return x.VersionHistory } @@ -7103,7 +7227,7 @@ type ImportWorkflowExecutionResponse struct { func (x *ImportWorkflowExecutionResponse) Reset() { *x = ImportWorkflowExecutionResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[102] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7115,7 +7239,7 @@ func (x *ImportWorkflowExecutionResponse) String() string { func (*ImportWorkflowExecutionResponse) ProtoMessage() {} func (x *ImportWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[102] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[104] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7128,7 +7252,7 @@ func (x *ImportWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ImportWorkflowExecutionResponse.ProtoReflect.Descriptor instead. func (*ImportWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{102} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{104} } func (x *ImportWorkflowExecutionResponse) GetToken() []byte { @@ -7157,7 +7281,7 @@ type DeleteWorkflowVisibilityRecordRequest struct { func (x *DeleteWorkflowVisibilityRecordRequest) Reset() { *x = DeleteWorkflowVisibilityRecordRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[103] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7169,7 +7293,7 @@ func (x *DeleteWorkflowVisibilityRecordRequest) String() string { func (*DeleteWorkflowVisibilityRecordRequest) ProtoMessage() {} func (x *DeleteWorkflowVisibilityRecordRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[103] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[105] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7182,7 +7306,7 @@ func (x *DeleteWorkflowVisibilityRecordRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use DeleteWorkflowVisibilityRecordRequest.ProtoReflect.Descriptor instead. func (*DeleteWorkflowVisibilityRecordRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{103} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{105} } func (x *DeleteWorkflowVisibilityRecordRequest) GetNamespaceId() string { @@ -7221,7 +7345,7 @@ type DeleteWorkflowVisibilityRecordResponse struct { func (x *DeleteWorkflowVisibilityRecordResponse) Reset() { *x = DeleteWorkflowVisibilityRecordResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[104] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7233,7 +7357,7 @@ func (x *DeleteWorkflowVisibilityRecordResponse) String() string { func (*DeleteWorkflowVisibilityRecordResponse) ProtoMessage() {} func (x *DeleteWorkflowVisibilityRecordResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[104] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[106] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7246,7 +7370,7 @@ func (x *DeleteWorkflowVisibilityRecordResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use DeleteWorkflowVisibilityRecordResponse.ProtoReflect.Descriptor instead. func (*DeleteWorkflowVisibilityRecordResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{104} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{106} } // (-- api-linter: core::0134=disabled @@ -7262,7 +7386,7 @@ type UpdateWorkflowExecutionRequest struct { func (x *UpdateWorkflowExecutionRequest) Reset() { *x = UpdateWorkflowExecutionRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[105] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7274,7 +7398,7 @@ func (x *UpdateWorkflowExecutionRequest) String() string { func (*UpdateWorkflowExecutionRequest) ProtoMessage() {} func (x *UpdateWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[105] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[107] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7287,7 +7411,7 @@ func (x *UpdateWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateWorkflowExecutionRequest.ProtoReflect.Descriptor instead. func (*UpdateWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{105} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{107} } func (x *UpdateWorkflowExecutionRequest) GetNamespaceId() string { @@ -7313,7 +7437,7 @@ type UpdateWorkflowExecutionResponse struct { func (x *UpdateWorkflowExecutionResponse) Reset() { *x = UpdateWorkflowExecutionResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[106] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7325,7 +7449,7 @@ func (x *UpdateWorkflowExecutionResponse) String() string { func (*UpdateWorkflowExecutionResponse) ProtoMessage() {} func (x *UpdateWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[106] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[108] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7338,7 +7462,7 @@ func (x *UpdateWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateWorkflowExecutionResponse.ProtoReflect.Descriptor instead. func (*UpdateWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{106} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{108} } func (x *UpdateWorkflowExecutionResponse) GetResponse() *v1.UpdateWorkflowExecutionResponse { @@ -7360,7 +7484,7 @@ type StreamWorkflowReplicationMessagesRequest struct { func (x *StreamWorkflowReplicationMessagesRequest) Reset() { *x = StreamWorkflowReplicationMessagesRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[107] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7372,7 +7496,7 @@ func (x *StreamWorkflowReplicationMessagesRequest) String() string { func (*StreamWorkflowReplicationMessagesRequest) ProtoMessage() {} func (x *StreamWorkflowReplicationMessagesRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[107] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[109] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7385,7 +7509,7 @@ func (x *StreamWorkflowReplicationMessagesRequest) ProtoReflect() protoreflect.M // Deprecated: Use StreamWorkflowReplicationMessagesRequest.ProtoReflect.Descriptor instead. func (*StreamWorkflowReplicationMessagesRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{107} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{109} } func (x *StreamWorkflowReplicationMessagesRequest) GetAttributes() isStreamWorkflowReplicationMessagesRequest_Attributes { @@ -7395,7 +7519,7 @@ func (x *StreamWorkflowReplicationMessagesRequest) GetAttributes() isStreamWorkf return nil } -func (x *StreamWorkflowReplicationMessagesRequest) GetSyncReplicationState() *v117.SyncReplicationState { +func (x *StreamWorkflowReplicationMessagesRequest) GetSyncReplicationState() *v118.SyncReplicationState { if x != nil { if x, ok := x.Attributes.(*StreamWorkflowReplicationMessagesRequest_SyncReplicationState); ok { return x.SyncReplicationState @@ -7409,7 +7533,7 @@ type isStreamWorkflowReplicationMessagesRequest_Attributes interface { } type StreamWorkflowReplicationMessagesRequest_SyncReplicationState struct { - SyncReplicationState *v117.SyncReplicationState `protobuf:"bytes,1,opt,name=sync_replication_state,json=syncReplicationState,proto3,oneof"` + SyncReplicationState *v118.SyncReplicationState `protobuf:"bytes,1,opt,name=sync_replication_state,json=syncReplicationState,proto3,oneof"` } func (*StreamWorkflowReplicationMessagesRequest_SyncReplicationState) isStreamWorkflowReplicationMessagesRequest_Attributes() { @@ -7427,7 +7551,7 @@ type StreamWorkflowReplicationMessagesResponse struct { func (x *StreamWorkflowReplicationMessagesResponse) Reset() { *x = StreamWorkflowReplicationMessagesResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[108] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7439,7 +7563,7 @@ func (x *StreamWorkflowReplicationMessagesResponse) String() string { func (*StreamWorkflowReplicationMessagesResponse) ProtoMessage() {} func (x *StreamWorkflowReplicationMessagesResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[108] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[110] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7452,7 +7576,7 @@ func (x *StreamWorkflowReplicationMessagesResponse) ProtoReflect() protoreflect. // Deprecated: Use StreamWorkflowReplicationMessagesResponse.ProtoReflect.Descriptor instead. func (*StreamWorkflowReplicationMessagesResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{108} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{110} } func (x *StreamWorkflowReplicationMessagesResponse) GetAttributes() isStreamWorkflowReplicationMessagesResponse_Attributes { @@ -7462,7 +7586,7 @@ func (x *StreamWorkflowReplicationMessagesResponse) GetAttributes() isStreamWork return nil } -func (x *StreamWorkflowReplicationMessagesResponse) GetMessages() *v117.WorkflowReplicationMessages { +func (x *StreamWorkflowReplicationMessagesResponse) GetMessages() *v118.WorkflowReplicationMessages { if x != nil { if x, ok := x.Attributes.(*StreamWorkflowReplicationMessagesResponse_Messages); ok { return x.Messages @@ -7476,7 +7600,7 @@ type isStreamWorkflowReplicationMessagesResponse_Attributes interface { } type StreamWorkflowReplicationMessagesResponse_Messages struct { - Messages *v117.WorkflowReplicationMessages `protobuf:"bytes,1,opt,name=messages,proto3,oneof"` + Messages *v118.WorkflowReplicationMessages `protobuf:"bytes,1,opt,name=messages,proto3,oneof"` } func (*StreamWorkflowReplicationMessagesResponse_Messages) isStreamWorkflowReplicationMessagesResponse_Attributes() { @@ -7492,7 +7616,7 @@ type PollWorkflowExecutionUpdateRequest struct { func (x *PollWorkflowExecutionUpdateRequest) Reset() { *x = PollWorkflowExecutionUpdateRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[109] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7504,7 +7628,7 @@ func (x *PollWorkflowExecutionUpdateRequest) String() string { func (*PollWorkflowExecutionUpdateRequest) ProtoMessage() {} func (x *PollWorkflowExecutionUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[109] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[111] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7517,7 +7641,7 @@ func (x *PollWorkflowExecutionUpdateRequest) ProtoReflect() protoreflect.Message // Deprecated: Use PollWorkflowExecutionUpdateRequest.ProtoReflect.Descriptor instead. func (*PollWorkflowExecutionUpdateRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{109} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{111} } func (x *PollWorkflowExecutionUpdateRequest) GetNamespaceId() string { @@ -7543,7 +7667,7 @@ type PollWorkflowExecutionUpdateResponse struct { func (x *PollWorkflowExecutionUpdateResponse) Reset() { *x = PollWorkflowExecutionUpdateResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[110] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7555,7 +7679,7 @@ func (x *PollWorkflowExecutionUpdateResponse) String() string { func (*PollWorkflowExecutionUpdateResponse) ProtoMessage() {} func (x *PollWorkflowExecutionUpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[110] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[112] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7568,7 +7692,7 @@ func (x *PollWorkflowExecutionUpdateResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use PollWorkflowExecutionUpdateResponse.ProtoReflect.Descriptor instead. func (*PollWorkflowExecutionUpdateResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{110} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{112} } func (x *PollWorkflowExecutionUpdateResponse) GetResponse() *v1.PollWorkflowExecutionUpdateResponse { @@ -7588,7 +7712,7 @@ type GetWorkflowExecutionHistoryRequest struct { func (x *GetWorkflowExecutionHistoryRequest) Reset() { *x = GetWorkflowExecutionHistoryRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[111] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7600,7 +7724,7 @@ func (x *GetWorkflowExecutionHistoryRequest) String() string { func (*GetWorkflowExecutionHistoryRequest) ProtoMessage() {} func (x *GetWorkflowExecutionHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[111] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[113] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7613,7 +7737,7 @@ func (x *GetWorkflowExecutionHistoryRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetWorkflowExecutionHistoryRequest.ProtoReflect.Descriptor instead. func (*GetWorkflowExecutionHistoryRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{111} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{113} } func (x *GetWorkflowExecutionHistoryRequest) GetNamespaceId() string { @@ -7640,7 +7764,7 @@ type GetWorkflowExecutionHistoryResponse struct { func (x *GetWorkflowExecutionHistoryResponse) Reset() { *x = GetWorkflowExecutionHistoryResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[112] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7652,7 +7776,7 @@ func (x *GetWorkflowExecutionHistoryResponse) String() string { func (*GetWorkflowExecutionHistoryResponse) ProtoMessage() {} func (x *GetWorkflowExecutionHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[112] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[114] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7665,7 +7789,7 @@ func (x *GetWorkflowExecutionHistoryResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use GetWorkflowExecutionHistoryResponse.ProtoReflect.Descriptor instead. func (*GetWorkflowExecutionHistoryResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{112} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{114} } func (x *GetWorkflowExecutionHistoryResponse) GetResponse() *v1.GetWorkflowExecutionHistoryResponse { @@ -7693,7 +7817,7 @@ type GetWorkflowExecutionHistoryResponseWithRaw struct { func (x *GetWorkflowExecutionHistoryResponseWithRaw) Reset() { *x = GetWorkflowExecutionHistoryResponseWithRaw{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[113] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7705,7 +7829,7 @@ func (x *GetWorkflowExecutionHistoryResponseWithRaw) String() string { func (*GetWorkflowExecutionHistoryResponseWithRaw) ProtoMessage() {} func (x *GetWorkflowExecutionHistoryResponseWithRaw) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[113] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[115] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7718,7 +7842,7 @@ func (x *GetWorkflowExecutionHistoryResponseWithRaw) ProtoReflect() protoreflect // Deprecated: Use GetWorkflowExecutionHistoryResponseWithRaw.ProtoReflect.Descriptor instead. func (*GetWorkflowExecutionHistoryResponseWithRaw) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{113} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{115} } func (x *GetWorkflowExecutionHistoryResponseWithRaw) GetResponse() *v1.GetWorkflowExecutionHistoryResponse { @@ -7745,7 +7869,7 @@ type GetWorkflowExecutionHistoryReverseRequest struct { func (x *GetWorkflowExecutionHistoryReverseRequest) Reset() { *x = GetWorkflowExecutionHistoryReverseRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[114] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7757,7 +7881,7 @@ func (x *GetWorkflowExecutionHistoryReverseRequest) String() string { func (*GetWorkflowExecutionHistoryReverseRequest) ProtoMessage() {} func (x *GetWorkflowExecutionHistoryReverseRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[114] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[116] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7770,7 +7894,7 @@ func (x *GetWorkflowExecutionHistoryReverseRequest) ProtoReflect() protoreflect. // Deprecated: Use GetWorkflowExecutionHistoryReverseRequest.ProtoReflect.Descriptor instead. func (*GetWorkflowExecutionHistoryReverseRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{114} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{116} } func (x *GetWorkflowExecutionHistoryReverseRequest) GetNamespaceId() string { @@ -7796,7 +7920,7 @@ type GetWorkflowExecutionHistoryReverseResponse struct { func (x *GetWorkflowExecutionHistoryReverseResponse) Reset() { *x = GetWorkflowExecutionHistoryReverseResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[115] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7808,7 +7932,7 @@ func (x *GetWorkflowExecutionHistoryReverseResponse) String() string { func (*GetWorkflowExecutionHistoryReverseResponse) ProtoMessage() {} func (x *GetWorkflowExecutionHistoryReverseResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[115] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[117] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7821,7 +7945,7 @@ func (x *GetWorkflowExecutionHistoryReverseResponse) ProtoReflect() protoreflect // Deprecated: Use GetWorkflowExecutionHistoryReverseResponse.ProtoReflect.Descriptor instead. func (*GetWorkflowExecutionHistoryReverseResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{115} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{117} } func (x *GetWorkflowExecutionHistoryReverseResponse) GetResponse() *v1.GetWorkflowExecutionHistoryReverseResponse { @@ -7837,14 +7961,14 @@ func (x *GetWorkflowExecutionHistoryReverseResponse) GetResponse() *v1.GetWorkfl type GetWorkflowExecutionRawHistoryV2Request struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - Request *v118.GetWorkflowExecutionRawHistoryV2Request `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + Request *v119.GetWorkflowExecutionRawHistoryV2Request `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetWorkflowExecutionRawHistoryV2Request) Reset() { *x = GetWorkflowExecutionRawHistoryV2Request{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[116] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7856,7 +7980,7 @@ func (x *GetWorkflowExecutionRawHistoryV2Request) String() string { func (*GetWorkflowExecutionRawHistoryV2Request) ProtoMessage() {} func (x *GetWorkflowExecutionRawHistoryV2Request) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[116] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[118] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7869,7 +7993,7 @@ func (x *GetWorkflowExecutionRawHistoryV2Request) ProtoReflect() protoreflect.Me // Deprecated: Use GetWorkflowExecutionRawHistoryV2Request.ProtoReflect.Descriptor instead. func (*GetWorkflowExecutionRawHistoryV2Request) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{116} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{118} } func (x *GetWorkflowExecutionRawHistoryV2Request) GetNamespaceId() string { @@ -7879,7 +8003,7 @@ func (x *GetWorkflowExecutionRawHistoryV2Request) GetNamespaceId() string { return "" } -func (x *GetWorkflowExecutionRawHistoryV2Request) GetRequest() *v118.GetWorkflowExecutionRawHistoryV2Request { +func (x *GetWorkflowExecutionRawHistoryV2Request) GetRequest() *v119.GetWorkflowExecutionRawHistoryV2Request { if x != nil { return x.Request } @@ -7888,14 +8012,14 @@ func (x *GetWorkflowExecutionRawHistoryV2Request) GetRequest() *v118.GetWorkflow type GetWorkflowExecutionRawHistoryV2Response struct { state protoimpl.MessageState `protogen:"open.v1"` - Response *v118.GetWorkflowExecutionRawHistoryV2Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Response *v119.GetWorkflowExecutionRawHistoryV2Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetWorkflowExecutionRawHistoryV2Response) Reset() { *x = GetWorkflowExecutionRawHistoryV2Response{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[117] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7907,7 +8031,7 @@ func (x *GetWorkflowExecutionRawHistoryV2Response) String() string { func (*GetWorkflowExecutionRawHistoryV2Response) ProtoMessage() {} func (x *GetWorkflowExecutionRawHistoryV2Response) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[117] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[119] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7920,10 +8044,10 @@ func (x *GetWorkflowExecutionRawHistoryV2Response) ProtoReflect() protoreflect.M // Deprecated: Use GetWorkflowExecutionRawHistoryV2Response.ProtoReflect.Descriptor instead. func (*GetWorkflowExecutionRawHistoryV2Response) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{117} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{119} } -func (x *GetWorkflowExecutionRawHistoryV2Response) GetResponse() *v118.GetWorkflowExecutionRawHistoryV2Response { +func (x *GetWorkflowExecutionRawHistoryV2Response) GetResponse() *v119.GetWorkflowExecutionRawHistoryV2Response { if x != nil { return x.Response } @@ -7933,14 +8057,14 @@ func (x *GetWorkflowExecutionRawHistoryV2Response) GetResponse() *v118.GetWorkfl type GetWorkflowExecutionRawHistoryRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - Request *v118.GetWorkflowExecutionRawHistoryRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + Request *v119.GetWorkflowExecutionRawHistoryRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetWorkflowExecutionRawHistoryRequest) Reset() { *x = GetWorkflowExecutionRawHistoryRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[118] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7952,7 +8076,7 @@ func (x *GetWorkflowExecutionRawHistoryRequest) String() string { func (*GetWorkflowExecutionRawHistoryRequest) ProtoMessage() {} func (x *GetWorkflowExecutionRawHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[118] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[120] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7965,7 +8089,7 @@ func (x *GetWorkflowExecutionRawHistoryRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use GetWorkflowExecutionRawHistoryRequest.ProtoReflect.Descriptor instead. func (*GetWorkflowExecutionRawHistoryRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{118} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{120} } func (x *GetWorkflowExecutionRawHistoryRequest) GetNamespaceId() string { @@ -7975,7 +8099,7 @@ func (x *GetWorkflowExecutionRawHistoryRequest) GetNamespaceId() string { return "" } -func (x *GetWorkflowExecutionRawHistoryRequest) GetRequest() *v118.GetWorkflowExecutionRawHistoryRequest { +func (x *GetWorkflowExecutionRawHistoryRequest) GetRequest() *v119.GetWorkflowExecutionRawHistoryRequest { if x != nil { return x.Request } @@ -7984,14 +8108,14 @@ func (x *GetWorkflowExecutionRawHistoryRequest) GetRequest() *v118.GetWorkflowEx type GetWorkflowExecutionRawHistoryResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Response *v118.GetWorkflowExecutionRawHistoryResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Response *v119.GetWorkflowExecutionRawHistoryResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GetWorkflowExecutionRawHistoryResponse) Reset() { *x = GetWorkflowExecutionRawHistoryResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[119] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8003,7 +8127,7 @@ func (x *GetWorkflowExecutionRawHistoryResponse) String() string { func (*GetWorkflowExecutionRawHistoryResponse) ProtoMessage() {} func (x *GetWorkflowExecutionRawHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[119] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[121] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8016,10 +8140,10 @@ func (x *GetWorkflowExecutionRawHistoryResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use GetWorkflowExecutionRawHistoryResponse.ProtoReflect.Descriptor instead. func (*GetWorkflowExecutionRawHistoryResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{119} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{121} } -func (x *GetWorkflowExecutionRawHistoryResponse) GetResponse() *v118.GetWorkflowExecutionRawHistoryResponse { +func (x *GetWorkflowExecutionRawHistoryResponse) GetResponse() *v119.GetWorkflowExecutionRawHistoryResponse { if x != nil { return x.Response } @@ -8031,14 +8155,14 @@ type ForceDeleteWorkflowExecutionRequest struct { NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` // (-- api-linter: core::0141::forbidden-types=disabled --) ArchetypeId uint32 `protobuf:"varint,3,opt,name=archetype_id,json=archetypeId,proto3" json:"archetype_id,omitempty"` - Request *v118.DeleteWorkflowExecutionRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + Request *v119.DeleteWorkflowExecutionRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ForceDeleteWorkflowExecutionRequest) Reset() { *x = ForceDeleteWorkflowExecutionRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[120] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8050,7 +8174,7 @@ func (x *ForceDeleteWorkflowExecutionRequest) String() string { func (*ForceDeleteWorkflowExecutionRequest) ProtoMessage() {} func (x *ForceDeleteWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[120] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[122] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8063,7 +8187,7 @@ func (x *ForceDeleteWorkflowExecutionRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use ForceDeleteWorkflowExecutionRequest.ProtoReflect.Descriptor instead. func (*ForceDeleteWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{120} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{122} } func (x *ForceDeleteWorkflowExecutionRequest) GetNamespaceId() string { @@ -8080,7 +8204,7 @@ func (x *ForceDeleteWorkflowExecutionRequest) GetArchetypeId() uint32 { return 0 } -func (x *ForceDeleteWorkflowExecutionRequest) GetRequest() *v118.DeleteWorkflowExecutionRequest { +func (x *ForceDeleteWorkflowExecutionRequest) GetRequest() *v119.DeleteWorkflowExecutionRequest { if x != nil { return x.Request } @@ -8089,14 +8213,14 @@ func (x *ForceDeleteWorkflowExecutionRequest) GetRequest() *v118.DeleteWorkflowE type ForceDeleteWorkflowExecutionResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Response *v118.DeleteWorkflowExecutionResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Response *v119.DeleteWorkflowExecutionResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ForceDeleteWorkflowExecutionResponse) Reset() { *x = ForceDeleteWorkflowExecutionResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[121] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8108,7 +8232,7 @@ func (x *ForceDeleteWorkflowExecutionResponse) String() string { func (*ForceDeleteWorkflowExecutionResponse) ProtoMessage() {} func (x *ForceDeleteWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[121] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[123] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8121,10 +8245,10 @@ func (x *ForceDeleteWorkflowExecutionResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use ForceDeleteWorkflowExecutionResponse.ProtoReflect.Descriptor instead. func (*ForceDeleteWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{121} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{123} } -func (x *ForceDeleteWorkflowExecutionResponse) GetResponse() *v118.DeleteWorkflowExecutionResponse { +func (x *ForceDeleteWorkflowExecutionResponse) GetResponse() *v119.DeleteWorkflowExecutionResponse { if x != nil { return x.Response } @@ -8145,7 +8269,7 @@ type DeleteExecutionRequest struct { func (x *DeleteExecutionRequest) Reset() { *x = DeleteExecutionRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[122] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8157,7 +8281,7 @@ func (x *DeleteExecutionRequest) String() string { func (*DeleteExecutionRequest) ProtoMessage() {} func (x *DeleteExecutionRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[122] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[124] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8170,7 +8294,7 @@ func (x *DeleteExecutionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteExecutionRequest.ProtoReflect.Descriptor instead. func (*DeleteExecutionRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{122} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{124} } func (x *DeleteExecutionRequest) GetNamespaceId() string { @@ -8216,7 +8340,7 @@ type DeleteExecutionResponse struct { func (x *DeleteExecutionResponse) Reset() { *x = DeleteExecutionResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[123] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8228,7 +8352,7 @@ func (x *DeleteExecutionResponse) String() string { func (*DeleteExecutionResponse) ProtoMessage() {} func (x *DeleteExecutionResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[123] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[125] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8241,12 +8365,12 @@ func (x *DeleteExecutionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteExecutionResponse.ProtoReflect.Descriptor instead. func (*DeleteExecutionResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{123} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{125} } type GetDLQTasksRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - DlqKey *v119.HistoryDLQKey `protobuf:"bytes,1,opt,name=dlq_key,json=dlqKey,proto3" json:"dlq_key,omitempty"` + DlqKey *v120.HistoryDLQKey `protobuf:"bytes,1,opt,name=dlq_key,json=dlqKey,proto3" json:"dlq_key,omitempty"` // page_size must be positive. Up to this many tasks will be returned. PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` NextPageToken []byte `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` @@ -8256,7 +8380,7 @@ type GetDLQTasksRequest struct { func (x *GetDLQTasksRequest) Reset() { *x = GetDLQTasksRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[124] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8268,7 +8392,7 @@ func (x *GetDLQTasksRequest) String() string { func (*GetDLQTasksRequest) ProtoMessage() {} func (x *GetDLQTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[124] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[126] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8281,10 +8405,10 @@ func (x *GetDLQTasksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDLQTasksRequest.ProtoReflect.Descriptor instead. func (*GetDLQTasksRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{124} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{126} } -func (x *GetDLQTasksRequest) GetDlqKey() *v119.HistoryDLQKey { +func (x *GetDLQTasksRequest) GetDlqKey() *v120.HistoryDLQKey { if x != nil { return x.DlqKey } @@ -8307,7 +8431,7 @@ func (x *GetDLQTasksRequest) GetNextPageToken() []byte { type GetDLQTasksResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - DlqTasks []*v119.HistoryDLQTask `protobuf:"bytes,1,rep,name=dlq_tasks,json=dlqTasks,proto3" json:"dlq_tasks,omitempty"` + DlqTasks []*v120.HistoryDLQTask `protobuf:"bytes,1,rep,name=dlq_tasks,json=dlqTasks,proto3" json:"dlq_tasks,omitempty"` // next_page_token is empty if there are no more results. However, the converse is not true. If there are no more // results, this field may still be non-empty. This is to avoid having to do a count query to determine whether // there are more results. @@ -8318,7 +8442,7 @@ type GetDLQTasksResponse struct { func (x *GetDLQTasksResponse) Reset() { *x = GetDLQTasksResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[125] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8330,7 +8454,7 @@ func (x *GetDLQTasksResponse) String() string { func (*GetDLQTasksResponse) ProtoMessage() {} func (x *GetDLQTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[125] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[127] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8343,10 +8467,10 @@ func (x *GetDLQTasksResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDLQTasksResponse.ProtoReflect.Descriptor instead. func (*GetDLQTasksResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{125} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{127} } -func (x *GetDLQTasksResponse) GetDlqTasks() []*v119.HistoryDLQTask { +func (x *GetDLQTasksResponse) GetDlqTasks() []*v120.HistoryDLQTask { if x != nil { return x.DlqTasks } @@ -8362,15 +8486,15 @@ func (x *GetDLQTasksResponse) GetNextPageToken() []byte { type DeleteDLQTasksRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - DlqKey *v119.HistoryDLQKey `protobuf:"bytes,1,opt,name=dlq_key,json=dlqKey,proto3" json:"dlq_key,omitempty"` - InclusiveMaxTaskMetadata *v119.HistoryDLQTaskMetadata `protobuf:"bytes,2,opt,name=inclusive_max_task_metadata,json=inclusiveMaxTaskMetadata,proto3" json:"inclusive_max_task_metadata,omitempty"` + DlqKey *v120.HistoryDLQKey `protobuf:"bytes,1,opt,name=dlq_key,json=dlqKey,proto3" json:"dlq_key,omitempty"` + InclusiveMaxTaskMetadata *v120.HistoryDLQTaskMetadata `protobuf:"bytes,2,opt,name=inclusive_max_task_metadata,json=inclusiveMaxTaskMetadata,proto3" json:"inclusive_max_task_metadata,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DeleteDLQTasksRequest) Reset() { *x = DeleteDLQTasksRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[126] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8382,7 +8506,7 @@ func (x *DeleteDLQTasksRequest) String() string { func (*DeleteDLQTasksRequest) ProtoMessage() {} func (x *DeleteDLQTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[126] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[128] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8395,17 +8519,17 @@ func (x *DeleteDLQTasksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteDLQTasksRequest.ProtoReflect.Descriptor instead. func (*DeleteDLQTasksRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{126} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{128} } -func (x *DeleteDLQTasksRequest) GetDlqKey() *v119.HistoryDLQKey { +func (x *DeleteDLQTasksRequest) GetDlqKey() *v120.HistoryDLQKey { if x != nil { return x.DlqKey } return nil } -func (x *DeleteDLQTasksRequest) GetInclusiveMaxTaskMetadata() *v119.HistoryDLQTaskMetadata { +func (x *DeleteDLQTasksRequest) GetInclusiveMaxTaskMetadata() *v120.HistoryDLQTaskMetadata { if x != nil { return x.InclusiveMaxTaskMetadata } @@ -8422,7 +8546,7 @@ type DeleteDLQTasksResponse struct { func (x *DeleteDLQTasksResponse) Reset() { *x = DeleteDLQTasksResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[127] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8434,7 +8558,7 @@ func (x *DeleteDLQTasksResponse) String() string { func (*DeleteDLQTasksResponse) ProtoMessage() {} func (x *DeleteDLQTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[127] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[129] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8447,7 +8571,7 @@ func (x *DeleteDLQTasksResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteDLQTasksResponse.ProtoReflect.Descriptor instead. func (*DeleteDLQTasksResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{127} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{129} } func (x *DeleteDLQTasksResponse) GetMessagesDeleted() int64 { @@ -8468,7 +8592,7 @@ type ListQueuesRequest struct { func (x *ListQueuesRequest) Reset() { *x = ListQueuesRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[128] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8480,7 +8604,7 @@ func (x *ListQueuesRequest) String() string { func (*ListQueuesRequest) ProtoMessage() {} func (x *ListQueuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[128] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[130] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8493,7 +8617,7 @@ func (x *ListQueuesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListQueuesRequest.ProtoReflect.Descriptor instead. func (*ListQueuesRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{128} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{130} } func (x *ListQueuesRequest) GetQueueType() int32 { @@ -8527,7 +8651,7 @@ type ListQueuesResponse struct { func (x *ListQueuesResponse) Reset() { *x = ListQueuesResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[129] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8539,7 +8663,7 @@ func (x *ListQueuesResponse) String() string { func (*ListQueuesResponse) ProtoMessage() {} func (x *ListQueuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[129] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[131] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8552,7 +8676,7 @@ func (x *ListQueuesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListQueuesResponse.ProtoReflect.Descriptor instead. func (*ListQueuesResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{129} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{131} } func (x *ListQueuesResponse) GetQueues() []*ListQueuesResponse_QueueInfo { @@ -8583,7 +8707,7 @@ type AddTasksRequest struct { func (x *AddTasksRequest) Reset() { *x = AddTasksRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[130] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8595,7 +8719,7 @@ func (x *AddTasksRequest) String() string { func (*AddTasksRequest) ProtoMessage() {} func (x *AddTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[130] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[132] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8608,7 +8732,7 @@ func (x *AddTasksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTasksRequest.ProtoReflect.Descriptor instead. func (*AddTasksRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{130} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{132} } func (x *AddTasksRequest) GetShardId() int32 { @@ -8633,7 +8757,7 @@ type AddTasksResponse struct { func (x *AddTasksResponse) Reset() { *x = AddTasksResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[131] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8645,7 +8769,7 @@ func (x *AddTasksResponse) String() string { func (*AddTasksResponse) ProtoMessage() {} func (x *AddTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[131] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[133] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8658,19 +8782,19 @@ func (x *AddTasksResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTasksResponse.ProtoReflect.Descriptor instead. func (*AddTasksResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{131} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{133} } type ListTasksRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - Request *v118.ListHistoryTasksRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` + Request *v119.ListHistoryTasksRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListTasksRequest) Reset() { *x = ListTasksRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[132] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8682,7 +8806,7 @@ func (x *ListTasksRequest) String() string { func (*ListTasksRequest) ProtoMessage() {} func (x *ListTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[132] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[134] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8695,10 +8819,10 @@ func (x *ListTasksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTasksRequest.ProtoReflect.Descriptor instead. func (*ListTasksRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{132} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{134} } -func (x *ListTasksRequest) GetRequest() *v118.ListHistoryTasksRequest { +func (x *ListTasksRequest) GetRequest() *v119.ListHistoryTasksRequest { if x != nil { return x.Request } @@ -8707,14 +8831,14 @@ func (x *ListTasksRequest) GetRequest() *v118.ListHistoryTasksRequest { type ListTasksResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Response *v118.ListHistoryTasksResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Response *v119.ListHistoryTasksResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListTasksResponse) Reset() { *x = ListTasksResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[133] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8726,7 +8850,7 @@ func (x *ListTasksResponse) String() string { func (*ListTasksResponse) ProtoMessage() {} func (x *ListTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[133] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[135] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8739,10 +8863,10 @@ func (x *ListTasksResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTasksResponse.ProtoReflect.Descriptor instead. func (*ListTasksResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{133} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{135} } -func (x *ListTasksResponse) GetResponse() *v118.ListHistoryTasksResponse { +func (x *ListTasksResponse) GetResponse() *v119.ListHistoryTasksResponse { if x != nil { return x.Response } @@ -8752,7 +8876,7 @@ func (x *ListTasksResponse) GetResponse() *v118.ListHistoryTasksResponse { type CompleteNexusOperationChasmRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // Completion token - holds information for locating an entity and the corresponding component. - Completion *v120.NexusOperationCompletion `protobuf:"bytes,1,opt,name=completion,proto3" json:"completion,omitempty"` + Completion *v121.NexusOperationCompletion `protobuf:"bytes,1,opt,name=completion,proto3" json:"completion,omitempty"` // Types that are valid to be assigned to Outcome: // // *CompleteNexusOperationChasmRequest_Success @@ -8773,7 +8897,7 @@ type CompleteNexusOperationChasmRequest struct { func (x *CompleteNexusOperationChasmRequest) Reset() { *x = CompleteNexusOperationChasmRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[134] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8785,7 +8909,7 @@ func (x *CompleteNexusOperationChasmRequest) String() string { func (*CompleteNexusOperationChasmRequest) ProtoMessage() {} func (x *CompleteNexusOperationChasmRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[134] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[136] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8798,10 +8922,10 @@ func (x *CompleteNexusOperationChasmRequest) ProtoReflect() protoreflect.Message // Deprecated: Use CompleteNexusOperationChasmRequest.ProtoReflect.Descriptor instead. func (*CompleteNexusOperationChasmRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{134} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{136} } -func (x *CompleteNexusOperationChasmRequest) GetCompletion() *v120.NexusOperationCompletion { +func (x *CompleteNexusOperationChasmRequest) GetCompletion() *v121.NexusOperationCompletion { if x != nil { return x.Completion } @@ -8887,7 +9011,7 @@ type CompleteNexusOperationChasmResponse struct { func (x *CompleteNexusOperationChasmResponse) Reset() { *x = CompleteNexusOperationChasmResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[135] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8899,7 +9023,7 @@ func (x *CompleteNexusOperationChasmResponse) String() string { func (*CompleteNexusOperationChasmResponse) ProtoMessage() {} func (x *CompleteNexusOperationChasmResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[135] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[137] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8912,13 +9036,13 @@ func (x *CompleteNexusOperationChasmResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use CompleteNexusOperationChasmResponse.ProtoReflect.Descriptor instead. func (*CompleteNexusOperationChasmResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{135} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{137} } type CompleteNexusOperationRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // Completion token - holds information for locating a run and the corresponding operation state machine. - Completion *v120.NexusOperationCompletion `protobuf:"bytes,1,opt,name=completion,proto3" json:"completion,omitempty"` + Completion *v121.NexusOperationCompletion `protobuf:"bytes,1,opt,name=completion,proto3" json:"completion,omitempty"` // Operation state - may only be successful / failed / canceled. State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` // Types that are valid to be assigned to Outcome: @@ -8938,7 +9062,7 @@ type CompleteNexusOperationRequest struct { func (x *CompleteNexusOperationRequest) Reset() { *x = CompleteNexusOperationRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[136] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8950,7 +9074,7 @@ func (x *CompleteNexusOperationRequest) String() string { func (*CompleteNexusOperationRequest) ProtoMessage() {} func (x *CompleteNexusOperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[136] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[138] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8963,10 +9087,10 @@ func (x *CompleteNexusOperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CompleteNexusOperationRequest.ProtoReflect.Descriptor instead. func (*CompleteNexusOperationRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{136} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{138} } -func (x *CompleteNexusOperationRequest) GetCompletion() *v120.NexusOperationCompletion { +func (x *CompleteNexusOperationRequest) GetCompletion() *v121.NexusOperationCompletion { if x != nil { return x.Completion } @@ -8996,7 +9120,7 @@ func (x *CompleteNexusOperationRequest) GetSuccess() *v14.Payload { return nil } -func (x *CompleteNexusOperationRequest) GetFailure() *v121.Failure { +func (x *CompleteNexusOperationRequest) GetFailure() *v122.Failure { if x != nil { if x, ok := x.Outcome.(*CompleteNexusOperationRequest_Failure); ok { return x.Failure @@ -9037,7 +9161,7 @@ type CompleteNexusOperationRequest_Success struct { type CompleteNexusOperationRequest_Failure struct { // Operation failure, only set if state != successful. - Failure *v121.Failure `protobuf:"bytes,4,opt,name=failure,proto3,oneof"` + Failure *v122.Failure `protobuf:"bytes,4,opt,name=failure,proto3,oneof"` } func (*CompleteNexusOperationRequest_Success) isCompleteNexusOperationRequest_Outcome() {} @@ -9052,7 +9176,7 @@ type CompleteNexusOperationResponse struct { func (x *CompleteNexusOperationResponse) Reset() { *x = CompleteNexusOperationResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[137] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9064,7 +9188,7 @@ func (x *CompleteNexusOperationResponse) String() string { func (*CompleteNexusOperationResponse) ProtoMessage() {} func (x *CompleteNexusOperationResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[137] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[139] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9077,7 +9201,7 @@ func (x *CompleteNexusOperationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CompleteNexusOperationResponse.ProtoReflect.Descriptor instead. func (*CompleteNexusOperationResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{137} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{139} } type InvokeStateMachineMethodRequest struct { @@ -9092,7 +9216,7 @@ type InvokeStateMachineMethodRequest struct { RunId string `protobuf:"bytes,3,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"` // Reference including the path to the backing Operation state machine and a version + transition count for // staleness checks. - Ref *v110.StateMachineRef `protobuf:"bytes,4,opt,name=ref,proto3" json:"ref,omitempty"` + Ref *v111.StateMachineRef `protobuf:"bytes,4,opt,name=ref,proto3" json:"ref,omitempty"` // The method name to invoke. Methods must be explicitly registered for the target state machine in the state // machine registry, and accept an argument type of HistoryEvent that is the completion event of the completed // workflow. @@ -9105,7 +9229,7 @@ type InvokeStateMachineMethodRequest struct { func (x *InvokeStateMachineMethodRequest) Reset() { *x = InvokeStateMachineMethodRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[138] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9117,7 +9241,7 @@ func (x *InvokeStateMachineMethodRequest) String() string { func (*InvokeStateMachineMethodRequest) ProtoMessage() {} func (x *InvokeStateMachineMethodRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[138] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[140] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9130,7 +9254,7 @@ func (x *InvokeStateMachineMethodRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InvokeStateMachineMethodRequest.ProtoReflect.Descriptor instead. func (*InvokeStateMachineMethodRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{138} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{140} } func (x *InvokeStateMachineMethodRequest) GetNamespaceId() string { @@ -9154,7 +9278,7 @@ func (x *InvokeStateMachineMethodRequest) GetRunId() string { return "" } -func (x *InvokeStateMachineMethodRequest) GetRef() *v110.StateMachineRef { +func (x *InvokeStateMachineMethodRequest) GetRef() *v111.StateMachineRef { if x != nil { return x.Ref } @@ -9185,7 +9309,7 @@ type InvokeStateMachineMethodResponse struct { func (x *InvokeStateMachineMethodResponse) Reset() { *x = InvokeStateMachineMethodResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[139] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9197,7 +9321,7 @@ func (x *InvokeStateMachineMethodResponse) String() string { func (*InvokeStateMachineMethodResponse) ProtoMessage() {} func (x *InvokeStateMachineMethodResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[139] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[141] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9210,7 +9334,7 @@ func (x *InvokeStateMachineMethodResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InvokeStateMachineMethodResponse.ProtoReflect.Descriptor instead. func (*InvokeStateMachineMethodResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{139} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{141} } func (x *InvokeStateMachineMethodResponse) GetOutput() []byte { @@ -9229,7 +9353,7 @@ type DeepHealthCheckRequest struct { func (x *DeepHealthCheckRequest) Reset() { *x = DeepHealthCheckRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[140] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9241,7 +9365,7 @@ func (x *DeepHealthCheckRequest) String() string { func (*DeepHealthCheckRequest) ProtoMessage() {} func (x *DeepHealthCheckRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[140] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[142] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9254,7 +9378,7 @@ func (x *DeepHealthCheckRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeepHealthCheckRequest.ProtoReflect.Descriptor instead. func (*DeepHealthCheckRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{140} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{142} } func (x *DeepHealthCheckRequest) GetHostAddress() string { @@ -9266,16 +9390,16 @@ func (x *DeepHealthCheckRequest) GetHostAddress() string { type DeepHealthCheckResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - State v112.HealthState `protobuf:"varint,1,opt,name=state,proto3,enum=temporal.server.api.enums.v1.HealthState" json:"state,omitempty"` + State v113.HealthState `protobuf:"varint,1,opt,name=state,proto3,enum=temporal.server.api.enums.v1.HealthState" json:"state,omitempty"` // Per-check diagnostic results. Populated for all checks regardless of state. - Checks []*v122.HealthCheck `protobuf:"bytes,2,rep,name=checks,proto3" json:"checks,omitempty"` + Checks []*v123.HealthCheck `protobuf:"bytes,2,rep,name=checks,proto3" json:"checks,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DeepHealthCheckResponse) Reset() { *x = DeepHealthCheckResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[141] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9287,7 +9411,7 @@ func (x *DeepHealthCheckResponse) String() string { func (*DeepHealthCheckResponse) ProtoMessage() {} func (x *DeepHealthCheckResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[141] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[143] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9300,17 +9424,17 @@ func (x *DeepHealthCheckResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeepHealthCheckResponse.ProtoReflect.Descriptor instead. func (*DeepHealthCheckResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{141} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{143} } -func (x *DeepHealthCheckResponse) GetState() v112.HealthState { +func (x *DeepHealthCheckResponse) GetState() v113.HealthState { if x != nil { return x.State } - return v112.HealthState(0) + return v113.HealthState(0) } -func (x *DeepHealthCheckResponse) GetChecks() []*v122.HealthCheck { +func (x *DeepHealthCheckResponse) GetChecks() []*v123.HealthCheck { if x != nil { return x.Checks } @@ -9321,8 +9445,8 @@ type SyncWorkflowStateRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` Execution *v14.WorkflowExecution `protobuf:"bytes,2,opt,name=execution,proto3" json:"execution,omitempty"` - VersionedTransition *v110.VersionedTransition `protobuf:"bytes,3,opt,name=versioned_transition,json=versionedTransition,proto3" json:"versioned_transition,omitempty"` - VersionHistories *v19.VersionHistories `protobuf:"bytes,4,opt,name=version_histories,json=versionHistories,proto3" json:"version_histories,omitempty"` + VersionedTransition *v111.VersionedTransition `protobuf:"bytes,3,opt,name=versioned_transition,json=versionedTransition,proto3" json:"versioned_transition,omitempty"` + VersionHistories *v110.VersionHistories `protobuf:"bytes,4,opt,name=version_histories,json=versionHistories,proto3" json:"version_histories,omitempty"` TargetClusterId int32 `protobuf:"varint,5,opt,name=target_cluster_id,json=targetClusterId,proto3" json:"target_cluster_id,omitempty"` // (-- api-linter: core::0141::forbidden-types=disabled --) ArchetypeId uint32 `protobuf:"varint,6,opt,name=archetype_id,json=archetypeId,proto3" json:"archetype_id,omitempty"` @@ -9332,7 +9456,7 @@ type SyncWorkflowStateRequest struct { func (x *SyncWorkflowStateRequest) Reset() { *x = SyncWorkflowStateRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[142] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9344,7 +9468,7 @@ func (x *SyncWorkflowStateRequest) String() string { func (*SyncWorkflowStateRequest) ProtoMessage() {} func (x *SyncWorkflowStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[142] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[144] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9357,7 +9481,7 @@ func (x *SyncWorkflowStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncWorkflowStateRequest.ProtoReflect.Descriptor instead. func (*SyncWorkflowStateRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{142} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{144} } func (x *SyncWorkflowStateRequest) GetNamespaceId() string { @@ -9374,14 +9498,14 @@ func (x *SyncWorkflowStateRequest) GetExecution() *v14.WorkflowExecution { return nil } -func (x *SyncWorkflowStateRequest) GetVersionedTransition() *v110.VersionedTransition { +func (x *SyncWorkflowStateRequest) GetVersionedTransition() *v111.VersionedTransition { if x != nil { return x.VersionedTransition } return nil } -func (x *SyncWorkflowStateRequest) GetVersionHistories() *v19.VersionHistories { +func (x *SyncWorkflowStateRequest) GetVersionHistories() *v110.VersionHistories { if x != nil { return x.VersionHistories } @@ -9404,14 +9528,14 @@ func (x *SyncWorkflowStateRequest) GetArchetypeId() uint32 { type SyncWorkflowStateResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - VersionedTransitionArtifact *v117.VersionedTransitionArtifact `protobuf:"bytes,5,opt,name=versioned_transition_artifact,json=versionedTransitionArtifact,proto3" json:"versioned_transition_artifact,omitempty"` + VersionedTransitionArtifact *v118.VersionedTransitionArtifact `protobuf:"bytes,5,opt,name=versioned_transition_artifact,json=versionedTransitionArtifact,proto3" json:"versioned_transition_artifact,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *SyncWorkflowStateResponse) Reset() { *x = SyncWorkflowStateResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[143] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9423,7 +9547,7 @@ func (x *SyncWorkflowStateResponse) String() string { func (*SyncWorkflowStateResponse) ProtoMessage() {} func (x *SyncWorkflowStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[143] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[145] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9436,10 +9560,10 @@ func (x *SyncWorkflowStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncWorkflowStateResponse.ProtoReflect.Descriptor instead. func (*SyncWorkflowStateResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{143} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{145} } -func (x *SyncWorkflowStateResponse) GetVersionedTransitionArtifact() *v117.VersionedTransitionArtifact { +func (x *SyncWorkflowStateResponse) GetVersionedTransitionArtifact() *v118.VersionedTransitionArtifact { if x != nil { return x.VersionedTransitionArtifact } @@ -9459,7 +9583,7 @@ type UpdateActivityOptionsRequest struct { func (x *UpdateActivityOptionsRequest) Reset() { *x = UpdateActivityOptionsRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[144] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9471,7 +9595,7 @@ func (x *UpdateActivityOptionsRequest) String() string { func (*UpdateActivityOptionsRequest) ProtoMessage() {} func (x *UpdateActivityOptionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[144] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[146] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9484,7 +9608,7 @@ func (x *UpdateActivityOptionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateActivityOptionsRequest.ProtoReflect.Descriptor instead. func (*UpdateActivityOptionsRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{144} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{146} } func (x *UpdateActivityOptionsRequest) GetNamespaceId() string { @@ -9504,14 +9628,14 @@ func (x *UpdateActivityOptionsRequest) GetUpdateRequest() *v1.UpdateActivityOpti type UpdateActivityOptionsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // Activity options after an update - ActivityOptions *v123.ActivityOptions `protobuf:"bytes,1,opt,name=activity_options,json=activityOptions,proto3" json:"activity_options,omitempty"` + ActivityOptions *v124.ActivityOptions `protobuf:"bytes,1,opt,name=activity_options,json=activityOptions,proto3" json:"activity_options,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *UpdateActivityOptionsResponse) Reset() { *x = UpdateActivityOptionsResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[145] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9523,7 +9647,7 @@ func (x *UpdateActivityOptionsResponse) String() string { func (*UpdateActivityOptionsResponse) ProtoMessage() {} func (x *UpdateActivityOptionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[145] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[147] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9536,10 +9660,10 @@ func (x *UpdateActivityOptionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateActivityOptionsResponse.ProtoReflect.Descriptor instead. func (*UpdateActivityOptionsResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{145} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{147} } -func (x *UpdateActivityOptionsResponse) GetActivityOptions() *v123.ActivityOptions { +func (x *UpdateActivityOptionsResponse) GetActivityOptions() *v124.ActivityOptions { if x != nil { return x.ActivityOptions } @@ -9557,7 +9681,7 @@ type PauseActivityRequest struct { func (x *PauseActivityRequest) Reset() { *x = PauseActivityRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[146] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9569,7 +9693,7 @@ func (x *PauseActivityRequest) String() string { func (*PauseActivityRequest) ProtoMessage() {} func (x *PauseActivityRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[146] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[148] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9582,7 +9706,7 @@ func (x *PauseActivityRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PauseActivityRequest.ProtoReflect.Descriptor instead. func (*PauseActivityRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{146} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{148} } func (x *PauseActivityRequest) GetNamespaceId() string { @@ -9607,7 +9731,7 @@ type PauseActivityResponse struct { func (x *PauseActivityResponse) Reset() { *x = PauseActivityResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[147] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9619,7 +9743,7 @@ func (x *PauseActivityResponse) String() string { func (*PauseActivityResponse) ProtoMessage() {} func (x *PauseActivityResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[147] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[149] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9632,7 +9756,7 @@ func (x *PauseActivityResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PauseActivityResponse.ProtoReflect.Descriptor instead. func (*PauseActivityResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{147} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{149} } type UnpauseActivityRequest struct { @@ -9646,7 +9770,7 @@ type UnpauseActivityRequest struct { func (x *UnpauseActivityRequest) Reset() { *x = UnpauseActivityRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[148] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9658,7 +9782,7 @@ func (x *UnpauseActivityRequest) String() string { func (*UnpauseActivityRequest) ProtoMessage() {} func (x *UnpauseActivityRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[148] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[150] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9671,7 +9795,7 @@ func (x *UnpauseActivityRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UnpauseActivityRequest.ProtoReflect.Descriptor instead. func (*UnpauseActivityRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{148} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{150} } func (x *UnpauseActivityRequest) GetNamespaceId() string { @@ -9696,7 +9820,7 @@ type UnpauseActivityResponse struct { func (x *UnpauseActivityResponse) Reset() { *x = UnpauseActivityResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[149] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9708,7 +9832,7 @@ func (x *UnpauseActivityResponse) String() string { func (*UnpauseActivityResponse) ProtoMessage() {} func (x *UnpauseActivityResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[149] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[151] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9721,7 +9845,7 @@ func (x *UnpauseActivityResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UnpauseActivityResponse.ProtoReflect.Descriptor instead. func (*UnpauseActivityResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{149} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{151} } type ResetActivityRequest struct { @@ -9735,7 +9859,7 @@ type ResetActivityRequest struct { func (x *ResetActivityRequest) Reset() { *x = ResetActivityRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[150] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9747,7 +9871,7 @@ func (x *ResetActivityRequest) String() string { func (*ResetActivityRequest) ProtoMessage() {} func (x *ResetActivityRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[150] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[152] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9760,7 +9884,7 @@ func (x *ResetActivityRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetActivityRequest.ProtoReflect.Descriptor instead. func (*ResetActivityRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{150} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{152} } func (x *ResetActivityRequest) GetNamespaceId() string { @@ -9785,7 +9909,7 @@ type ResetActivityResponse struct { func (x *ResetActivityResponse) Reset() { *x = ResetActivityResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[151] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9797,7 +9921,7 @@ func (x *ResetActivityResponse) String() string { func (*ResetActivityResponse) ProtoMessage() {} func (x *ResetActivityResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[151] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[153] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9810,7 +9934,7 @@ func (x *ResetActivityResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetActivityResponse.ProtoReflect.Descriptor instead. func (*ResetActivityResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{151} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{153} } // (-- api-linter: core::0134::request-mask-required=disabled @@ -9825,7 +9949,7 @@ type UpdateWorkflowExecutionOptionsRequest struct { func (x *UpdateWorkflowExecutionOptionsRequest) Reset() { *x = UpdateWorkflowExecutionOptionsRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[152] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9837,7 +9961,7 @@ func (x *UpdateWorkflowExecutionOptionsRequest) String() string { func (*UpdateWorkflowExecutionOptionsRequest) ProtoMessage() {} func (x *UpdateWorkflowExecutionOptionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[152] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[154] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9850,7 +9974,7 @@ func (x *UpdateWorkflowExecutionOptionsRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use UpdateWorkflowExecutionOptionsRequest.ProtoReflect.Descriptor instead. func (*UpdateWorkflowExecutionOptionsRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{152} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{154} } func (x *UpdateWorkflowExecutionOptionsRequest) GetNamespaceId() string { @@ -9880,7 +10004,7 @@ type UpdateWorkflowExecutionOptionsResponse struct { func (x *UpdateWorkflowExecutionOptionsResponse) Reset() { *x = UpdateWorkflowExecutionOptionsResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[153] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9892,7 +10016,7 @@ func (x *UpdateWorkflowExecutionOptionsResponse) String() string { func (*UpdateWorkflowExecutionOptionsResponse) ProtoMessage() {} func (x *UpdateWorkflowExecutionOptionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[153] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[155] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9905,7 +10029,7 @@ func (x *UpdateWorkflowExecutionOptionsResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use UpdateWorkflowExecutionOptionsResponse.ProtoReflect.Descriptor instead. func (*UpdateWorkflowExecutionOptionsResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{153} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{155} } func (x *UpdateWorkflowExecutionOptionsResponse) GetWorkflowExecutionOptions() *v15.WorkflowExecutionOptions { @@ -9933,7 +10057,7 @@ type PauseWorkflowExecutionRequest struct { func (x *PauseWorkflowExecutionRequest) Reset() { *x = PauseWorkflowExecutionRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[154] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9945,7 +10069,7 @@ func (x *PauseWorkflowExecutionRequest) String() string { func (*PauseWorkflowExecutionRequest) ProtoMessage() {} func (x *PauseWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[154] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[156] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9958,7 +10082,7 @@ func (x *PauseWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PauseWorkflowExecutionRequest.ProtoReflect.Descriptor instead. func (*PauseWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{154} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{156} } func (x *PauseWorkflowExecutionRequest) GetNamespaceId() string { @@ -9983,7 +10107,7 @@ type PauseWorkflowExecutionResponse struct { func (x *PauseWorkflowExecutionResponse) Reset() { *x = PauseWorkflowExecutionResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[155] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9995,7 +10119,7 @@ func (x *PauseWorkflowExecutionResponse) String() string { func (*PauseWorkflowExecutionResponse) ProtoMessage() {} func (x *PauseWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[155] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[157] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10008,7 +10132,7 @@ func (x *PauseWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PauseWorkflowExecutionResponse.ProtoReflect.Descriptor instead. func (*PauseWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{155} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{157} } type UnpauseWorkflowExecutionRequest struct { @@ -10022,7 +10146,7 @@ type UnpauseWorkflowExecutionRequest struct { func (x *UnpauseWorkflowExecutionRequest) Reset() { *x = UnpauseWorkflowExecutionRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[156] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10034,7 +10158,7 @@ func (x *UnpauseWorkflowExecutionRequest) String() string { func (*UnpauseWorkflowExecutionRequest) ProtoMessage() {} func (x *UnpauseWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[156] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[158] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10047,7 +10171,7 @@ func (x *UnpauseWorkflowExecutionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UnpauseWorkflowExecutionRequest.ProtoReflect.Descriptor instead. func (*UnpauseWorkflowExecutionRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{156} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{158} } func (x *UnpauseWorkflowExecutionRequest) GetNamespaceId() string { @@ -10072,7 +10196,7 @@ type UnpauseWorkflowExecutionResponse struct { func (x *UnpauseWorkflowExecutionResponse) Reset() { *x = UnpauseWorkflowExecutionResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[157] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10084,7 +10208,7 @@ func (x *UnpauseWorkflowExecutionResponse) String() string { func (*UnpauseWorkflowExecutionResponse) ProtoMessage() {} func (x *UnpauseWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[157] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[159] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10097,21 +10221,21 @@ func (x *UnpauseWorkflowExecutionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UnpauseWorkflowExecutionResponse.ProtoReflect.Descriptor instead. func (*UnpauseWorkflowExecutionResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{157} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{159} } type StartNexusOperationRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` ShardId int32 `protobuf:"varint,2,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` - Request *v121.StartOperationRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` + Request *v122.StartOperationRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *StartNexusOperationRequest) Reset() { *x = StartNexusOperationRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[158] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10123,7 +10247,7 @@ func (x *StartNexusOperationRequest) String() string { func (*StartNexusOperationRequest) ProtoMessage() {} func (x *StartNexusOperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[158] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[160] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10136,7 +10260,7 @@ func (x *StartNexusOperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StartNexusOperationRequest.ProtoReflect.Descriptor instead. func (*StartNexusOperationRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{158} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{160} } func (x *StartNexusOperationRequest) GetNamespaceId() string { @@ -10153,7 +10277,7 @@ func (x *StartNexusOperationRequest) GetShardId() int32 { return 0 } -func (x *StartNexusOperationRequest) GetRequest() *v121.StartOperationRequest { +func (x *StartNexusOperationRequest) GetRequest() *v122.StartOperationRequest { if x != nil { return x.Request } @@ -10162,14 +10286,14 @@ func (x *StartNexusOperationRequest) GetRequest() *v121.StartOperationRequest { type StartNexusOperationResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Response *v121.StartOperationResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Response *v122.StartOperationResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *StartNexusOperationResponse) Reset() { *x = StartNexusOperationResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[159] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10181,7 +10305,7 @@ func (x *StartNexusOperationResponse) String() string { func (*StartNexusOperationResponse) ProtoMessage() {} func (x *StartNexusOperationResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[159] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[161] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10194,10 +10318,10 @@ func (x *StartNexusOperationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StartNexusOperationResponse.ProtoReflect.Descriptor instead. func (*StartNexusOperationResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{159} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{161} } -func (x *StartNexusOperationResponse) GetResponse() *v121.StartOperationResponse { +func (x *StartNexusOperationResponse) GetResponse() *v122.StartOperationResponse { if x != nil { return x.Response } @@ -10208,14 +10332,14 @@ type CancelNexusOperationRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` ShardId int32 `protobuf:"varint,2,opt,name=shard_id,json=shardId,proto3" json:"shard_id,omitempty"` - Request *v121.CancelOperationRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` + Request *v122.CancelOperationRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CancelNexusOperationRequest) Reset() { *x = CancelNexusOperationRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[160] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10227,7 +10351,7 @@ func (x *CancelNexusOperationRequest) String() string { func (*CancelNexusOperationRequest) ProtoMessage() {} func (x *CancelNexusOperationRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[160] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[162] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10240,7 +10364,7 @@ func (x *CancelNexusOperationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CancelNexusOperationRequest.ProtoReflect.Descriptor instead. func (*CancelNexusOperationRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{160} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{162} } func (x *CancelNexusOperationRequest) GetNamespaceId() string { @@ -10257,7 +10381,7 @@ func (x *CancelNexusOperationRequest) GetShardId() int32 { return 0 } -func (x *CancelNexusOperationRequest) GetRequest() *v121.CancelOperationRequest { +func (x *CancelNexusOperationRequest) GetRequest() *v122.CancelOperationRequest { if x != nil { return x.Request } @@ -10266,14 +10390,14 @@ func (x *CancelNexusOperationRequest) GetRequest() *v121.CancelOperationRequest type CancelNexusOperationResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Response *v121.CancelOperationResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Response *v122.CancelOperationResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CancelNexusOperationResponse) Reset() { *x = CancelNexusOperationResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[161] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10285,7 +10409,7 @@ func (x *CancelNexusOperationResponse) String() string { func (*CancelNexusOperationResponse) ProtoMessage() {} func (x *CancelNexusOperationResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[161] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[163] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10298,10 +10422,10 @@ func (x *CancelNexusOperationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CancelNexusOperationResponse.ProtoReflect.Descriptor instead. func (*CancelNexusOperationResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{161} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{163} } -func (x *CancelNexusOperationResponse) GetResponse() *v121.CancelOperationResponse { +func (x *CancelNexusOperationResponse) GetResponse() *v122.CancelOperationResponse { if x != nil { return x.Response } @@ -10318,7 +10442,7 @@ type PollWorkflowExecutionTimeSkippingRequest struct { func (x *PollWorkflowExecutionTimeSkippingRequest) Reset() { *x = PollWorkflowExecutionTimeSkippingRequest{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[162] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10330,7 +10454,7 @@ func (x *PollWorkflowExecutionTimeSkippingRequest) String() string { func (*PollWorkflowExecutionTimeSkippingRequest) ProtoMessage() {} func (x *PollWorkflowExecutionTimeSkippingRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[162] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[164] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10343,7 +10467,7 @@ func (x *PollWorkflowExecutionTimeSkippingRequest) ProtoReflect() protoreflect.M // Deprecated: Use PollWorkflowExecutionTimeSkippingRequest.ProtoReflect.Descriptor instead. func (*PollWorkflowExecutionTimeSkippingRequest) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{162} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{164} } func (x *PollWorkflowExecutionTimeSkippingRequest) GetNamespaceId() string { @@ -10369,7 +10493,7 @@ type PollWorkflowExecutionTimeSkippingResponse struct { func (x *PollWorkflowExecutionTimeSkippingResponse) Reset() { *x = PollWorkflowExecutionTimeSkippingResponse{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[163] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10381,7 +10505,7 @@ func (x *PollWorkflowExecutionTimeSkippingResponse) String() string { func (*PollWorkflowExecutionTimeSkippingResponse) ProtoMessage() {} func (x *PollWorkflowExecutionTimeSkippingResponse) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[163] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[165] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10394,7 +10518,7 @@ func (x *PollWorkflowExecutionTimeSkippingResponse) ProtoReflect() protoreflect. // Deprecated: Use PollWorkflowExecutionTimeSkippingResponse.ProtoReflect.Descriptor instead. func (*PollWorkflowExecutionTimeSkippingResponse) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{163} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{165} } func (x *PollWorkflowExecutionTimeSkippingResponse) GetResponse() *v1.PollWorkflowExecutionTimeSkippingResponse { @@ -10417,7 +10541,7 @@ type ExecuteMultiOperationRequest_Operation struct { func (x *ExecuteMultiOperationRequest_Operation) Reset() { *x = ExecuteMultiOperationRequest_Operation{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[164] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10429,7 +10553,7 @@ func (x *ExecuteMultiOperationRequest_Operation) String() string { func (*ExecuteMultiOperationRequest_Operation) ProtoMessage() {} func (x *ExecuteMultiOperationRequest_Operation) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[164] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[166] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10442,7 +10566,7 @@ func (x *ExecuteMultiOperationRequest_Operation) ProtoReflect() protoreflect.Mes // Deprecated: Use ExecuteMultiOperationRequest_Operation.ProtoReflect.Descriptor instead. func (*ExecuteMultiOperationRequest_Operation) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{9, 0} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{11, 0} } func (x *ExecuteMultiOperationRequest_Operation) GetOperation() isExecuteMultiOperationRequest_Operation_Operation { @@ -10501,7 +10625,7 @@ type ExecuteMultiOperationResponse_Response struct { func (x *ExecuteMultiOperationResponse_Response) Reset() { *x = ExecuteMultiOperationResponse_Response{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[165] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10513,7 +10637,7 @@ func (x *ExecuteMultiOperationResponse_Response) String() string { func (*ExecuteMultiOperationResponse_Response) ProtoMessage() {} func (x *ExecuteMultiOperationResponse_Response) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[165] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[167] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10526,7 +10650,7 @@ func (x *ExecuteMultiOperationResponse_Response) ProtoReflect() protoreflect.Mes // Deprecated: Use ExecuteMultiOperationResponse_Response.ProtoReflect.Descriptor instead. func (*ExecuteMultiOperationResponse_Response) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{10, 0} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{12, 0} } func (x *ExecuteMultiOperationResponse_Response) GetResponse() isExecuteMultiOperationResponse_Response_Response { @@ -10583,7 +10707,7 @@ type ListQueuesResponse_QueueInfo struct { func (x *ListQueuesResponse_QueueInfo) Reset() { *x = ListQueuesResponse_QueueInfo{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[171] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10595,7 +10719,7 @@ func (x *ListQueuesResponse_QueueInfo) String() string { func (*ListQueuesResponse_QueueInfo) ProtoMessage() {} func (x *ListQueuesResponse_QueueInfo) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[171] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[173] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10608,7 +10732,7 @@ func (x *ListQueuesResponse_QueueInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ListQueuesResponse_QueueInfo.ProtoReflect.Descriptor instead. func (*ListQueuesResponse_QueueInfo) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{129, 0} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{131, 0} } func (x *ListQueuesResponse_QueueInfo) GetQueueName() string { @@ -10646,7 +10770,7 @@ type AddTasksRequest_Task struct { func (x *AddTasksRequest_Task) Reset() { *x = AddTasksRequest_Task{} - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[172] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10658,7 +10782,7 @@ func (x *AddTasksRequest_Task) String() string { func (*AddTasksRequest_Task) ProtoMessage() {} func (x *AddTasksRequest_Task) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[172] + mi := &file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[174] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10671,7 +10795,7 @@ func (x *AddTasksRequest_Task) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTasksRequest_Task.ProtoReflect.Descriptor instead. func (*AddTasksRequest_Task) Descriptor() ([]byte, []int) { - return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{130, 0} + return file_temporal_server_api_historyservice_v1_request_response_proto_rawDescGZIP(), []int{132, 0} } func (x *AddTasksRequest_Task) GetCategoryId() int32 { @@ -10709,7 +10833,7 @@ var File_temporal_server_api_historyservice_v1_request_response_proto protorefle const file_temporal_server_api_historyservice_v1_request_response_proto_rawDesc = "" + "\n" + - " temporal.api.workflowservice.v1.StartWorkflowExecutionRequest - 174, // 1: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.parent_execution_info:type_name -> temporal.server.api.workflow.v1.ParentExecutionInfo - 175, // 2: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.workflow_execution_expiration_time:type_name -> google.protobuf.Timestamp - 176, // 3: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.continue_as_new_initiator:type_name -> temporal.api.enums.v1.ContinueAsNewInitiator - 177, // 4: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.continued_failure:type_name -> temporal.api.failure.v1.Failure - 178, // 5: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.last_completion_result:type_name -> temporal.api.common.v1.Payloads - 179, // 6: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.first_workflow_task_backoff:type_name -> google.protobuf.Duration - 180, // 7: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.source_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp - 181, // 8: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.root_execution_info:type_name -> temporal.server.api.workflow.v1.RootExecutionInfo - 182, // 9: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.versioning_override:type_name -> temporal.api.workflow.v1.VersioningOverride - 183, // 10: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.inherited_pinned_version:type_name -> temporal.api.deployment.v1.WorkerDeploymentVersion - 184, // 11: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.inherited_auto_upgrade_info:type_name -> temporal.api.deployment.v1.InheritedAutoUpgradeInfo - 185, // 12: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.declined_target_version_upgrade:type_name -> temporal.api.history.v1.DeclinedTargetVersionUpgrade - 186, // 13: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.time_skipping_state_propagation:type_name -> temporal.api.common.v1.TimeSkippingStatePropagation - 187, // 14: temporal.server.api.historyservice.v1.StartWorkflowExecutionResponse.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 188, // 15: temporal.server.api.historyservice.v1.StartWorkflowExecutionResponse.eager_workflow_task:type_name -> temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse - 189, // 16: temporal.server.api.historyservice.v1.StartWorkflowExecutionResponse.status:type_name -> temporal.api.enums.v1.WorkflowExecutionStatus - 190, // 17: temporal.server.api.historyservice.v1.StartWorkflowExecutionResponse.link:type_name -> temporal.api.common.v1.Link - 191, // 18: temporal.server.api.historyservice.v1.GetMutableStateRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 192, // 19: temporal.server.api.historyservice.v1.GetMutableStateRequest.version_history_item:type_name -> temporal.server.api.history.v1.VersionHistoryItem - 193, // 20: temporal.server.api.historyservice.v1.GetMutableStateRequest.versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 191, // 21: temporal.server.api.historyservice.v1.GetMutableStateResponse.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 194, // 22: temporal.server.api.historyservice.v1.GetMutableStateResponse.workflow_type:type_name -> temporal.api.common.v1.WorkflowType - 195, // 23: temporal.server.api.historyservice.v1.GetMutableStateResponse.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 195, // 24: temporal.server.api.historyservice.v1.GetMutableStateResponse.sticky_task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 179, // 25: temporal.server.api.historyservice.v1.GetMutableStateResponse.sticky_task_queue_schedule_to_start_timeout:type_name -> google.protobuf.Duration - 196, // 26: temporal.server.api.historyservice.v1.GetMutableStateResponse.workflow_state:type_name -> temporal.server.api.enums.v1.WorkflowExecutionState - 189, // 27: temporal.server.api.historyservice.v1.GetMutableStateResponse.workflow_status:type_name -> temporal.api.enums.v1.WorkflowExecutionStatus - 197, // 28: temporal.server.api.historyservice.v1.GetMutableStateResponse.version_histories:type_name -> temporal.server.api.history.v1.VersionHistories - 180, // 29: temporal.server.api.historyservice.v1.GetMutableStateResponse.most_recent_worker_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp - 193, // 30: temporal.server.api.historyservice.v1.GetMutableStateResponse.transition_history:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 198, // 31: temporal.server.api.historyservice.v1.GetMutableStateResponse.versioning_info:type_name -> temporal.api.workflow.v1.WorkflowExecutionVersioningInfo - 199, // 32: temporal.server.api.historyservice.v1.GetMutableStateResponse.transient_or_speculative_tasks:type_name -> temporal.server.api.history.v1.TransientWorkflowTaskInfo - 191, // 33: temporal.server.api.historyservice.v1.PollMutableStateRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 192, // 34: temporal.server.api.historyservice.v1.PollMutableStateRequest.version_history_item:type_name -> temporal.server.api.history.v1.VersionHistoryItem - 191, // 35: temporal.server.api.historyservice.v1.PollMutableStateResponse.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 194, // 36: temporal.server.api.historyservice.v1.PollMutableStateResponse.workflow_type:type_name -> temporal.api.common.v1.WorkflowType - 195, // 37: temporal.server.api.historyservice.v1.PollMutableStateResponse.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 195, // 38: temporal.server.api.historyservice.v1.PollMutableStateResponse.sticky_task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 179, // 39: temporal.server.api.historyservice.v1.PollMutableStateResponse.sticky_task_queue_schedule_to_start_timeout:type_name -> google.protobuf.Duration - 197, // 40: temporal.server.api.historyservice.v1.PollMutableStateResponse.version_histories:type_name -> temporal.server.api.history.v1.VersionHistories - 196, // 41: temporal.server.api.historyservice.v1.PollMutableStateResponse.workflow_state:type_name -> temporal.server.api.enums.v1.WorkflowExecutionState - 189, // 42: temporal.server.api.historyservice.v1.PollMutableStateResponse.workflow_status:type_name -> temporal.api.enums.v1.WorkflowExecutionStatus - 191, // 43: temporal.server.api.historyservice.v1.ResetStickyTaskQueueRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 164, // 44: temporal.server.api.historyservice.v1.ExecuteMultiOperationRequest.operations:type_name -> temporal.server.api.historyservice.v1.ExecuteMultiOperationRequest.Operation - 165, // 45: temporal.server.api.historyservice.v1.ExecuteMultiOperationResponse.responses:type_name -> temporal.server.api.historyservice.v1.ExecuteMultiOperationResponse.Response - 191, // 46: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 200, // 47: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest.poll_request:type_name -> temporal.api.workflowservice.v1.PollWorkflowTaskQueueRequest - 187, // 48: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 201, // 49: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest.build_id_redirect_info:type_name -> temporal.server.api.taskqueue.v1.BuildIdRedirectInfo - 202, // 50: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest.scheduled_deployment:type_name -> temporal.api.deployment.v1.Deployment - 203, // 51: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective - 183, // 52: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest.target_deployment_version:type_name -> temporal.api.deployment.v1.WorkerDeploymentVersion - 194, // 53: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.workflow_type:type_name -> temporal.api.common.v1.WorkflowType - 199, // 54: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.transient_workflow_task:type_name -> temporal.server.api.history.v1.TransientWorkflowTaskInfo - 195, // 55: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.workflow_execution_task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 175, // 56: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.scheduled_time:type_name -> google.protobuf.Timestamp - 175, // 57: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.started_time:type_name -> google.protobuf.Timestamp - 166, // 58: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.queries:type_name -> temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.QueriesEntry - 187, // 59: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 204, // 60: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.messages:type_name -> temporal.api.protocol.v1.Message - 205, // 61: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.history:type_name -> temporal.api.history.v1.History - 205, // 62: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.raw_history:type_name -> temporal.api.history.v1.History - 194, // 63: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.workflow_type:type_name -> temporal.api.common.v1.WorkflowType - 199, // 64: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.transient_workflow_task:type_name -> temporal.server.api.history.v1.TransientWorkflowTaskInfo - 195, // 65: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.workflow_execution_task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 175, // 66: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.scheduled_time:type_name -> google.protobuf.Timestamp - 175, // 67: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.started_time:type_name -> google.protobuf.Timestamp - 167, // 68: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.queries:type_name -> temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.QueriesEntry - 187, // 69: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 204, // 70: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.messages:type_name -> temporal.api.protocol.v1.Message - 205, // 71: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.history:type_name -> temporal.api.history.v1.History - 191, // 72: temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 206, // 73: temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest.poll_request:type_name -> temporal.api.workflowservice.v1.PollActivityTaskQueueRequest - 187, // 74: temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 201, // 75: temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest.build_id_redirect_info:type_name -> temporal.server.api.taskqueue.v1.BuildIdRedirectInfo - 202, // 76: temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest.scheduled_deployment:type_name -> temporal.api.deployment.v1.Deployment - 203, // 77: temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective - 207, // 78: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.scheduled_event:type_name -> temporal.api.history.v1.HistoryEvent - 175, // 79: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.started_time:type_name -> google.protobuf.Timestamp - 175, // 80: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.current_attempt_scheduled_time:type_name -> google.protobuf.Timestamp - 178, // 81: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.heartbeat_details:type_name -> temporal.api.common.v1.Payloads - 194, // 82: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.workflow_type:type_name -> temporal.api.common.v1.WorkflowType - 187, // 83: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 208, // 84: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.priority:type_name -> temporal.api.common.v1.Priority - 209, // 85: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.retry_policy:type_name -> temporal.api.common.v1.RetryPolicy - 210, // 86: temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedRequest.complete_request:type_name -> temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest - 12, // 87: temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedResponse.started_response:type_name -> temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse - 211, // 88: temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedResponse.activity_tasks:type_name -> temporal.api.workflowservice.v1.PollActivityTaskQueueResponse - 188, // 89: temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedResponse.new_workflow_task:type_name -> temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse - 212, // 90: temporal.server.api.historyservice.v1.RespondWorkflowTaskFailedRequest.failed_request:type_name -> temporal.api.workflowservice.v1.RespondWorkflowTaskFailedRequest - 191, // 91: temporal.server.api.historyservice.v1.IsWorkflowTaskValidRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 187, // 92: temporal.server.api.historyservice.v1.IsWorkflowTaskValidRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 213, // 93: temporal.server.api.historyservice.v1.RecordActivityTaskHeartbeatRequest.heartbeat_request:type_name -> temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatRequest - 214, // 94: temporal.server.api.historyservice.v1.RespondActivityTaskCompletedRequest.complete_request:type_name -> temporal.api.workflowservice.v1.RespondActivityTaskCompletedRequest - 215, // 95: temporal.server.api.historyservice.v1.RespondActivityTaskFailedRequest.failed_request:type_name -> temporal.api.workflowservice.v1.RespondActivityTaskFailedRequest - 216, // 96: temporal.server.api.historyservice.v1.RespondActivityTaskCanceledRequest.cancel_request:type_name -> temporal.api.workflowservice.v1.RespondActivityTaskCanceledRequest - 191, // 97: temporal.server.api.historyservice.v1.IsActivityTaskValidRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 187, // 98: temporal.server.api.historyservice.v1.IsActivityTaskValidRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 217, // 99: temporal.server.api.historyservice.v1.SignalWorkflowExecutionRequest.signal_request:type_name -> temporal.api.workflowservice.v1.SignalWorkflowExecutionRequest - 191, // 100: temporal.server.api.historyservice.v1.SignalWorkflowExecutionRequest.external_workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 190, // 101: temporal.server.api.historyservice.v1.SignalWorkflowExecutionResponse.link:type_name -> temporal.api.common.v1.Link - 218, // 102: temporal.server.api.historyservice.v1.SignalWithStartWorkflowExecutionRequest.signal_with_start_request:type_name -> temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionRequest - 190, // 103: temporal.server.api.historyservice.v1.SignalWithStartWorkflowExecutionResponse.signal_link:type_name -> temporal.api.common.v1.Link - 191, // 104: temporal.server.api.historyservice.v1.RemoveSignalMutableStateRequest.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 219, // 105: temporal.server.api.historyservice.v1.TerminateWorkflowExecutionRequest.terminate_request:type_name -> temporal.api.workflowservice.v1.TerminateWorkflowExecutionRequest - 191, // 106: temporal.server.api.historyservice.v1.TerminateWorkflowExecutionRequest.external_workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 191, // 107: temporal.server.api.historyservice.v1.DeleteWorkflowExecutionRequest.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 220, // 108: temporal.server.api.historyservice.v1.ResetWorkflowExecutionRequest.reset_request:type_name -> temporal.api.workflowservice.v1.ResetWorkflowExecutionRequest - 221, // 109: temporal.server.api.historyservice.v1.RequestCancelWorkflowExecutionRequest.cancel_request:type_name -> temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionRequest - 191, // 110: temporal.server.api.historyservice.v1.RequestCancelWorkflowExecutionRequest.external_workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 191, // 111: temporal.server.api.historyservice.v1.ScheduleWorkflowTaskRequest.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 187, // 112: temporal.server.api.historyservice.v1.ScheduleWorkflowTaskRequest.child_clock:type_name -> temporal.server.api.clock.v1.VectorClock - 187, // 113: temporal.server.api.historyservice.v1.ScheduleWorkflowTaskRequest.parent_clock:type_name -> temporal.server.api.clock.v1.VectorClock - 191, // 114: temporal.server.api.historyservice.v1.VerifyFirstWorkflowTaskScheduledRequest.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 187, // 115: temporal.server.api.historyservice.v1.VerifyFirstWorkflowTaskScheduledRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 191, // 116: temporal.server.api.historyservice.v1.RecordChildExecutionCompletedRequest.parent_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 191, // 117: temporal.server.api.historyservice.v1.RecordChildExecutionCompletedRequest.child_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 207, // 118: temporal.server.api.historyservice.v1.RecordChildExecutionCompletedRequest.completion_event:type_name -> temporal.api.history.v1.HistoryEvent - 187, // 119: temporal.server.api.historyservice.v1.RecordChildExecutionCompletedRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 191, // 120: temporal.server.api.historyservice.v1.VerifyChildExecutionCompletionRecordedRequest.parent_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 191, // 121: temporal.server.api.historyservice.v1.VerifyChildExecutionCompletionRecordedRequest.child_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 187, // 122: temporal.server.api.historyservice.v1.VerifyChildExecutionCompletionRecordedRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 222, // 123: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionRequest.request:type_name -> temporal.api.workflowservice.v1.DescribeWorkflowExecutionRequest - 223, // 124: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.execution_config:type_name -> temporal.api.workflow.v1.WorkflowExecutionConfig - 224, // 125: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.workflow_execution_info:type_name -> temporal.api.workflow.v1.WorkflowExecutionInfo - 225, // 126: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.pending_activities:type_name -> temporal.api.workflow.v1.PendingActivityInfo - 226, // 127: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.pending_children:type_name -> temporal.api.workflow.v1.PendingChildExecutionInfo - 227, // 128: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.pending_workflow_task:type_name -> temporal.api.workflow.v1.PendingWorkflowTaskInfo - 228, // 129: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.callbacks:type_name -> temporal.api.workflow.v1.CallbackInfo - 229, // 130: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.pending_nexus_operations:type_name -> temporal.api.workflow.v1.PendingNexusOperationInfo - 230, // 131: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.workflow_extended_info:type_name -> temporal.api.workflow.v1.WorkflowExecutionExtendedInfo - 191, // 132: temporal.server.api.historyservice.v1.ReplicateEventsV2Request.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 192, // 133: temporal.server.api.historyservice.v1.ReplicateEventsV2Request.version_history_items:type_name -> temporal.server.api.history.v1.VersionHistoryItem - 231, // 134: temporal.server.api.historyservice.v1.ReplicateEventsV2Request.events:type_name -> temporal.api.common.v1.DataBlob - 231, // 135: temporal.server.api.historyservice.v1.ReplicateEventsV2Request.new_run_events:type_name -> temporal.api.common.v1.DataBlob - 232, // 136: temporal.server.api.historyservice.v1.ReplicateEventsV2Request.base_execution_info:type_name -> temporal.server.api.workflow.v1.BaseExecutionInfo - 233, // 137: temporal.server.api.historyservice.v1.ReplicateWorkflowStateRequest.workflow_state:type_name -> temporal.server.api.persistence.v1.WorkflowMutableState - 175, // 138: temporal.server.api.historyservice.v1.SyncShardStatusRequest.status_time:type_name -> google.protobuf.Timestamp - 175, // 139: temporal.server.api.historyservice.v1.SyncActivityRequest.scheduled_time:type_name -> google.protobuf.Timestamp - 175, // 140: temporal.server.api.historyservice.v1.SyncActivityRequest.started_time:type_name -> google.protobuf.Timestamp - 175, // 141: temporal.server.api.historyservice.v1.SyncActivityRequest.last_heartbeat_time:type_name -> google.protobuf.Timestamp - 178, // 142: temporal.server.api.historyservice.v1.SyncActivityRequest.details:type_name -> temporal.api.common.v1.Payloads - 177, // 143: temporal.server.api.historyservice.v1.SyncActivityRequest.last_failure:type_name -> temporal.api.failure.v1.Failure - 234, // 144: temporal.server.api.historyservice.v1.SyncActivityRequest.version_history:type_name -> temporal.server.api.history.v1.VersionHistory - 232, // 145: temporal.server.api.historyservice.v1.SyncActivityRequest.base_execution_info:type_name -> temporal.server.api.workflow.v1.BaseExecutionInfo - 175, // 146: temporal.server.api.historyservice.v1.SyncActivityRequest.first_scheduled_time:type_name -> google.protobuf.Timestamp - 175, // 147: temporal.server.api.historyservice.v1.SyncActivityRequest.last_attempt_complete_time:type_name -> google.protobuf.Timestamp - 179, // 148: temporal.server.api.historyservice.v1.SyncActivityRequest.retry_initial_interval:type_name -> google.protobuf.Duration - 179, // 149: temporal.server.api.historyservice.v1.SyncActivityRequest.retry_maximum_interval:type_name -> google.protobuf.Duration - 64, // 150: temporal.server.api.historyservice.v1.SyncActivitiesRequest.activities_info:type_name -> temporal.server.api.historyservice.v1.ActivitySyncInfo - 175, // 151: temporal.server.api.historyservice.v1.ActivitySyncInfo.scheduled_time:type_name -> google.protobuf.Timestamp - 175, // 152: temporal.server.api.historyservice.v1.ActivitySyncInfo.started_time:type_name -> google.protobuf.Timestamp - 175, // 153: temporal.server.api.historyservice.v1.ActivitySyncInfo.last_heartbeat_time:type_name -> google.protobuf.Timestamp - 178, // 154: temporal.server.api.historyservice.v1.ActivitySyncInfo.details:type_name -> temporal.api.common.v1.Payloads - 177, // 155: temporal.server.api.historyservice.v1.ActivitySyncInfo.last_failure:type_name -> temporal.api.failure.v1.Failure - 234, // 156: temporal.server.api.historyservice.v1.ActivitySyncInfo.version_history:type_name -> temporal.server.api.history.v1.VersionHistory - 175, // 157: temporal.server.api.historyservice.v1.ActivitySyncInfo.first_scheduled_time:type_name -> google.protobuf.Timestamp - 175, // 158: temporal.server.api.historyservice.v1.ActivitySyncInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp - 179, // 159: temporal.server.api.historyservice.v1.ActivitySyncInfo.retry_initial_interval:type_name -> google.protobuf.Duration - 179, // 160: temporal.server.api.historyservice.v1.ActivitySyncInfo.retry_maximum_interval:type_name -> google.protobuf.Duration - 191, // 161: temporal.server.api.historyservice.v1.DescribeMutableStateRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 233, // 162: temporal.server.api.historyservice.v1.DescribeMutableStateResponse.cache_mutable_state:type_name -> temporal.server.api.persistence.v1.WorkflowMutableState - 233, // 163: temporal.server.api.historyservice.v1.DescribeMutableStateResponse.database_mutable_state:type_name -> temporal.server.api.persistence.v1.WorkflowMutableState - 191, // 164: temporal.server.api.historyservice.v1.DescribeHistoryHostRequest.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 235, // 165: temporal.server.api.historyservice.v1.DescribeHistoryHostResponse.namespace_cache:type_name -> temporal.server.api.namespace.v1.NamespaceCacheInfo - 236, // 166: temporal.server.api.historyservice.v1.GetShardResponse.shard_info:type_name -> temporal.server.api.persistence.v1.ShardInfo - 175, // 167: temporal.server.api.historyservice.v1.RemoveTaskRequest.visibility_time:type_name -> google.protobuf.Timestamp - 237, // 168: temporal.server.api.historyservice.v1.GetReplicationMessagesRequest.tokens:type_name -> temporal.server.api.replication.v1.ReplicationToken - 168, // 169: temporal.server.api.historyservice.v1.GetReplicationMessagesResponse.shard_messages:type_name -> temporal.server.api.historyservice.v1.GetReplicationMessagesResponse.ShardMessagesEntry - 238, // 170: temporal.server.api.historyservice.v1.GetDLQReplicationMessagesRequest.task_infos:type_name -> temporal.server.api.replication.v1.ReplicationTaskInfo - 239, // 171: temporal.server.api.historyservice.v1.GetDLQReplicationMessagesResponse.replication_tasks:type_name -> temporal.server.api.replication.v1.ReplicationTask - 240, // 172: temporal.server.api.historyservice.v1.QueryWorkflowRequest.request:type_name -> temporal.api.workflowservice.v1.QueryWorkflowRequest - 241, // 173: temporal.server.api.historyservice.v1.QueryWorkflowResponse.response:type_name -> temporal.api.workflowservice.v1.QueryWorkflowResponse - 242, // 174: temporal.server.api.historyservice.v1.ReapplyEventsRequest.request:type_name -> temporal.server.api.adminservice.v1.ReapplyEventsRequest - 243, // 175: temporal.server.api.historyservice.v1.GetDLQMessagesRequest.type:type_name -> temporal.server.api.enums.v1.DeadLetterQueueType - 243, // 176: temporal.server.api.historyservice.v1.GetDLQMessagesResponse.type:type_name -> temporal.server.api.enums.v1.DeadLetterQueueType - 239, // 177: temporal.server.api.historyservice.v1.GetDLQMessagesResponse.replication_tasks:type_name -> temporal.server.api.replication.v1.ReplicationTask - 238, // 178: temporal.server.api.historyservice.v1.GetDLQMessagesResponse.replication_tasks_info:type_name -> temporal.server.api.replication.v1.ReplicationTaskInfo - 243, // 179: temporal.server.api.historyservice.v1.PurgeDLQMessagesRequest.type:type_name -> temporal.server.api.enums.v1.DeadLetterQueueType - 243, // 180: temporal.server.api.historyservice.v1.MergeDLQMessagesRequest.type:type_name -> temporal.server.api.enums.v1.DeadLetterQueueType - 244, // 181: temporal.server.api.historyservice.v1.RefreshWorkflowTasksRequest.request:type_name -> temporal.server.api.adminservice.v1.RefreshWorkflowTasksRequest - 191, // 182: temporal.server.api.historyservice.v1.GenerateLastHistoryReplicationTasksRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 96, // 183: temporal.server.api.historyservice.v1.GetReplicationStatusResponse.shards:type_name -> temporal.server.api.historyservice.v1.ShardReplicationStatus - 175, // 184: temporal.server.api.historyservice.v1.ShardReplicationStatus.shard_local_time:type_name -> google.protobuf.Timestamp - 169, // 185: temporal.server.api.historyservice.v1.ShardReplicationStatus.remote_clusters:type_name -> temporal.server.api.historyservice.v1.ShardReplicationStatus.RemoteClustersEntry - 170, // 186: temporal.server.api.historyservice.v1.ShardReplicationStatus.handover_namespaces:type_name -> temporal.server.api.historyservice.v1.ShardReplicationStatus.HandoverNamespacesEntry - 175, // 187: temporal.server.api.historyservice.v1.ShardReplicationStatus.max_replication_task_visibility_time:type_name -> google.protobuf.Timestamp - 175, // 188: temporal.server.api.historyservice.v1.ShardReplicationStatusPerCluster.acked_task_visibility_time:type_name -> google.protobuf.Timestamp - 191, // 189: temporal.server.api.historyservice.v1.RebuildMutableStateRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 191, // 190: temporal.server.api.historyservice.v1.ImportWorkflowExecutionRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 231, // 191: temporal.server.api.historyservice.v1.ImportWorkflowExecutionRequest.history_batches:type_name -> temporal.api.common.v1.DataBlob - 234, // 192: temporal.server.api.historyservice.v1.ImportWorkflowExecutionRequest.version_history:type_name -> temporal.server.api.history.v1.VersionHistory - 191, // 193: temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 175, // 194: temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordRequest.workflow_start_time:type_name -> google.protobuf.Timestamp - 175, // 195: temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordRequest.workflow_close_time:type_name -> google.protobuf.Timestamp - 245, // 196: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionRequest.request:type_name -> temporal.api.workflowservice.v1.UpdateWorkflowExecutionRequest - 246, // 197: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionResponse.response:type_name -> temporal.api.workflowservice.v1.UpdateWorkflowExecutionResponse - 247, // 198: temporal.server.api.historyservice.v1.StreamWorkflowReplicationMessagesRequest.sync_replication_state:type_name -> temporal.server.api.replication.v1.SyncReplicationState - 248, // 199: temporal.server.api.historyservice.v1.StreamWorkflowReplicationMessagesResponse.messages:type_name -> temporal.server.api.replication.v1.WorkflowReplicationMessages - 249, // 200: temporal.server.api.historyservice.v1.PollWorkflowExecutionUpdateRequest.request:type_name -> temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateRequest - 250, // 201: temporal.server.api.historyservice.v1.PollWorkflowExecutionUpdateResponse.response:type_name -> temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateResponse - 251, // 202: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryRequest.request:type_name -> temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryRequest - 252, // 203: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryResponse.response:type_name -> temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryResponse - 205, // 204: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryResponse.history:type_name -> temporal.api.history.v1.History - 252, // 205: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryResponseWithRaw.response:type_name -> temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryResponse - 253, // 206: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryReverseRequest.request:type_name -> temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseRequest - 254, // 207: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryReverseResponse.response:type_name -> temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseResponse - 255, // 208: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryV2Request.request:type_name -> temporal.server.api.adminservice.v1.GetWorkflowExecutionRawHistoryV2Request - 256, // 209: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryV2Response.response:type_name -> temporal.server.api.adminservice.v1.GetWorkflowExecutionRawHistoryV2Response - 257, // 210: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryRequest.request:type_name -> temporal.server.api.adminservice.v1.GetWorkflowExecutionRawHistoryRequest - 258, // 211: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryResponse.response:type_name -> temporal.server.api.adminservice.v1.GetWorkflowExecutionRawHistoryResponse - 259, // 212: temporal.server.api.historyservice.v1.ForceDeleteWorkflowExecutionRequest.request:type_name -> temporal.server.api.adminservice.v1.DeleteWorkflowExecutionRequest - 260, // 213: temporal.server.api.historyservice.v1.ForceDeleteWorkflowExecutionResponse.response:type_name -> temporal.server.api.adminservice.v1.DeleteWorkflowExecutionResponse - 191, // 214: temporal.server.api.historyservice.v1.DeleteExecutionRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 261, // 215: temporal.server.api.historyservice.v1.GetDLQTasksRequest.dlq_key:type_name -> temporal.server.api.common.v1.HistoryDLQKey - 262, // 216: temporal.server.api.historyservice.v1.GetDLQTasksResponse.dlq_tasks:type_name -> temporal.server.api.common.v1.HistoryDLQTask - 261, // 217: temporal.server.api.historyservice.v1.DeleteDLQTasksRequest.dlq_key:type_name -> temporal.server.api.common.v1.HistoryDLQKey - 263, // 218: temporal.server.api.historyservice.v1.DeleteDLQTasksRequest.inclusive_max_task_metadata:type_name -> temporal.server.api.common.v1.HistoryDLQTaskMetadata - 171, // 219: temporal.server.api.historyservice.v1.ListQueuesResponse.queues:type_name -> temporal.server.api.historyservice.v1.ListQueuesResponse.QueueInfo - 172, // 220: temporal.server.api.historyservice.v1.AddTasksRequest.tasks:type_name -> temporal.server.api.historyservice.v1.AddTasksRequest.Task - 264, // 221: temporal.server.api.historyservice.v1.ListTasksRequest.request:type_name -> temporal.server.api.adminservice.v1.ListHistoryTasksRequest - 265, // 222: temporal.server.api.historyservice.v1.ListTasksResponse.response:type_name -> temporal.server.api.adminservice.v1.ListHistoryTasksResponse - 266, // 223: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest.completion:type_name -> temporal.server.api.token.v1.NexusOperationCompletion - 267, // 224: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest.success:type_name -> temporal.api.common.v1.Payload - 177, // 225: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest.failure:type_name -> temporal.api.failure.v1.Failure - 175, // 226: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest.close_time:type_name -> google.protobuf.Timestamp - 190, // 227: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest.links:type_name -> temporal.api.common.v1.Link - 175, // 228: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest.start_time:type_name -> google.protobuf.Timestamp - 266, // 229: temporal.server.api.historyservice.v1.CompleteNexusOperationRequest.completion:type_name -> temporal.server.api.token.v1.NexusOperationCompletion - 267, // 230: temporal.server.api.historyservice.v1.CompleteNexusOperationRequest.success:type_name -> temporal.api.common.v1.Payload - 268, // 231: temporal.server.api.historyservice.v1.CompleteNexusOperationRequest.failure:type_name -> temporal.api.nexus.v1.Failure - 175, // 232: temporal.server.api.historyservice.v1.CompleteNexusOperationRequest.start_time:type_name -> google.protobuf.Timestamp - 190, // 233: temporal.server.api.historyservice.v1.CompleteNexusOperationRequest.links:type_name -> temporal.api.common.v1.Link - 269, // 234: temporal.server.api.historyservice.v1.InvokeStateMachineMethodRequest.ref:type_name -> temporal.server.api.persistence.v1.StateMachineRef - 270, // 235: temporal.server.api.historyservice.v1.DeepHealthCheckResponse.state:type_name -> temporal.server.api.enums.v1.HealthState - 271, // 236: temporal.server.api.historyservice.v1.DeepHealthCheckResponse.checks:type_name -> temporal.server.api.health.v1.HealthCheck - 191, // 237: temporal.server.api.historyservice.v1.SyncWorkflowStateRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 193, // 238: temporal.server.api.historyservice.v1.SyncWorkflowStateRequest.versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition - 197, // 239: temporal.server.api.historyservice.v1.SyncWorkflowStateRequest.version_histories:type_name -> temporal.server.api.history.v1.VersionHistories - 272, // 240: temporal.server.api.historyservice.v1.SyncWorkflowStateResponse.versioned_transition_artifact:type_name -> temporal.server.api.replication.v1.VersionedTransitionArtifact - 273, // 241: temporal.server.api.historyservice.v1.UpdateActivityOptionsRequest.update_request:type_name -> temporal.api.workflowservice.v1.UpdateActivityOptionsRequest - 274, // 242: temporal.server.api.historyservice.v1.UpdateActivityOptionsResponse.activity_options:type_name -> temporal.api.activity.v1.ActivityOptions - 275, // 243: temporal.server.api.historyservice.v1.PauseActivityRequest.frontend_request:type_name -> temporal.api.workflowservice.v1.PauseActivityRequest - 276, // 244: temporal.server.api.historyservice.v1.UnpauseActivityRequest.frontend_request:type_name -> temporal.api.workflowservice.v1.UnpauseActivityRequest - 277, // 245: temporal.server.api.historyservice.v1.ResetActivityRequest.frontend_request:type_name -> temporal.api.workflowservice.v1.ResetActivityRequest - 278, // 246: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionOptionsRequest.update_request:type_name -> temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsRequest - 279, // 247: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionOptionsResponse.workflow_execution_options:type_name -> temporal.api.workflow.v1.WorkflowExecutionOptions - 175, // 248: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionOptionsResponse.update_time:type_name -> google.protobuf.Timestamp - 280, // 249: temporal.server.api.historyservice.v1.PauseWorkflowExecutionRequest.pause_request:type_name -> temporal.api.workflowservice.v1.PauseWorkflowExecutionRequest - 281, // 250: temporal.server.api.historyservice.v1.UnpauseWorkflowExecutionRequest.unpause_request:type_name -> temporal.api.workflowservice.v1.UnpauseWorkflowExecutionRequest - 282, // 251: temporal.server.api.historyservice.v1.StartNexusOperationRequest.request:type_name -> temporal.api.nexus.v1.StartOperationRequest - 283, // 252: temporal.server.api.historyservice.v1.StartNexusOperationResponse.response:type_name -> temporal.api.nexus.v1.StartOperationResponse - 284, // 253: temporal.server.api.historyservice.v1.CancelNexusOperationRequest.request:type_name -> temporal.api.nexus.v1.CancelOperationRequest - 285, // 254: temporal.server.api.historyservice.v1.CancelNexusOperationResponse.response:type_name -> temporal.api.nexus.v1.CancelOperationResponse - 286, // 255: temporal.server.api.historyservice.v1.PollWorkflowExecutionTimeSkippingRequest.request:type_name -> temporal.api.workflowservice.v1.PollWorkflowExecutionTimeSkippingRequest - 287, // 256: temporal.server.api.historyservice.v1.PollWorkflowExecutionTimeSkippingResponse.response:type_name -> temporal.api.workflowservice.v1.PollWorkflowExecutionTimeSkippingResponse - 1, // 257: temporal.server.api.historyservice.v1.ExecuteMultiOperationRequest.Operation.start_workflow:type_name -> temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest - 105, // 258: temporal.server.api.historyservice.v1.ExecuteMultiOperationRequest.Operation.update_workflow:type_name -> temporal.server.api.historyservice.v1.UpdateWorkflowExecutionRequest - 2, // 259: temporal.server.api.historyservice.v1.ExecuteMultiOperationResponse.Response.start_workflow:type_name -> temporal.server.api.historyservice.v1.StartWorkflowExecutionResponse - 106, // 260: temporal.server.api.historyservice.v1.ExecuteMultiOperationResponse.Response.update_workflow:type_name -> temporal.server.api.historyservice.v1.UpdateWorkflowExecutionResponse - 288, // 261: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.QueriesEntry.value:type_name -> temporal.api.query.v1.WorkflowQuery - 288, // 262: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.QueriesEntry.value:type_name -> temporal.api.query.v1.WorkflowQuery - 289, // 263: temporal.server.api.historyservice.v1.GetReplicationMessagesResponse.ShardMessagesEntry.value:type_name -> temporal.server.api.replication.v1.ReplicationMessages - 98, // 264: temporal.server.api.historyservice.v1.ShardReplicationStatus.RemoteClustersEntry.value:type_name -> temporal.server.api.historyservice.v1.ShardReplicationStatusPerCluster - 97, // 265: temporal.server.api.historyservice.v1.ShardReplicationStatus.HandoverNamespacesEntry.value:type_name -> temporal.server.api.historyservice.v1.HandoverNamespaceInfo - 231, // 266: temporal.server.api.historyservice.v1.AddTasksRequest.Task.blob:type_name -> temporal.api.common.v1.DataBlob - 290, // 267: temporal.server.api.historyservice.v1.routing:extendee -> google.protobuf.MessageOptions - 0, // 268: temporal.server.api.historyservice.v1.routing:type_name -> temporal.server.api.historyservice.v1.RoutingOptions - 269, // [269:269] is the sub-list for method output_type - 269, // [269:269] is the sub-list for method input_type - 268, // [268:269] is the sub-list for extension type_name - 267, // [267:268] is the sub-list for extension extendee - 0, // [0:267] is the sub-list for field type_name + 175, // 0: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.start_request:type_name -> temporal.api.workflowservice.v1.StartWorkflowExecutionRequest + 176, // 1: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.parent_execution_info:type_name -> temporal.server.api.workflow.v1.ParentExecutionInfo + 177, // 2: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.workflow_execution_expiration_time:type_name -> google.protobuf.Timestamp + 178, // 3: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.continue_as_new_initiator:type_name -> temporal.api.enums.v1.ContinueAsNewInitiator + 179, // 4: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.continued_failure:type_name -> temporal.api.failure.v1.Failure + 180, // 5: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.last_completion_result:type_name -> temporal.api.common.v1.Payloads + 181, // 6: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.first_workflow_task_backoff:type_name -> google.protobuf.Duration + 182, // 7: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.source_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp + 183, // 8: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.root_execution_info:type_name -> temporal.server.api.workflow.v1.RootExecutionInfo + 184, // 9: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.versioning_override:type_name -> temporal.api.workflow.v1.VersioningOverride + 185, // 10: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.inherited_pinned_version:type_name -> temporal.api.deployment.v1.WorkerDeploymentVersion + 186, // 11: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.inherited_auto_upgrade_info:type_name -> temporal.api.deployment.v1.InheritedAutoUpgradeInfo + 187, // 12: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.declined_target_version_upgrade:type_name -> temporal.api.history.v1.DeclinedTargetVersionUpgrade + 188, // 13: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest.time_skipping_state_propagation:type_name -> temporal.api.common.v1.TimeSkippingStatePropagation + 189, // 14: temporal.server.api.historyservice.v1.StartWorkflowExecutionResponse.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 190, // 15: temporal.server.api.historyservice.v1.StartWorkflowExecutionResponse.eager_workflow_task:type_name -> temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse + 191, // 16: temporal.server.api.historyservice.v1.StartWorkflowExecutionResponse.status:type_name -> temporal.api.enums.v1.WorkflowExecutionStatus + 192, // 17: temporal.server.api.historyservice.v1.StartWorkflowExecutionResponse.link:type_name -> temporal.api.common.v1.Link + 193, // 18: temporal.server.api.historyservice.v1.GetStreamReplaySlicesRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 194, // 19: temporal.server.api.historyservice.v1.GetStreamReplaySlicesResponse.stream_slices:type_name -> temporal.api.stream.v1.StreamSlice + 193, // 20: temporal.server.api.historyservice.v1.GetMutableStateRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 195, // 21: temporal.server.api.historyservice.v1.GetMutableStateRequest.version_history_item:type_name -> temporal.server.api.history.v1.VersionHistoryItem + 196, // 22: temporal.server.api.historyservice.v1.GetMutableStateRequest.versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 193, // 23: temporal.server.api.historyservice.v1.GetMutableStateResponse.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 197, // 24: temporal.server.api.historyservice.v1.GetMutableStateResponse.workflow_type:type_name -> temporal.api.common.v1.WorkflowType + 198, // 25: temporal.server.api.historyservice.v1.GetMutableStateResponse.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 198, // 26: temporal.server.api.historyservice.v1.GetMutableStateResponse.sticky_task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 181, // 27: temporal.server.api.historyservice.v1.GetMutableStateResponse.sticky_task_queue_schedule_to_start_timeout:type_name -> google.protobuf.Duration + 199, // 28: temporal.server.api.historyservice.v1.GetMutableStateResponse.workflow_state:type_name -> temporal.server.api.enums.v1.WorkflowExecutionState + 191, // 29: temporal.server.api.historyservice.v1.GetMutableStateResponse.workflow_status:type_name -> temporal.api.enums.v1.WorkflowExecutionStatus + 200, // 30: temporal.server.api.historyservice.v1.GetMutableStateResponse.version_histories:type_name -> temporal.server.api.history.v1.VersionHistories + 182, // 31: temporal.server.api.historyservice.v1.GetMutableStateResponse.most_recent_worker_version_stamp:type_name -> temporal.api.common.v1.WorkerVersionStamp + 196, // 32: temporal.server.api.historyservice.v1.GetMutableStateResponse.transition_history:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 201, // 33: temporal.server.api.historyservice.v1.GetMutableStateResponse.versioning_info:type_name -> temporal.api.workflow.v1.WorkflowExecutionVersioningInfo + 202, // 34: temporal.server.api.historyservice.v1.GetMutableStateResponse.transient_or_speculative_tasks:type_name -> temporal.server.api.history.v1.TransientWorkflowTaskInfo + 193, // 35: temporal.server.api.historyservice.v1.PollMutableStateRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 195, // 36: temporal.server.api.historyservice.v1.PollMutableStateRequest.version_history_item:type_name -> temporal.server.api.history.v1.VersionHistoryItem + 193, // 37: temporal.server.api.historyservice.v1.PollMutableStateResponse.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 197, // 38: temporal.server.api.historyservice.v1.PollMutableStateResponse.workflow_type:type_name -> temporal.api.common.v1.WorkflowType + 198, // 39: temporal.server.api.historyservice.v1.PollMutableStateResponse.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 198, // 40: temporal.server.api.historyservice.v1.PollMutableStateResponse.sticky_task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 181, // 41: temporal.server.api.historyservice.v1.PollMutableStateResponse.sticky_task_queue_schedule_to_start_timeout:type_name -> google.protobuf.Duration + 200, // 42: temporal.server.api.historyservice.v1.PollMutableStateResponse.version_histories:type_name -> temporal.server.api.history.v1.VersionHistories + 199, // 43: temporal.server.api.historyservice.v1.PollMutableStateResponse.workflow_state:type_name -> temporal.server.api.enums.v1.WorkflowExecutionState + 191, // 44: temporal.server.api.historyservice.v1.PollMutableStateResponse.workflow_status:type_name -> temporal.api.enums.v1.WorkflowExecutionStatus + 193, // 45: temporal.server.api.historyservice.v1.ResetStickyTaskQueueRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 166, // 46: temporal.server.api.historyservice.v1.ExecuteMultiOperationRequest.operations:type_name -> temporal.server.api.historyservice.v1.ExecuteMultiOperationRequest.Operation + 167, // 47: temporal.server.api.historyservice.v1.ExecuteMultiOperationResponse.responses:type_name -> temporal.server.api.historyservice.v1.ExecuteMultiOperationResponse.Response + 193, // 48: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 203, // 49: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest.poll_request:type_name -> temporal.api.workflowservice.v1.PollWorkflowTaskQueueRequest + 189, // 50: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 204, // 51: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest.build_id_redirect_info:type_name -> temporal.server.api.taskqueue.v1.BuildIdRedirectInfo + 205, // 52: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest.scheduled_deployment:type_name -> temporal.api.deployment.v1.Deployment + 206, // 53: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective + 185, // 54: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest.target_deployment_version:type_name -> temporal.api.deployment.v1.WorkerDeploymentVersion + 197, // 55: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.workflow_type:type_name -> temporal.api.common.v1.WorkflowType + 202, // 56: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.transient_workflow_task:type_name -> temporal.server.api.history.v1.TransientWorkflowTaskInfo + 198, // 57: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.workflow_execution_task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 177, // 58: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.scheduled_time:type_name -> google.protobuf.Timestamp + 177, // 59: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.started_time:type_name -> google.protobuf.Timestamp + 168, // 60: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.queries:type_name -> temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.QueriesEntry + 189, // 61: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 207, // 62: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.messages:type_name -> temporal.api.protocol.v1.Message + 208, // 63: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.history:type_name -> temporal.api.history.v1.History + 208, // 64: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.raw_history:type_name -> temporal.api.history.v1.History + 194, // 65: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.stream_slices:type_name -> temporal.api.stream.v1.StreamSlice + 197, // 66: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.workflow_type:type_name -> temporal.api.common.v1.WorkflowType + 202, // 67: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.transient_workflow_task:type_name -> temporal.server.api.history.v1.TransientWorkflowTaskInfo + 198, // 68: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.workflow_execution_task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 177, // 69: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.scheduled_time:type_name -> google.protobuf.Timestamp + 177, // 70: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.started_time:type_name -> google.protobuf.Timestamp + 169, // 71: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.queries:type_name -> temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.QueriesEntry + 189, // 72: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 207, // 73: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.messages:type_name -> temporal.api.protocol.v1.Message + 208, // 74: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.history:type_name -> temporal.api.history.v1.History + 194, // 75: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.stream_slices:type_name -> temporal.api.stream.v1.StreamSlice + 193, // 76: temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 209, // 77: temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest.poll_request:type_name -> temporal.api.workflowservice.v1.PollActivityTaskQueueRequest + 189, // 78: temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 204, // 79: temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest.build_id_redirect_info:type_name -> temporal.server.api.taskqueue.v1.BuildIdRedirectInfo + 205, // 80: temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest.scheduled_deployment:type_name -> temporal.api.deployment.v1.Deployment + 206, // 81: temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective + 210, // 82: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.scheduled_event:type_name -> temporal.api.history.v1.HistoryEvent + 177, // 83: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.started_time:type_name -> google.protobuf.Timestamp + 177, // 84: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.current_attempt_scheduled_time:type_name -> google.protobuf.Timestamp + 180, // 85: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.heartbeat_details:type_name -> temporal.api.common.v1.Payloads + 197, // 86: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.workflow_type:type_name -> temporal.api.common.v1.WorkflowType + 189, // 87: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 211, // 88: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.priority:type_name -> temporal.api.common.v1.Priority + 212, // 89: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse.retry_policy:type_name -> temporal.api.common.v1.RetryPolicy + 213, // 90: temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedRequest.complete_request:type_name -> temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest + 14, // 91: temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedResponse.started_response:type_name -> temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse + 214, // 92: temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedResponse.activity_tasks:type_name -> temporal.api.workflowservice.v1.PollActivityTaskQueueResponse + 190, // 93: temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedResponse.new_workflow_task:type_name -> temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse + 215, // 94: temporal.server.api.historyservice.v1.RespondWorkflowTaskFailedRequest.failed_request:type_name -> temporal.api.workflowservice.v1.RespondWorkflowTaskFailedRequest + 193, // 95: temporal.server.api.historyservice.v1.IsWorkflowTaskValidRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 189, // 96: temporal.server.api.historyservice.v1.IsWorkflowTaskValidRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 216, // 97: temporal.server.api.historyservice.v1.RecordActivityTaskHeartbeatRequest.heartbeat_request:type_name -> temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatRequest + 217, // 98: temporal.server.api.historyservice.v1.RespondActivityTaskCompletedRequest.complete_request:type_name -> temporal.api.workflowservice.v1.RespondActivityTaskCompletedRequest + 218, // 99: temporal.server.api.historyservice.v1.RespondActivityTaskFailedRequest.failed_request:type_name -> temporal.api.workflowservice.v1.RespondActivityTaskFailedRequest + 219, // 100: temporal.server.api.historyservice.v1.RespondActivityTaskCanceledRequest.cancel_request:type_name -> temporal.api.workflowservice.v1.RespondActivityTaskCanceledRequest + 193, // 101: temporal.server.api.historyservice.v1.IsActivityTaskValidRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 189, // 102: temporal.server.api.historyservice.v1.IsActivityTaskValidRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 220, // 103: temporal.server.api.historyservice.v1.SignalWorkflowExecutionRequest.signal_request:type_name -> temporal.api.workflowservice.v1.SignalWorkflowExecutionRequest + 193, // 104: temporal.server.api.historyservice.v1.SignalWorkflowExecutionRequest.external_workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 192, // 105: temporal.server.api.historyservice.v1.SignalWorkflowExecutionResponse.link:type_name -> temporal.api.common.v1.Link + 221, // 106: temporal.server.api.historyservice.v1.SignalWithStartWorkflowExecutionRequest.signal_with_start_request:type_name -> temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionRequest + 192, // 107: temporal.server.api.historyservice.v1.SignalWithStartWorkflowExecutionResponse.signal_link:type_name -> temporal.api.common.v1.Link + 193, // 108: temporal.server.api.historyservice.v1.RemoveSignalMutableStateRequest.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 222, // 109: temporal.server.api.historyservice.v1.TerminateWorkflowExecutionRequest.terminate_request:type_name -> temporal.api.workflowservice.v1.TerminateWorkflowExecutionRequest + 193, // 110: temporal.server.api.historyservice.v1.TerminateWorkflowExecutionRequest.external_workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 193, // 111: temporal.server.api.historyservice.v1.DeleteWorkflowExecutionRequest.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 223, // 112: temporal.server.api.historyservice.v1.ResetWorkflowExecutionRequest.reset_request:type_name -> temporal.api.workflowservice.v1.ResetWorkflowExecutionRequest + 224, // 113: temporal.server.api.historyservice.v1.RequestCancelWorkflowExecutionRequest.cancel_request:type_name -> temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionRequest + 193, // 114: temporal.server.api.historyservice.v1.RequestCancelWorkflowExecutionRequest.external_workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 193, // 115: temporal.server.api.historyservice.v1.ScheduleWorkflowTaskRequest.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 189, // 116: temporal.server.api.historyservice.v1.ScheduleWorkflowTaskRequest.child_clock:type_name -> temporal.server.api.clock.v1.VectorClock + 189, // 117: temporal.server.api.historyservice.v1.ScheduleWorkflowTaskRequest.parent_clock:type_name -> temporal.server.api.clock.v1.VectorClock + 193, // 118: temporal.server.api.historyservice.v1.VerifyFirstWorkflowTaskScheduledRequest.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 189, // 119: temporal.server.api.historyservice.v1.VerifyFirstWorkflowTaskScheduledRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 193, // 120: temporal.server.api.historyservice.v1.RecordChildExecutionCompletedRequest.parent_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 193, // 121: temporal.server.api.historyservice.v1.RecordChildExecutionCompletedRequest.child_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 210, // 122: temporal.server.api.historyservice.v1.RecordChildExecutionCompletedRequest.completion_event:type_name -> temporal.api.history.v1.HistoryEvent + 189, // 123: temporal.server.api.historyservice.v1.RecordChildExecutionCompletedRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 193, // 124: temporal.server.api.historyservice.v1.VerifyChildExecutionCompletionRecordedRequest.parent_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 193, // 125: temporal.server.api.historyservice.v1.VerifyChildExecutionCompletionRecordedRequest.child_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 189, // 126: temporal.server.api.historyservice.v1.VerifyChildExecutionCompletionRecordedRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 225, // 127: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionRequest.request:type_name -> temporal.api.workflowservice.v1.DescribeWorkflowExecutionRequest + 226, // 128: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.execution_config:type_name -> temporal.api.workflow.v1.WorkflowExecutionConfig + 227, // 129: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.workflow_execution_info:type_name -> temporal.api.workflow.v1.WorkflowExecutionInfo + 228, // 130: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.pending_activities:type_name -> temporal.api.workflow.v1.PendingActivityInfo + 229, // 131: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.pending_children:type_name -> temporal.api.workflow.v1.PendingChildExecutionInfo + 230, // 132: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.pending_workflow_task:type_name -> temporal.api.workflow.v1.PendingWorkflowTaskInfo + 231, // 133: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.callbacks:type_name -> temporal.api.workflow.v1.CallbackInfo + 232, // 134: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.pending_nexus_operations:type_name -> temporal.api.workflow.v1.PendingNexusOperationInfo + 233, // 135: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse.workflow_extended_info:type_name -> temporal.api.workflow.v1.WorkflowExecutionExtendedInfo + 193, // 136: temporal.server.api.historyservice.v1.ReplicateEventsV2Request.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 195, // 137: temporal.server.api.historyservice.v1.ReplicateEventsV2Request.version_history_items:type_name -> temporal.server.api.history.v1.VersionHistoryItem + 234, // 138: temporal.server.api.historyservice.v1.ReplicateEventsV2Request.events:type_name -> temporal.api.common.v1.DataBlob + 234, // 139: temporal.server.api.historyservice.v1.ReplicateEventsV2Request.new_run_events:type_name -> temporal.api.common.v1.DataBlob + 235, // 140: temporal.server.api.historyservice.v1.ReplicateEventsV2Request.base_execution_info:type_name -> temporal.server.api.workflow.v1.BaseExecutionInfo + 236, // 141: temporal.server.api.historyservice.v1.ReplicateWorkflowStateRequest.workflow_state:type_name -> temporal.server.api.persistence.v1.WorkflowMutableState + 177, // 142: temporal.server.api.historyservice.v1.SyncShardStatusRequest.status_time:type_name -> google.protobuf.Timestamp + 177, // 143: temporal.server.api.historyservice.v1.SyncActivityRequest.scheduled_time:type_name -> google.protobuf.Timestamp + 177, // 144: temporal.server.api.historyservice.v1.SyncActivityRequest.started_time:type_name -> google.protobuf.Timestamp + 177, // 145: temporal.server.api.historyservice.v1.SyncActivityRequest.last_heartbeat_time:type_name -> google.protobuf.Timestamp + 180, // 146: temporal.server.api.historyservice.v1.SyncActivityRequest.details:type_name -> temporal.api.common.v1.Payloads + 179, // 147: temporal.server.api.historyservice.v1.SyncActivityRequest.last_failure:type_name -> temporal.api.failure.v1.Failure + 237, // 148: temporal.server.api.historyservice.v1.SyncActivityRequest.version_history:type_name -> temporal.server.api.history.v1.VersionHistory + 235, // 149: temporal.server.api.historyservice.v1.SyncActivityRequest.base_execution_info:type_name -> temporal.server.api.workflow.v1.BaseExecutionInfo + 177, // 150: temporal.server.api.historyservice.v1.SyncActivityRequest.first_scheduled_time:type_name -> google.protobuf.Timestamp + 177, // 151: temporal.server.api.historyservice.v1.SyncActivityRequest.last_attempt_complete_time:type_name -> google.protobuf.Timestamp + 181, // 152: temporal.server.api.historyservice.v1.SyncActivityRequest.retry_initial_interval:type_name -> google.protobuf.Duration + 181, // 153: temporal.server.api.historyservice.v1.SyncActivityRequest.retry_maximum_interval:type_name -> google.protobuf.Duration + 66, // 154: temporal.server.api.historyservice.v1.SyncActivitiesRequest.activities_info:type_name -> temporal.server.api.historyservice.v1.ActivitySyncInfo + 177, // 155: temporal.server.api.historyservice.v1.ActivitySyncInfo.scheduled_time:type_name -> google.protobuf.Timestamp + 177, // 156: temporal.server.api.historyservice.v1.ActivitySyncInfo.started_time:type_name -> google.protobuf.Timestamp + 177, // 157: temporal.server.api.historyservice.v1.ActivitySyncInfo.last_heartbeat_time:type_name -> google.protobuf.Timestamp + 180, // 158: temporal.server.api.historyservice.v1.ActivitySyncInfo.details:type_name -> temporal.api.common.v1.Payloads + 179, // 159: temporal.server.api.historyservice.v1.ActivitySyncInfo.last_failure:type_name -> temporal.api.failure.v1.Failure + 237, // 160: temporal.server.api.historyservice.v1.ActivitySyncInfo.version_history:type_name -> temporal.server.api.history.v1.VersionHistory + 177, // 161: temporal.server.api.historyservice.v1.ActivitySyncInfo.first_scheduled_time:type_name -> google.protobuf.Timestamp + 177, // 162: temporal.server.api.historyservice.v1.ActivitySyncInfo.last_attempt_complete_time:type_name -> google.protobuf.Timestamp + 181, // 163: temporal.server.api.historyservice.v1.ActivitySyncInfo.retry_initial_interval:type_name -> google.protobuf.Duration + 181, // 164: temporal.server.api.historyservice.v1.ActivitySyncInfo.retry_maximum_interval:type_name -> google.protobuf.Duration + 193, // 165: temporal.server.api.historyservice.v1.DescribeMutableStateRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 236, // 166: temporal.server.api.historyservice.v1.DescribeMutableStateResponse.cache_mutable_state:type_name -> temporal.server.api.persistence.v1.WorkflowMutableState + 236, // 167: temporal.server.api.historyservice.v1.DescribeMutableStateResponse.database_mutable_state:type_name -> temporal.server.api.persistence.v1.WorkflowMutableState + 193, // 168: temporal.server.api.historyservice.v1.DescribeHistoryHostRequest.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 238, // 169: temporal.server.api.historyservice.v1.DescribeHistoryHostResponse.namespace_cache:type_name -> temporal.server.api.namespace.v1.NamespaceCacheInfo + 239, // 170: temporal.server.api.historyservice.v1.GetShardResponse.shard_info:type_name -> temporal.server.api.persistence.v1.ShardInfo + 177, // 171: temporal.server.api.historyservice.v1.RemoveTaskRequest.visibility_time:type_name -> google.protobuf.Timestamp + 240, // 172: temporal.server.api.historyservice.v1.GetReplicationMessagesRequest.tokens:type_name -> temporal.server.api.replication.v1.ReplicationToken + 170, // 173: temporal.server.api.historyservice.v1.GetReplicationMessagesResponse.shard_messages:type_name -> temporal.server.api.historyservice.v1.GetReplicationMessagesResponse.ShardMessagesEntry + 241, // 174: temporal.server.api.historyservice.v1.GetDLQReplicationMessagesRequest.task_infos:type_name -> temporal.server.api.replication.v1.ReplicationTaskInfo + 242, // 175: temporal.server.api.historyservice.v1.GetDLQReplicationMessagesResponse.replication_tasks:type_name -> temporal.server.api.replication.v1.ReplicationTask + 243, // 176: temporal.server.api.historyservice.v1.QueryWorkflowRequest.request:type_name -> temporal.api.workflowservice.v1.QueryWorkflowRequest + 244, // 177: temporal.server.api.historyservice.v1.QueryWorkflowResponse.response:type_name -> temporal.api.workflowservice.v1.QueryWorkflowResponse + 245, // 178: temporal.server.api.historyservice.v1.ReapplyEventsRequest.request:type_name -> temporal.server.api.adminservice.v1.ReapplyEventsRequest + 246, // 179: temporal.server.api.historyservice.v1.GetDLQMessagesRequest.type:type_name -> temporal.server.api.enums.v1.DeadLetterQueueType + 246, // 180: temporal.server.api.historyservice.v1.GetDLQMessagesResponse.type:type_name -> temporal.server.api.enums.v1.DeadLetterQueueType + 242, // 181: temporal.server.api.historyservice.v1.GetDLQMessagesResponse.replication_tasks:type_name -> temporal.server.api.replication.v1.ReplicationTask + 241, // 182: temporal.server.api.historyservice.v1.GetDLQMessagesResponse.replication_tasks_info:type_name -> temporal.server.api.replication.v1.ReplicationTaskInfo + 246, // 183: temporal.server.api.historyservice.v1.PurgeDLQMessagesRequest.type:type_name -> temporal.server.api.enums.v1.DeadLetterQueueType + 246, // 184: temporal.server.api.historyservice.v1.MergeDLQMessagesRequest.type:type_name -> temporal.server.api.enums.v1.DeadLetterQueueType + 247, // 185: temporal.server.api.historyservice.v1.RefreshWorkflowTasksRequest.request:type_name -> temporal.server.api.adminservice.v1.RefreshWorkflowTasksRequest + 193, // 186: temporal.server.api.historyservice.v1.GenerateLastHistoryReplicationTasksRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 98, // 187: temporal.server.api.historyservice.v1.GetReplicationStatusResponse.shards:type_name -> temporal.server.api.historyservice.v1.ShardReplicationStatus + 177, // 188: temporal.server.api.historyservice.v1.ShardReplicationStatus.shard_local_time:type_name -> google.protobuf.Timestamp + 171, // 189: temporal.server.api.historyservice.v1.ShardReplicationStatus.remote_clusters:type_name -> temporal.server.api.historyservice.v1.ShardReplicationStatus.RemoteClustersEntry + 172, // 190: temporal.server.api.historyservice.v1.ShardReplicationStatus.handover_namespaces:type_name -> temporal.server.api.historyservice.v1.ShardReplicationStatus.HandoverNamespacesEntry + 177, // 191: temporal.server.api.historyservice.v1.ShardReplicationStatus.max_replication_task_visibility_time:type_name -> google.protobuf.Timestamp + 177, // 192: temporal.server.api.historyservice.v1.ShardReplicationStatusPerCluster.acked_task_visibility_time:type_name -> google.protobuf.Timestamp + 193, // 193: temporal.server.api.historyservice.v1.RebuildMutableStateRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 193, // 194: temporal.server.api.historyservice.v1.ImportWorkflowExecutionRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 234, // 195: temporal.server.api.historyservice.v1.ImportWorkflowExecutionRequest.history_batches:type_name -> temporal.api.common.v1.DataBlob + 237, // 196: temporal.server.api.historyservice.v1.ImportWorkflowExecutionRequest.version_history:type_name -> temporal.server.api.history.v1.VersionHistory + 193, // 197: temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 177, // 198: temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordRequest.workflow_start_time:type_name -> google.protobuf.Timestamp + 177, // 199: temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordRequest.workflow_close_time:type_name -> google.protobuf.Timestamp + 248, // 200: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionRequest.request:type_name -> temporal.api.workflowservice.v1.UpdateWorkflowExecutionRequest + 249, // 201: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionResponse.response:type_name -> temporal.api.workflowservice.v1.UpdateWorkflowExecutionResponse + 250, // 202: temporal.server.api.historyservice.v1.StreamWorkflowReplicationMessagesRequest.sync_replication_state:type_name -> temporal.server.api.replication.v1.SyncReplicationState + 251, // 203: temporal.server.api.historyservice.v1.StreamWorkflowReplicationMessagesResponse.messages:type_name -> temporal.server.api.replication.v1.WorkflowReplicationMessages + 252, // 204: temporal.server.api.historyservice.v1.PollWorkflowExecutionUpdateRequest.request:type_name -> temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateRequest + 253, // 205: temporal.server.api.historyservice.v1.PollWorkflowExecutionUpdateResponse.response:type_name -> temporal.api.workflowservice.v1.PollWorkflowExecutionUpdateResponse + 254, // 206: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryRequest.request:type_name -> temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryRequest + 255, // 207: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryResponse.response:type_name -> temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryResponse + 208, // 208: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryResponse.history:type_name -> temporal.api.history.v1.History + 255, // 209: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryResponseWithRaw.response:type_name -> temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryResponse + 256, // 210: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryReverseRequest.request:type_name -> temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseRequest + 257, // 211: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryReverseResponse.response:type_name -> temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseResponse + 258, // 212: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryV2Request.request:type_name -> temporal.server.api.adminservice.v1.GetWorkflowExecutionRawHistoryV2Request + 259, // 213: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryV2Response.response:type_name -> temporal.server.api.adminservice.v1.GetWorkflowExecutionRawHistoryV2Response + 260, // 214: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryRequest.request:type_name -> temporal.server.api.adminservice.v1.GetWorkflowExecutionRawHistoryRequest + 261, // 215: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryResponse.response:type_name -> temporal.server.api.adminservice.v1.GetWorkflowExecutionRawHistoryResponse + 262, // 216: temporal.server.api.historyservice.v1.ForceDeleteWorkflowExecutionRequest.request:type_name -> temporal.server.api.adminservice.v1.DeleteWorkflowExecutionRequest + 263, // 217: temporal.server.api.historyservice.v1.ForceDeleteWorkflowExecutionResponse.response:type_name -> temporal.server.api.adminservice.v1.DeleteWorkflowExecutionResponse + 193, // 218: temporal.server.api.historyservice.v1.DeleteExecutionRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 264, // 219: temporal.server.api.historyservice.v1.GetDLQTasksRequest.dlq_key:type_name -> temporal.server.api.common.v1.HistoryDLQKey + 265, // 220: temporal.server.api.historyservice.v1.GetDLQTasksResponse.dlq_tasks:type_name -> temporal.server.api.common.v1.HistoryDLQTask + 264, // 221: temporal.server.api.historyservice.v1.DeleteDLQTasksRequest.dlq_key:type_name -> temporal.server.api.common.v1.HistoryDLQKey + 266, // 222: temporal.server.api.historyservice.v1.DeleteDLQTasksRequest.inclusive_max_task_metadata:type_name -> temporal.server.api.common.v1.HistoryDLQTaskMetadata + 173, // 223: temporal.server.api.historyservice.v1.ListQueuesResponse.queues:type_name -> temporal.server.api.historyservice.v1.ListQueuesResponse.QueueInfo + 174, // 224: temporal.server.api.historyservice.v1.AddTasksRequest.tasks:type_name -> temporal.server.api.historyservice.v1.AddTasksRequest.Task + 267, // 225: temporal.server.api.historyservice.v1.ListTasksRequest.request:type_name -> temporal.server.api.adminservice.v1.ListHistoryTasksRequest + 268, // 226: temporal.server.api.historyservice.v1.ListTasksResponse.response:type_name -> temporal.server.api.adminservice.v1.ListHistoryTasksResponse + 269, // 227: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest.completion:type_name -> temporal.server.api.token.v1.NexusOperationCompletion + 270, // 228: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest.success:type_name -> temporal.api.common.v1.Payload + 179, // 229: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest.failure:type_name -> temporal.api.failure.v1.Failure + 177, // 230: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest.close_time:type_name -> google.protobuf.Timestamp + 192, // 231: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest.links:type_name -> temporal.api.common.v1.Link + 177, // 232: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest.start_time:type_name -> google.protobuf.Timestamp + 269, // 233: temporal.server.api.historyservice.v1.CompleteNexusOperationRequest.completion:type_name -> temporal.server.api.token.v1.NexusOperationCompletion + 270, // 234: temporal.server.api.historyservice.v1.CompleteNexusOperationRequest.success:type_name -> temporal.api.common.v1.Payload + 271, // 235: temporal.server.api.historyservice.v1.CompleteNexusOperationRequest.failure:type_name -> temporal.api.nexus.v1.Failure + 177, // 236: temporal.server.api.historyservice.v1.CompleteNexusOperationRequest.start_time:type_name -> google.protobuf.Timestamp + 192, // 237: temporal.server.api.historyservice.v1.CompleteNexusOperationRequest.links:type_name -> temporal.api.common.v1.Link + 272, // 238: temporal.server.api.historyservice.v1.InvokeStateMachineMethodRequest.ref:type_name -> temporal.server.api.persistence.v1.StateMachineRef + 273, // 239: temporal.server.api.historyservice.v1.DeepHealthCheckResponse.state:type_name -> temporal.server.api.enums.v1.HealthState + 274, // 240: temporal.server.api.historyservice.v1.DeepHealthCheckResponse.checks:type_name -> temporal.server.api.health.v1.HealthCheck + 193, // 241: temporal.server.api.historyservice.v1.SyncWorkflowStateRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 196, // 242: temporal.server.api.historyservice.v1.SyncWorkflowStateRequest.versioned_transition:type_name -> temporal.server.api.persistence.v1.VersionedTransition + 200, // 243: temporal.server.api.historyservice.v1.SyncWorkflowStateRequest.version_histories:type_name -> temporal.server.api.history.v1.VersionHistories + 275, // 244: temporal.server.api.historyservice.v1.SyncWorkflowStateResponse.versioned_transition_artifact:type_name -> temporal.server.api.replication.v1.VersionedTransitionArtifact + 276, // 245: temporal.server.api.historyservice.v1.UpdateActivityOptionsRequest.update_request:type_name -> temporal.api.workflowservice.v1.UpdateActivityOptionsRequest + 277, // 246: temporal.server.api.historyservice.v1.UpdateActivityOptionsResponse.activity_options:type_name -> temporal.api.activity.v1.ActivityOptions + 278, // 247: temporal.server.api.historyservice.v1.PauseActivityRequest.frontend_request:type_name -> temporal.api.workflowservice.v1.PauseActivityRequest + 279, // 248: temporal.server.api.historyservice.v1.UnpauseActivityRequest.frontend_request:type_name -> temporal.api.workflowservice.v1.UnpauseActivityRequest + 280, // 249: temporal.server.api.historyservice.v1.ResetActivityRequest.frontend_request:type_name -> temporal.api.workflowservice.v1.ResetActivityRequest + 281, // 250: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionOptionsRequest.update_request:type_name -> temporal.api.workflowservice.v1.UpdateWorkflowExecutionOptionsRequest + 282, // 251: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionOptionsResponse.workflow_execution_options:type_name -> temporal.api.workflow.v1.WorkflowExecutionOptions + 177, // 252: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionOptionsResponse.update_time:type_name -> google.protobuf.Timestamp + 283, // 253: temporal.server.api.historyservice.v1.PauseWorkflowExecutionRequest.pause_request:type_name -> temporal.api.workflowservice.v1.PauseWorkflowExecutionRequest + 284, // 254: temporal.server.api.historyservice.v1.UnpauseWorkflowExecutionRequest.unpause_request:type_name -> temporal.api.workflowservice.v1.UnpauseWorkflowExecutionRequest + 285, // 255: temporal.server.api.historyservice.v1.StartNexusOperationRequest.request:type_name -> temporal.api.nexus.v1.StartOperationRequest + 286, // 256: temporal.server.api.historyservice.v1.StartNexusOperationResponse.response:type_name -> temporal.api.nexus.v1.StartOperationResponse + 287, // 257: temporal.server.api.historyservice.v1.CancelNexusOperationRequest.request:type_name -> temporal.api.nexus.v1.CancelOperationRequest + 288, // 258: temporal.server.api.historyservice.v1.CancelNexusOperationResponse.response:type_name -> temporal.api.nexus.v1.CancelOperationResponse + 289, // 259: temporal.server.api.historyservice.v1.PollWorkflowExecutionTimeSkippingRequest.request:type_name -> temporal.api.workflowservice.v1.PollWorkflowExecutionTimeSkippingRequest + 290, // 260: temporal.server.api.historyservice.v1.PollWorkflowExecutionTimeSkippingResponse.response:type_name -> temporal.api.workflowservice.v1.PollWorkflowExecutionTimeSkippingResponse + 1, // 261: temporal.server.api.historyservice.v1.ExecuteMultiOperationRequest.Operation.start_workflow:type_name -> temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest + 107, // 262: temporal.server.api.historyservice.v1.ExecuteMultiOperationRequest.Operation.update_workflow:type_name -> temporal.server.api.historyservice.v1.UpdateWorkflowExecutionRequest + 2, // 263: temporal.server.api.historyservice.v1.ExecuteMultiOperationResponse.Response.start_workflow:type_name -> temporal.server.api.historyservice.v1.StartWorkflowExecutionResponse + 108, // 264: temporal.server.api.historyservice.v1.ExecuteMultiOperationResponse.Response.update_workflow:type_name -> temporal.server.api.historyservice.v1.UpdateWorkflowExecutionResponse + 291, // 265: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse.QueriesEntry.value:type_name -> temporal.api.query.v1.WorkflowQuery + 291, // 266: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponseWithRawHistory.QueriesEntry.value:type_name -> temporal.api.query.v1.WorkflowQuery + 292, // 267: temporal.server.api.historyservice.v1.GetReplicationMessagesResponse.ShardMessagesEntry.value:type_name -> temporal.server.api.replication.v1.ReplicationMessages + 100, // 268: temporal.server.api.historyservice.v1.ShardReplicationStatus.RemoteClustersEntry.value:type_name -> temporal.server.api.historyservice.v1.ShardReplicationStatusPerCluster + 99, // 269: temporal.server.api.historyservice.v1.ShardReplicationStatus.HandoverNamespacesEntry.value:type_name -> temporal.server.api.historyservice.v1.HandoverNamespaceInfo + 234, // 270: temporal.server.api.historyservice.v1.AddTasksRequest.Task.blob:type_name -> temporal.api.common.v1.DataBlob + 293, // 271: temporal.server.api.historyservice.v1.routing:extendee -> google.protobuf.MessageOptions + 0, // 272: temporal.server.api.historyservice.v1.routing:type_name -> temporal.server.api.historyservice.v1.RoutingOptions + 273, // [273:273] is the sub-list for method output_type + 273, // [273:273] is the sub-list for method input_type + 272, // [272:273] is the sub-list for extension type_name + 271, // [271:272] is the sub-list for extension extendee + 0, // [0:271] is the sub-list for field type_name } func init() { file_temporal_server_api_historyservice_v1_request_response_proto_init() } @@ -12076,25 +12212,25 @@ func file_temporal_server_api_historyservice_v1_request_response_proto_init() { if File_temporal_server_api_historyservice_v1_request_response_proto != nil { return } - file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[107].OneofWrappers = []any{ + file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[109].OneofWrappers = []any{ (*StreamWorkflowReplicationMessagesRequest_SyncReplicationState)(nil), } - file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[108].OneofWrappers = []any{ + file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[110].OneofWrappers = []any{ (*StreamWorkflowReplicationMessagesResponse_Messages)(nil), } - file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[134].OneofWrappers = []any{ + file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[136].OneofWrappers = []any{ (*CompleteNexusOperationChasmRequest_Success)(nil), (*CompleteNexusOperationChasmRequest_Failure)(nil), } - file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[136].OneofWrappers = []any{ + file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[138].OneofWrappers = []any{ (*CompleteNexusOperationRequest_Success)(nil), (*CompleteNexusOperationRequest_Failure)(nil), } - file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[164].OneofWrappers = []any{ + file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[166].OneofWrappers = []any{ (*ExecuteMultiOperationRequest_Operation_StartWorkflow)(nil), (*ExecuteMultiOperationRequest_Operation_UpdateWorkflow)(nil), } - file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[165].OneofWrappers = []any{ + file_temporal_server_api_historyservice_v1_request_response_proto_msgTypes[167].OneofWrappers = []any{ (*ExecuteMultiOperationResponse_Response_StartWorkflow)(nil), (*ExecuteMultiOperationResponse_Response_UpdateWorkflow)(nil), } @@ -12104,7 +12240,7 @@ func file_temporal_server_api_historyservice_v1_request_response_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_historyservice_v1_request_response_proto_rawDesc), len(file_temporal_server_api_historyservice_v1_request_response_proto_rawDesc)), NumEnums: 0, - NumMessages: 173, + NumMessages: 175, NumExtensions: 1, NumServices: 0, }, diff --git a/api/historyservice/v1/service.pb.go b/api/historyservice/v1/service.pb.go index 640fef3b4d4..bee88cf6888 100644 --- a/api/historyservice/v1/service.pb.go +++ b/api/historyservice/v1/service.pb.go @@ -26,11 +26,12 @@ var File_temporal_server_api_historyservice_v1_service_proto protoreflect.FileDe const file_temporal_server_api_historyservice_v1_service_proto_rawDesc = "" + "\n" + - "3temporal/server/api/historyservice/v1/service.proto\x12%temporal.server.api.historyservice.v1\x1a0temporal/server/api/common/v1/api_category.proto\x1a.temporal.server.api.historyservice.v1.GetMutableStateResponse\"\x06\x8a\xb5\x18\x02\b\x01\x12\x9b\x01\n" + - "\x10PollMutableState\x12>.temporal.server.api.historyservice.v1.PollMutableStateRequest\x1a?.temporal.server.api.historyservice.v1.PollMutableStateResponse\"\x06\x8a\xb5\x18\x02\b\x02\x12\xa7\x01\n" + + "\x10PollMutableState\x12>.temporal.server.api.historyservice.v1.PollMutableStateRequest\x1a?.temporal.server.api.historyservice.v1.PollMutableStateResponse\"\x06\x8a\xb5\x18\x02\b\x02\x12\xaa\x01\n" + + "\x15GetStreamReplaySlices\x12C.temporal.server.api.historyservice.v1.GetStreamReplaySlicesRequest\x1aD.temporal.server.api.historyservice.v1.GetStreamReplaySlicesResponse\"\x06\x8a\xb5\x18\x02\b\x01\x12\xa7\x01\n" + "\x14ResetStickyTaskQueue\x12B.temporal.server.api.historyservice.v1.ResetStickyTaskQueueRequest\x1aC.temporal.server.api.historyservice.v1.ResetStickyTaskQueueResponse\"\x06\x8a\xb5\x18\x02\b\x01\x12\xb6\x01\n" + "\x19RecordWorkflowTaskStarted\x12G.temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest\x1aH.temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse\"\x06\x8a\xb5\x18\x02\b\x01\x12\xb6\x01\n" + "\x19RecordActivityTaskStarted\x12G.temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest\x1aH.temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse\"\x06\x8a\xb5\x18\x02\b\x01\x12\xbf\x01\n" + @@ -114,319 +115,323 @@ var file_temporal_server_api_historyservice_v1_service_proto_goTypes = []any{ (*StartWorkflowExecutionRequest)(nil), // 0: temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest (*GetMutableStateRequest)(nil), // 1: temporal.server.api.historyservice.v1.GetMutableStateRequest (*PollMutableStateRequest)(nil), // 2: temporal.server.api.historyservice.v1.PollMutableStateRequest - (*ResetStickyTaskQueueRequest)(nil), // 3: temporal.server.api.historyservice.v1.ResetStickyTaskQueueRequest - (*RecordWorkflowTaskStartedRequest)(nil), // 4: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest - (*RecordActivityTaskStartedRequest)(nil), // 5: temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest - (*RespondWorkflowTaskCompletedRequest)(nil), // 6: temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedRequest - (*RespondWorkflowTaskFailedRequest)(nil), // 7: temporal.server.api.historyservice.v1.RespondWorkflowTaskFailedRequest - (*IsWorkflowTaskValidRequest)(nil), // 8: temporal.server.api.historyservice.v1.IsWorkflowTaskValidRequest - (*RecordActivityTaskHeartbeatRequest)(nil), // 9: temporal.server.api.historyservice.v1.RecordActivityTaskHeartbeatRequest - (*RespondActivityTaskCompletedRequest)(nil), // 10: temporal.server.api.historyservice.v1.RespondActivityTaskCompletedRequest - (*RespondActivityTaskFailedRequest)(nil), // 11: temporal.server.api.historyservice.v1.RespondActivityTaskFailedRequest - (*RespondActivityTaskCanceledRequest)(nil), // 12: temporal.server.api.historyservice.v1.RespondActivityTaskCanceledRequest - (*IsActivityTaskValidRequest)(nil), // 13: temporal.server.api.historyservice.v1.IsActivityTaskValidRequest - (*SignalWorkflowExecutionRequest)(nil), // 14: temporal.server.api.historyservice.v1.SignalWorkflowExecutionRequest - (*SignalWithStartWorkflowExecutionRequest)(nil), // 15: temporal.server.api.historyservice.v1.SignalWithStartWorkflowExecutionRequest - (*ExecuteMultiOperationRequest)(nil), // 16: temporal.server.api.historyservice.v1.ExecuteMultiOperationRequest - (*RemoveSignalMutableStateRequest)(nil), // 17: temporal.server.api.historyservice.v1.RemoveSignalMutableStateRequest - (*TerminateWorkflowExecutionRequest)(nil), // 18: temporal.server.api.historyservice.v1.TerminateWorkflowExecutionRequest - (*DeleteWorkflowExecutionRequest)(nil), // 19: temporal.server.api.historyservice.v1.DeleteWorkflowExecutionRequest - (*ResetWorkflowExecutionRequest)(nil), // 20: temporal.server.api.historyservice.v1.ResetWorkflowExecutionRequest - (*UpdateWorkflowExecutionOptionsRequest)(nil), // 21: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionOptionsRequest - (*RequestCancelWorkflowExecutionRequest)(nil), // 22: temporal.server.api.historyservice.v1.RequestCancelWorkflowExecutionRequest - (*ScheduleWorkflowTaskRequest)(nil), // 23: temporal.server.api.historyservice.v1.ScheduleWorkflowTaskRequest - (*VerifyFirstWorkflowTaskScheduledRequest)(nil), // 24: temporal.server.api.historyservice.v1.VerifyFirstWorkflowTaskScheduledRequest - (*RecordChildExecutionCompletedRequest)(nil), // 25: temporal.server.api.historyservice.v1.RecordChildExecutionCompletedRequest - (*VerifyChildExecutionCompletionRecordedRequest)(nil), // 26: temporal.server.api.historyservice.v1.VerifyChildExecutionCompletionRecordedRequest - (*DescribeWorkflowExecutionRequest)(nil), // 27: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionRequest - (*ReplicateEventsV2Request)(nil), // 28: temporal.server.api.historyservice.v1.ReplicateEventsV2Request - (*ReplicateWorkflowStateRequest)(nil), // 29: temporal.server.api.historyservice.v1.ReplicateWorkflowStateRequest - (*SyncShardStatusRequest)(nil), // 30: temporal.server.api.historyservice.v1.SyncShardStatusRequest - (*SyncActivityRequest)(nil), // 31: temporal.server.api.historyservice.v1.SyncActivityRequest - (*DescribeMutableStateRequest)(nil), // 32: temporal.server.api.historyservice.v1.DescribeMutableStateRequest - (*DescribeHistoryHostRequest)(nil), // 33: temporal.server.api.historyservice.v1.DescribeHistoryHostRequest - (*CloseShardRequest)(nil), // 34: temporal.server.api.historyservice.v1.CloseShardRequest - (*GetShardRequest)(nil), // 35: temporal.server.api.historyservice.v1.GetShardRequest - (*RemoveTaskRequest)(nil), // 36: temporal.server.api.historyservice.v1.RemoveTaskRequest - (*GetReplicationMessagesRequest)(nil), // 37: temporal.server.api.historyservice.v1.GetReplicationMessagesRequest - (*GetDLQReplicationMessagesRequest)(nil), // 38: temporal.server.api.historyservice.v1.GetDLQReplicationMessagesRequest - (*QueryWorkflowRequest)(nil), // 39: temporal.server.api.historyservice.v1.QueryWorkflowRequest - (*ReapplyEventsRequest)(nil), // 40: temporal.server.api.historyservice.v1.ReapplyEventsRequest - (*GetDLQMessagesRequest)(nil), // 41: temporal.server.api.historyservice.v1.GetDLQMessagesRequest - (*PurgeDLQMessagesRequest)(nil), // 42: temporal.server.api.historyservice.v1.PurgeDLQMessagesRequest - (*MergeDLQMessagesRequest)(nil), // 43: temporal.server.api.historyservice.v1.MergeDLQMessagesRequest - (*RefreshWorkflowTasksRequest)(nil), // 44: temporal.server.api.historyservice.v1.RefreshWorkflowTasksRequest - (*GenerateLastHistoryReplicationTasksRequest)(nil), // 45: temporal.server.api.historyservice.v1.GenerateLastHistoryReplicationTasksRequest - (*GetReplicationStatusRequest)(nil), // 46: temporal.server.api.historyservice.v1.GetReplicationStatusRequest - (*RebuildMutableStateRequest)(nil), // 47: temporal.server.api.historyservice.v1.RebuildMutableStateRequest - (*ImportWorkflowExecutionRequest)(nil), // 48: temporal.server.api.historyservice.v1.ImportWorkflowExecutionRequest - (*DeleteWorkflowVisibilityRecordRequest)(nil), // 49: temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordRequest - (*UpdateWorkflowExecutionRequest)(nil), // 50: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionRequest - (*PollWorkflowExecutionUpdateRequest)(nil), // 51: temporal.server.api.historyservice.v1.PollWorkflowExecutionUpdateRequest - (*StreamWorkflowReplicationMessagesRequest)(nil), // 52: temporal.server.api.historyservice.v1.StreamWorkflowReplicationMessagesRequest - (*GetWorkflowExecutionHistoryRequest)(nil), // 53: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryRequest - (*GetWorkflowExecutionHistoryReverseRequest)(nil), // 54: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryReverseRequest - (*GetWorkflowExecutionRawHistoryV2Request)(nil), // 55: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryV2Request - (*GetWorkflowExecutionRawHistoryRequest)(nil), // 56: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryRequest - (*ForceDeleteWorkflowExecutionRequest)(nil), // 57: temporal.server.api.historyservice.v1.ForceDeleteWorkflowExecutionRequest - (*DeleteExecutionRequest)(nil), // 58: temporal.server.api.historyservice.v1.DeleteExecutionRequest - (*GetDLQTasksRequest)(nil), // 59: temporal.server.api.historyservice.v1.GetDLQTasksRequest - (*DeleteDLQTasksRequest)(nil), // 60: temporal.server.api.historyservice.v1.DeleteDLQTasksRequest - (*ListQueuesRequest)(nil), // 61: temporal.server.api.historyservice.v1.ListQueuesRequest - (*AddTasksRequest)(nil), // 62: temporal.server.api.historyservice.v1.AddTasksRequest - (*ListTasksRequest)(nil), // 63: temporal.server.api.historyservice.v1.ListTasksRequest - (*CompleteNexusOperationRequest)(nil), // 64: temporal.server.api.historyservice.v1.CompleteNexusOperationRequest - (*CompleteNexusOperationChasmRequest)(nil), // 65: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest - (*InvokeStateMachineMethodRequest)(nil), // 66: temporal.server.api.historyservice.v1.InvokeStateMachineMethodRequest - (*DeepHealthCheckRequest)(nil), // 67: temporal.server.api.historyservice.v1.DeepHealthCheckRequest - (*SyncWorkflowStateRequest)(nil), // 68: temporal.server.api.historyservice.v1.SyncWorkflowStateRequest - (*UpdateActivityOptionsRequest)(nil), // 69: temporal.server.api.historyservice.v1.UpdateActivityOptionsRequest - (*PauseActivityRequest)(nil), // 70: temporal.server.api.historyservice.v1.PauseActivityRequest - (*UnpauseActivityRequest)(nil), // 71: temporal.server.api.historyservice.v1.UnpauseActivityRequest - (*ResetActivityRequest)(nil), // 72: temporal.server.api.historyservice.v1.ResetActivityRequest - (*PauseWorkflowExecutionRequest)(nil), // 73: temporal.server.api.historyservice.v1.PauseWorkflowExecutionRequest - (*UnpauseWorkflowExecutionRequest)(nil), // 74: temporal.server.api.historyservice.v1.UnpauseWorkflowExecutionRequest - (*StartNexusOperationRequest)(nil), // 75: temporal.server.api.historyservice.v1.StartNexusOperationRequest - (*CancelNexusOperationRequest)(nil), // 76: temporal.server.api.historyservice.v1.CancelNexusOperationRequest - (*PollWorkflowExecutionTimeSkippingRequest)(nil), // 77: temporal.server.api.historyservice.v1.PollWorkflowExecutionTimeSkippingRequest - (*StartWorkflowExecutionResponse)(nil), // 78: temporal.server.api.historyservice.v1.StartWorkflowExecutionResponse - (*GetMutableStateResponse)(nil), // 79: temporal.server.api.historyservice.v1.GetMutableStateResponse - (*PollMutableStateResponse)(nil), // 80: temporal.server.api.historyservice.v1.PollMutableStateResponse - (*ResetStickyTaskQueueResponse)(nil), // 81: temporal.server.api.historyservice.v1.ResetStickyTaskQueueResponse - (*RecordWorkflowTaskStartedResponse)(nil), // 82: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse - (*RecordActivityTaskStartedResponse)(nil), // 83: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse - (*RespondWorkflowTaskCompletedResponse)(nil), // 84: temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedResponse - (*RespondWorkflowTaskFailedResponse)(nil), // 85: temporal.server.api.historyservice.v1.RespondWorkflowTaskFailedResponse - (*IsWorkflowTaskValidResponse)(nil), // 86: temporal.server.api.historyservice.v1.IsWorkflowTaskValidResponse - (*RecordActivityTaskHeartbeatResponse)(nil), // 87: temporal.server.api.historyservice.v1.RecordActivityTaskHeartbeatResponse - (*RespondActivityTaskCompletedResponse)(nil), // 88: temporal.server.api.historyservice.v1.RespondActivityTaskCompletedResponse - (*RespondActivityTaskFailedResponse)(nil), // 89: temporal.server.api.historyservice.v1.RespondActivityTaskFailedResponse - (*RespondActivityTaskCanceledResponse)(nil), // 90: temporal.server.api.historyservice.v1.RespondActivityTaskCanceledResponse - (*IsActivityTaskValidResponse)(nil), // 91: temporal.server.api.historyservice.v1.IsActivityTaskValidResponse - (*SignalWorkflowExecutionResponse)(nil), // 92: temporal.server.api.historyservice.v1.SignalWorkflowExecutionResponse - (*SignalWithStartWorkflowExecutionResponse)(nil), // 93: temporal.server.api.historyservice.v1.SignalWithStartWorkflowExecutionResponse - (*ExecuteMultiOperationResponse)(nil), // 94: temporal.server.api.historyservice.v1.ExecuteMultiOperationResponse - (*RemoveSignalMutableStateResponse)(nil), // 95: temporal.server.api.historyservice.v1.RemoveSignalMutableStateResponse - (*TerminateWorkflowExecutionResponse)(nil), // 96: temporal.server.api.historyservice.v1.TerminateWorkflowExecutionResponse - (*DeleteWorkflowExecutionResponse)(nil), // 97: temporal.server.api.historyservice.v1.DeleteWorkflowExecutionResponse - (*ResetWorkflowExecutionResponse)(nil), // 98: temporal.server.api.historyservice.v1.ResetWorkflowExecutionResponse - (*UpdateWorkflowExecutionOptionsResponse)(nil), // 99: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionOptionsResponse - (*RequestCancelWorkflowExecutionResponse)(nil), // 100: temporal.server.api.historyservice.v1.RequestCancelWorkflowExecutionResponse - (*ScheduleWorkflowTaskResponse)(nil), // 101: temporal.server.api.historyservice.v1.ScheduleWorkflowTaskResponse - (*VerifyFirstWorkflowTaskScheduledResponse)(nil), // 102: temporal.server.api.historyservice.v1.VerifyFirstWorkflowTaskScheduledResponse - (*RecordChildExecutionCompletedResponse)(nil), // 103: temporal.server.api.historyservice.v1.RecordChildExecutionCompletedResponse - (*VerifyChildExecutionCompletionRecordedResponse)(nil), // 104: temporal.server.api.historyservice.v1.VerifyChildExecutionCompletionRecordedResponse - (*DescribeWorkflowExecutionResponse)(nil), // 105: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse - (*ReplicateEventsV2Response)(nil), // 106: temporal.server.api.historyservice.v1.ReplicateEventsV2Response - (*ReplicateWorkflowStateResponse)(nil), // 107: temporal.server.api.historyservice.v1.ReplicateWorkflowStateResponse - (*SyncShardStatusResponse)(nil), // 108: temporal.server.api.historyservice.v1.SyncShardStatusResponse - (*SyncActivityResponse)(nil), // 109: temporal.server.api.historyservice.v1.SyncActivityResponse - (*DescribeMutableStateResponse)(nil), // 110: temporal.server.api.historyservice.v1.DescribeMutableStateResponse - (*DescribeHistoryHostResponse)(nil), // 111: temporal.server.api.historyservice.v1.DescribeHistoryHostResponse - (*CloseShardResponse)(nil), // 112: temporal.server.api.historyservice.v1.CloseShardResponse - (*GetShardResponse)(nil), // 113: temporal.server.api.historyservice.v1.GetShardResponse - (*RemoveTaskResponse)(nil), // 114: temporal.server.api.historyservice.v1.RemoveTaskResponse - (*GetReplicationMessagesResponse)(nil), // 115: temporal.server.api.historyservice.v1.GetReplicationMessagesResponse - (*GetDLQReplicationMessagesResponse)(nil), // 116: temporal.server.api.historyservice.v1.GetDLQReplicationMessagesResponse - (*QueryWorkflowResponse)(nil), // 117: temporal.server.api.historyservice.v1.QueryWorkflowResponse - (*ReapplyEventsResponse)(nil), // 118: temporal.server.api.historyservice.v1.ReapplyEventsResponse - (*GetDLQMessagesResponse)(nil), // 119: temporal.server.api.historyservice.v1.GetDLQMessagesResponse - (*PurgeDLQMessagesResponse)(nil), // 120: temporal.server.api.historyservice.v1.PurgeDLQMessagesResponse - (*MergeDLQMessagesResponse)(nil), // 121: temporal.server.api.historyservice.v1.MergeDLQMessagesResponse - (*RefreshWorkflowTasksResponse)(nil), // 122: temporal.server.api.historyservice.v1.RefreshWorkflowTasksResponse - (*GenerateLastHistoryReplicationTasksResponse)(nil), // 123: temporal.server.api.historyservice.v1.GenerateLastHistoryReplicationTasksResponse - (*GetReplicationStatusResponse)(nil), // 124: temporal.server.api.historyservice.v1.GetReplicationStatusResponse - (*RebuildMutableStateResponse)(nil), // 125: temporal.server.api.historyservice.v1.RebuildMutableStateResponse - (*ImportWorkflowExecutionResponse)(nil), // 126: temporal.server.api.historyservice.v1.ImportWorkflowExecutionResponse - (*DeleteWorkflowVisibilityRecordResponse)(nil), // 127: temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordResponse - (*UpdateWorkflowExecutionResponse)(nil), // 128: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionResponse - (*PollWorkflowExecutionUpdateResponse)(nil), // 129: temporal.server.api.historyservice.v1.PollWorkflowExecutionUpdateResponse - (*StreamWorkflowReplicationMessagesResponse)(nil), // 130: temporal.server.api.historyservice.v1.StreamWorkflowReplicationMessagesResponse - (*GetWorkflowExecutionHistoryResponse)(nil), // 131: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryResponse - (*GetWorkflowExecutionHistoryReverseResponse)(nil), // 132: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryReverseResponse - (*GetWorkflowExecutionRawHistoryV2Response)(nil), // 133: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryV2Response - (*GetWorkflowExecutionRawHistoryResponse)(nil), // 134: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryResponse - (*ForceDeleteWorkflowExecutionResponse)(nil), // 135: temporal.server.api.historyservice.v1.ForceDeleteWorkflowExecutionResponse - (*DeleteExecutionResponse)(nil), // 136: temporal.server.api.historyservice.v1.DeleteExecutionResponse - (*GetDLQTasksResponse)(nil), // 137: temporal.server.api.historyservice.v1.GetDLQTasksResponse - (*DeleteDLQTasksResponse)(nil), // 138: temporal.server.api.historyservice.v1.DeleteDLQTasksResponse - (*ListQueuesResponse)(nil), // 139: temporal.server.api.historyservice.v1.ListQueuesResponse - (*AddTasksResponse)(nil), // 140: temporal.server.api.historyservice.v1.AddTasksResponse - (*ListTasksResponse)(nil), // 141: temporal.server.api.historyservice.v1.ListTasksResponse - (*CompleteNexusOperationResponse)(nil), // 142: temporal.server.api.historyservice.v1.CompleteNexusOperationResponse - (*CompleteNexusOperationChasmResponse)(nil), // 143: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmResponse - (*InvokeStateMachineMethodResponse)(nil), // 144: temporal.server.api.historyservice.v1.InvokeStateMachineMethodResponse - (*DeepHealthCheckResponse)(nil), // 145: temporal.server.api.historyservice.v1.DeepHealthCheckResponse - (*SyncWorkflowStateResponse)(nil), // 146: temporal.server.api.historyservice.v1.SyncWorkflowStateResponse - (*UpdateActivityOptionsResponse)(nil), // 147: temporal.server.api.historyservice.v1.UpdateActivityOptionsResponse - (*PauseActivityResponse)(nil), // 148: temporal.server.api.historyservice.v1.PauseActivityResponse - (*UnpauseActivityResponse)(nil), // 149: temporal.server.api.historyservice.v1.UnpauseActivityResponse - (*ResetActivityResponse)(nil), // 150: temporal.server.api.historyservice.v1.ResetActivityResponse - (*PauseWorkflowExecutionResponse)(nil), // 151: temporal.server.api.historyservice.v1.PauseWorkflowExecutionResponse - (*UnpauseWorkflowExecutionResponse)(nil), // 152: temporal.server.api.historyservice.v1.UnpauseWorkflowExecutionResponse - (*StartNexusOperationResponse)(nil), // 153: temporal.server.api.historyservice.v1.StartNexusOperationResponse - (*CancelNexusOperationResponse)(nil), // 154: temporal.server.api.historyservice.v1.CancelNexusOperationResponse - (*PollWorkflowExecutionTimeSkippingResponse)(nil), // 155: temporal.server.api.historyservice.v1.PollWorkflowExecutionTimeSkippingResponse + (*GetStreamReplaySlicesRequest)(nil), // 3: temporal.server.api.historyservice.v1.GetStreamReplaySlicesRequest + (*ResetStickyTaskQueueRequest)(nil), // 4: temporal.server.api.historyservice.v1.ResetStickyTaskQueueRequest + (*RecordWorkflowTaskStartedRequest)(nil), // 5: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest + (*RecordActivityTaskStartedRequest)(nil), // 6: temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest + (*RespondWorkflowTaskCompletedRequest)(nil), // 7: temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedRequest + (*RespondWorkflowTaskFailedRequest)(nil), // 8: temporal.server.api.historyservice.v1.RespondWorkflowTaskFailedRequest + (*IsWorkflowTaskValidRequest)(nil), // 9: temporal.server.api.historyservice.v1.IsWorkflowTaskValidRequest + (*RecordActivityTaskHeartbeatRequest)(nil), // 10: temporal.server.api.historyservice.v1.RecordActivityTaskHeartbeatRequest + (*RespondActivityTaskCompletedRequest)(nil), // 11: temporal.server.api.historyservice.v1.RespondActivityTaskCompletedRequest + (*RespondActivityTaskFailedRequest)(nil), // 12: temporal.server.api.historyservice.v1.RespondActivityTaskFailedRequest + (*RespondActivityTaskCanceledRequest)(nil), // 13: temporal.server.api.historyservice.v1.RespondActivityTaskCanceledRequest + (*IsActivityTaskValidRequest)(nil), // 14: temporal.server.api.historyservice.v1.IsActivityTaskValidRequest + (*SignalWorkflowExecutionRequest)(nil), // 15: temporal.server.api.historyservice.v1.SignalWorkflowExecutionRequest + (*SignalWithStartWorkflowExecutionRequest)(nil), // 16: temporal.server.api.historyservice.v1.SignalWithStartWorkflowExecutionRequest + (*ExecuteMultiOperationRequest)(nil), // 17: temporal.server.api.historyservice.v1.ExecuteMultiOperationRequest + (*RemoveSignalMutableStateRequest)(nil), // 18: temporal.server.api.historyservice.v1.RemoveSignalMutableStateRequest + (*TerminateWorkflowExecutionRequest)(nil), // 19: temporal.server.api.historyservice.v1.TerminateWorkflowExecutionRequest + (*DeleteWorkflowExecutionRequest)(nil), // 20: temporal.server.api.historyservice.v1.DeleteWorkflowExecutionRequest + (*ResetWorkflowExecutionRequest)(nil), // 21: temporal.server.api.historyservice.v1.ResetWorkflowExecutionRequest + (*UpdateWorkflowExecutionOptionsRequest)(nil), // 22: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionOptionsRequest + (*RequestCancelWorkflowExecutionRequest)(nil), // 23: temporal.server.api.historyservice.v1.RequestCancelWorkflowExecutionRequest + (*ScheduleWorkflowTaskRequest)(nil), // 24: temporal.server.api.historyservice.v1.ScheduleWorkflowTaskRequest + (*VerifyFirstWorkflowTaskScheduledRequest)(nil), // 25: temporal.server.api.historyservice.v1.VerifyFirstWorkflowTaskScheduledRequest + (*RecordChildExecutionCompletedRequest)(nil), // 26: temporal.server.api.historyservice.v1.RecordChildExecutionCompletedRequest + (*VerifyChildExecutionCompletionRecordedRequest)(nil), // 27: temporal.server.api.historyservice.v1.VerifyChildExecutionCompletionRecordedRequest + (*DescribeWorkflowExecutionRequest)(nil), // 28: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionRequest + (*ReplicateEventsV2Request)(nil), // 29: temporal.server.api.historyservice.v1.ReplicateEventsV2Request + (*ReplicateWorkflowStateRequest)(nil), // 30: temporal.server.api.historyservice.v1.ReplicateWorkflowStateRequest + (*SyncShardStatusRequest)(nil), // 31: temporal.server.api.historyservice.v1.SyncShardStatusRequest + (*SyncActivityRequest)(nil), // 32: temporal.server.api.historyservice.v1.SyncActivityRequest + (*DescribeMutableStateRequest)(nil), // 33: temporal.server.api.historyservice.v1.DescribeMutableStateRequest + (*DescribeHistoryHostRequest)(nil), // 34: temporal.server.api.historyservice.v1.DescribeHistoryHostRequest + (*CloseShardRequest)(nil), // 35: temporal.server.api.historyservice.v1.CloseShardRequest + (*GetShardRequest)(nil), // 36: temporal.server.api.historyservice.v1.GetShardRequest + (*RemoveTaskRequest)(nil), // 37: temporal.server.api.historyservice.v1.RemoveTaskRequest + (*GetReplicationMessagesRequest)(nil), // 38: temporal.server.api.historyservice.v1.GetReplicationMessagesRequest + (*GetDLQReplicationMessagesRequest)(nil), // 39: temporal.server.api.historyservice.v1.GetDLQReplicationMessagesRequest + (*QueryWorkflowRequest)(nil), // 40: temporal.server.api.historyservice.v1.QueryWorkflowRequest + (*ReapplyEventsRequest)(nil), // 41: temporal.server.api.historyservice.v1.ReapplyEventsRequest + (*GetDLQMessagesRequest)(nil), // 42: temporal.server.api.historyservice.v1.GetDLQMessagesRequest + (*PurgeDLQMessagesRequest)(nil), // 43: temporal.server.api.historyservice.v1.PurgeDLQMessagesRequest + (*MergeDLQMessagesRequest)(nil), // 44: temporal.server.api.historyservice.v1.MergeDLQMessagesRequest + (*RefreshWorkflowTasksRequest)(nil), // 45: temporal.server.api.historyservice.v1.RefreshWorkflowTasksRequest + (*GenerateLastHistoryReplicationTasksRequest)(nil), // 46: temporal.server.api.historyservice.v1.GenerateLastHistoryReplicationTasksRequest + (*GetReplicationStatusRequest)(nil), // 47: temporal.server.api.historyservice.v1.GetReplicationStatusRequest + (*RebuildMutableStateRequest)(nil), // 48: temporal.server.api.historyservice.v1.RebuildMutableStateRequest + (*ImportWorkflowExecutionRequest)(nil), // 49: temporal.server.api.historyservice.v1.ImportWorkflowExecutionRequest + (*DeleteWorkflowVisibilityRecordRequest)(nil), // 50: temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordRequest + (*UpdateWorkflowExecutionRequest)(nil), // 51: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionRequest + (*PollWorkflowExecutionUpdateRequest)(nil), // 52: temporal.server.api.historyservice.v1.PollWorkflowExecutionUpdateRequest + (*StreamWorkflowReplicationMessagesRequest)(nil), // 53: temporal.server.api.historyservice.v1.StreamWorkflowReplicationMessagesRequest + (*GetWorkflowExecutionHistoryRequest)(nil), // 54: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryRequest + (*GetWorkflowExecutionHistoryReverseRequest)(nil), // 55: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryReverseRequest + (*GetWorkflowExecutionRawHistoryV2Request)(nil), // 56: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryV2Request + (*GetWorkflowExecutionRawHistoryRequest)(nil), // 57: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryRequest + (*ForceDeleteWorkflowExecutionRequest)(nil), // 58: temporal.server.api.historyservice.v1.ForceDeleteWorkflowExecutionRequest + (*DeleteExecutionRequest)(nil), // 59: temporal.server.api.historyservice.v1.DeleteExecutionRequest + (*GetDLQTasksRequest)(nil), // 60: temporal.server.api.historyservice.v1.GetDLQTasksRequest + (*DeleteDLQTasksRequest)(nil), // 61: temporal.server.api.historyservice.v1.DeleteDLQTasksRequest + (*ListQueuesRequest)(nil), // 62: temporal.server.api.historyservice.v1.ListQueuesRequest + (*AddTasksRequest)(nil), // 63: temporal.server.api.historyservice.v1.AddTasksRequest + (*ListTasksRequest)(nil), // 64: temporal.server.api.historyservice.v1.ListTasksRequest + (*CompleteNexusOperationRequest)(nil), // 65: temporal.server.api.historyservice.v1.CompleteNexusOperationRequest + (*CompleteNexusOperationChasmRequest)(nil), // 66: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest + (*InvokeStateMachineMethodRequest)(nil), // 67: temporal.server.api.historyservice.v1.InvokeStateMachineMethodRequest + (*DeepHealthCheckRequest)(nil), // 68: temporal.server.api.historyservice.v1.DeepHealthCheckRequest + (*SyncWorkflowStateRequest)(nil), // 69: temporal.server.api.historyservice.v1.SyncWorkflowStateRequest + (*UpdateActivityOptionsRequest)(nil), // 70: temporal.server.api.historyservice.v1.UpdateActivityOptionsRequest + (*PauseActivityRequest)(nil), // 71: temporal.server.api.historyservice.v1.PauseActivityRequest + (*UnpauseActivityRequest)(nil), // 72: temporal.server.api.historyservice.v1.UnpauseActivityRequest + (*ResetActivityRequest)(nil), // 73: temporal.server.api.historyservice.v1.ResetActivityRequest + (*PauseWorkflowExecutionRequest)(nil), // 74: temporal.server.api.historyservice.v1.PauseWorkflowExecutionRequest + (*UnpauseWorkflowExecutionRequest)(nil), // 75: temporal.server.api.historyservice.v1.UnpauseWorkflowExecutionRequest + (*StartNexusOperationRequest)(nil), // 76: temporal.server.api.historyservice.v1.StartNexusOperationRequest + (*CancelNexusOperationRequest)(nil), // 77: temporal.server.api.historyservice.v1.CancelNexusOperationRequest + (*PollWorkflowExecutionTimeSkippingRequest)(nil), // 78: temporal.server.api.historyservice.v1.PollWorkflowExecutionTimeSkippingRequest + (*StartWorkflowExecutionResponse)(nil), // 79: temporal.server.api.historyservice.v1.StartWorkflowExecutionResponse + (*GetMutableStateResponse)(nil), // 80: temporal.server.api.historyservice.v1.GetMutableStateResponse + (*PollMutableStateResponse)(nil), // 81: temporal.server.api.historyservice.v1.PollMutableStateResponse + (*GetStreamReplaySlicesResponse)(nil), // 82: temporal.server.api.historyservice.v1.GetStreamReplaySlicesResponse + (*ResetStickyTaskQueueResponse)(nil), // 83: temporal.server.api.historyservice.v1.ResetStickyTaskQueueResponse + (*RecordWorkflowTaskStartedResponse)(nil), // 84: temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse + (*RecordActivityTaskStartedResponse)(nil), // 85: temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse + (*RespondWorkflowTaskCompletedResponse)(nil), // 86: temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedResponse + (*RespondWorkflowTaskFailedResponse)(nil), // 87: temporal.server.api.historyservice.v1.RespondWorkflowTaskFailedResponse + (*IsWorkflowTaskValidResponse)(nil), // 88: temporal.server.api.historyservice.v1.IsWorkflowTaskValidResponse + (*RecordActivityTaskHeartbeatResponse)(nil), // 89: temporal.server.api.historyservice.v1.RecordActivityTaskHeartbeatResponse + (*RespondActivityTaskCompletedResponse)(nil), // 90: temporal.server.api.historyservice.v1.RespondActivityTaskCompletedResponse + (*RespondActivityTaskFailedResponse)(nil), // 91: temporal.server.api.historyservice.v1.RespondActivityTaskFailedResponse + (*RespondActivityTaskCanceledResponse)(nil), // 92: temporal.server.api.historyservice.v1.RespondActivityTaskCanceledResponse + (*IsActivityTaskValidResponse)(nil), // 93: temporal.server.api.historyservice.v1.IsActivityTaskValidResponse + (*SignalWorkflowExecutionResponse)(nil), // 94: temporal.server.api.historyservice.v1.SignalWorkflowExecutionResponse + (*SignalWithStartWorkflowExecutionResponse)(nil), // 95: temporal.server.api.historyservice.v1.SignalWithStartWorkflowExecutionResponse + (*ExecuteMultiOperationResponse)(nil), // 96: temporal.server.api.historyservice.v1.ExecuteMultiOperationResponse + (*RemoveSignalMutableStateResponse)(nil), // 97: temporal.server.api.historyservice.v1.RemoveSignalMutableStateResponse + (*TerminateWorkflowExecutionResponse)(nil), // 98: temporal.server.api.historyservice.v1.TerminateWorkflowExecutionResponse + (*DeleteWorkflowExecutionResponse)(nil), // 99: temporal.server.api.historyservice.v1.DeleteWorkflowExecutionResponse + (*ResetWorkflowExecutionResponse)(nil), // 100: temporal.server.api.historyservice.v1.ResetWorkflowExecutionResponse + (*UpdateWorkflowExecutionOptionsResponse)(nil), // 101: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionOptionsResponse + (*RequestCancelWorkflowExecutionResponse)(nil), // 102: temporal.server.api.historyservice.v1.RequestCancelWorkflowExecutionResponse + (*ScheduleWorkflowTaskResponse)(nil), // 103: temporal.server.api.historyservice.v1.ScheduleWorkflowTaskResponse + (*VerifyFirstWorkflowTaskScheduledResponse)(nil), // 104: temporal.server.api.historyservice.v1.VerifyFirstWorkflowTaskScheduledResponse + (*RecordChildExecutionCompletedResponse)(nil), // 105: temporal.server.api.historyservice.v1.RecordChildExecutionCompletedResponse + (*VerifyChildExecutionCompletionRecordedResponse)(nil), // 106: temporal.server.api.historyservice.v1.VerifyChildExecutionCompletionRecordedResponse + (*DescribeWorkflowExecutionResponse)(nil), // 107: temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse + (*ReplicateEventsV2Response)(nil), // 108: temporal.server.api.historyservice.v1.ReplicateEventsV2Response + (*ReplicateWorkflowStateResponse)(nil), // 109: temporal.server.api.historyservice.v1.ReplicateWorkflowStateResponse + (*SyncShardStatusResponse)(nil), // 110: temporal.server.api.historyservice.v1.SyncShardStatusResponse + (*SyncActivityResponse)(nil), // 111: temporal.server.api.historyservice.v1.SyncActivityResponse + (*DescribeMutableStateResponse)(nil), // 112: temporal.server.api.historyservice.v1.DescribeMutableStateResponse + (*DescribeHistoryHostResponse)(nil), // 113: temporal.server.api.historyservice.v1.DescribeHistoryHostResponse + (*CloseShardResponse)(nil), // 114: temporal.server.api.historyservice.v1.CloseShardResponse + (*GetShardResponse)(nil), // 115: temporal.server.api.historyservice.v1.GetShardResponse + (*RemoveTaskResponse)(nil), // 116: temporal.server.api.historyservice.v1.RemoveTaskResponse + (*GetReplicationMessagesResponse)(nil), // 117: temporal.server.api.historyservice.v1.GetReplicationMessagesResponse + (*GetDLQReplicationMessagesResponse)(nil), // 118: temporal.server.api.historyservice.v1.GetDLQReplicationMessagesResponse + (*QueryWorkflowResponse)(nil), // 119: temporal.server.api.historyservice.v1.QueryWorkflowResponse + (*ReapplyEventsResponse)(nil), // 120: temporal.server.api.historyservice.v1.ReapplyEventsResponse + (*GetDLQMessagesResponse)(nil), // 121: temporal.server.api.historyservice.v1.GetDLQMessagesResponse + (*PurgeDLQMessagesResponse)(nil), // 122: temporal.server.api.historyservice.v1.PurgeDLQMessagesResponse + (*MergeDLQMessagesResponse)(nil), // 123: temporal.server.api.historyservice.v1.MergeDLQMessagesResponse + (*RefreshWorkflowTasksResponse)(nil), // 124: temporal.server.api.historyservice.v1.RefreshWorkflowTasksResponse + (*GenerateLastHistoryReplicationTasksResponse)(nil), // 125: temporal.server.api.historyservice.v1.GenerateLastHistoryReplicationTasksResponse + (*GetReplicationStatusResponse)(nil), // 126: temporal.server.api.historyservice.v1.GetReplicationStatusResponse + (*RebuildMutableStateResponse)(nil), // 127: temporal.server.api.historyservice.v1.RebuildMutableStateResponse + (*ImportWorkflowExecutionResponse)(nil), // 128: temporal.server.api.historyservice.v1.ImportWorkflowExecutionResponse + (*DeleteWorkflowVisibilityRecordResponse)(nil), // 129: temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordResponse + (*UpdateWorkflowExecutionResponse)(nil), // 130: temporal.server.api.historyservice.v1.UpdateWorkflowExecutionResponse + (*PollWorkflowExecutionUpdateResponse)(nil), // 131: temporal.server.api.historyservice.v1.PollWorkflowExecutionUpdateResponse + (*StreamWorkflowReplicationMessagesResponse)(nil), // 132: temporal.server.api.historyservice.v1.StreamWorkflowReplicationMessagesResponse + (*GetWorkflowExecutionHistoryResponse)(nil), // 133: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryResponse + (*GetWorkflowExecutionHistoryReverseResponse)(nil), // 134: temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryReverseResponse + (*GetWorkflowExecutionRawHistoryV2Response)(nil), // 135: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryV2Response + (*GetWorkflowExecutionRawHistoryResponse)(nil), // 136: temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryResponse + (*ForceDeleteWorkflowExecutionResponse)(nil), // 137: temporal.server.api.historyservice.v1.ForceDeleteWorkflowExecutionResponse + (*DeleteExecutionResponse)(nil), // 138: temporal.server.api.historyservice.v1.DeleteExecutionResponse + (*GetDLQTasksResponse)(nil), // 139: temporal.server.api.historyservice.v1.GetDLQTasksResponse + (*DeleteDLQTasksResponse)(nil), // 140: temporal.server.api.historyservice.v1.DeleteDLQTasksResponse + (*ListQueuesResponse)(nil), // 141: temporal.server.api.historyservice.v1.ListQueuesResponse + (*AddTasksResponse)(nil), // 142: temporal.server.api.historyservice.v1.AddTasksResponse + (*ListTasksResponse)(nil), // 143: temporal.server.api.historyservice.v1.ListTasksResponse + (*CompleteNexusOperationResponse)(nil), // 144: temporal.server.api.historyservice.v1.CompleteNexusOperationResponse + (*CompleteNexusOperationChasmResponse)(nil), // 145: temporal.server.api.historyservice.v1.CompleteNexusOperationChasmResponse + (*InvokeStateMachineMethodResponse)(nil), // 146: temporal.server.api.historyservice.v1.InvokeStateMachineMethodResponse + (*DeepHealthCheckResponse)(nil), // 147: temporal.server.api.historyservice.v1.DeepHealthCheckResponse + (*SyncWorkflowStateResponse)(nil), // 148: temporal.server.api.historyservice.v1.SyncWorkflowStateResponse + (*UpdateActivityOptionsResponse)(nil), // 149: temporal.server.api.historyservice.v1.UpdateActivityOptionsResponse + (*PauseActivityResponse)(nil), // 150: temporal.server.api.historyservice.v1.PauseActivityResponse + (*UnpauseActivityResponse)(nil), // 151: temporal.server.api.historyservice.v1.UnpauseActivityResponse + (*ResetActivityResponse)(nil), // 152: temporal.server.api.historyservice.v1.ResetActivityResponse + (*PauseWorkflowExecutionResponse)(nil), // 153: temporal.server.api.historyservice.v1.PauseWorkflowExecutionResponse + (*UnpauseWorkflowExecutionResponse)(nil), // 154: temporal.server.api.historyservice.v1.UnpauseWorkflowExecutionResponse + (*StartNexusOperationResponse)(nil), // 155: temporal.server.api.historyservice.v1.StartNexusOperationResponse + (*CancelNexusOperationResponse)(nil), // 156: temporal.server.api.historyservice.v1.CancelNexusOperationResponse + (*PollWorkflowExecutionTimeSkippingResponse)(nil), // 157: temporal.server.api.historyservice.v1.PollWorkflowExecutionTimeSkippingResponse } var file_temporal_server_api_historyservice_v1_service_proto_depIdxs = []int32{ 0, // 0: temporal.server.api.historyservice.v1.HistoryService.StartWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.StartWorkflowExecutionRequest 1, // 1: temporal.server.api.historyservice.v1.HistoryService.GetMutableState:input_type -> temporal.server.api.historyservice.v1.GetMutableStateRequest 2, // 2: temporal.server.api.historyservice.v1.HistoryService.PollMutableState:input_type -> temporal.server.api.historyservice.v1.PollMutableStateRequest - 3, // 3: temporal.server.api.historyservice.v1.HistoryService.ResetStickyTaskQueue:input_type -> temporal.server.api.historyservice.v1.ResetStickyTaskQueueRequest - 4, // 4: temporal.server.api.historyservice.v1.HistoryService.RecordWorkflowTaskStarted:input_type -> temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest - 5, // 5: temporal.server.api.historyservice.v1.HistoryService.RecordActivityTaskStarted:input_type -> temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest - 6, // 6: temporal.server.api.historyservice.v1.HistoryService.RespondWorkflowTaskCompleted:input_type -> temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedRequest - 7, // 7: temporal.server.api.historyservice.v1.HistoryService.RespondWorkflowTaskFailed:input_type -> temporal.server.api.historyservice.v1.RespondWorkflowTaskFailedRequest - 8, // 8: temporal.server.api.historyservice.v1.HistoryService.IsWorkflowTaskValid:input_type -> temporal.server.api.historyservice.v1.IsWorkflowTaskValidRequest - 9, // 9: temporal.server.api.historyservice.v1.HistoryService.RecordActivityTaskHeartbeat:input_type -> temporal.server.api.historyservice.v1.RecordActivityTaskHeartbeatRequest - 10, // 10: temporal.server.api.historyservice.v1.HistoryService.RespondActivityTaskCompleted:input_type -> temporal.server.api.historyservice.v1.RespondActivityTaskCompletedRequest - 11, // 11: temporal.server.api.historyservice.v1.HistoryService.RespondActivityTaskFailed:input_type -> temporal.server.api.historyservice.v1.RespondActivityTaskFailedRequest - 12, // 12: temporal.server.api.historyservice.v1.HistoryService.RespondActivityTaskCanceled:input_type -> temporal.server.api.historyservice.v1.RespondActivityTaskCanceledRequest - 13, // 13: temporal.server.api.historyservice.v1.HistoryService.IsActivityTaskValid:input_type -> temporal.server.api.historyservice.v1.IsActivityTaskValidRequest - 14, // 14: temporal.server.api.historyservice.v1.HistoryService.SignalWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.SignalWorkflowExecutionRequest - 15, // 15: temporal.server.api.historyservice.v1.HistoryService.SignalWithStartWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.SignalWithStartWorkflowExecutionRequest - 16, // 16: temporal.server.api.historyservice.v1.HistoryService.ExecuteMultiOperation:input_type -> temporal.server.api.historyservice.v1.ExecuteMultiOperationRequest - 17, // 17: temporal.server.api.historyservice.v1.HistoryService.RemoveSignalMutableState:input_type -> temporal.server.api.historyservice.v1.RemoveSignalMutableStateRequest - 18, // 18: temporal.server.api.historyservice.v1.HistoryService.TerminateWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.TerminateWorkflowExecutionRequest - 19, // 19: temporal.server.api.historyservice.v1.HistoryService.DeleteWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.DeleteWorkflowExecutionRequest - 20, // 20: temporal.server.api.historyservice.v1.HistoryService.ResetWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.ResetWorkflowExecutionRequest - 21, // 21: temporal.server.api.historyservice.v1.HistoryService.UpdateWorkflowExecutionOptions:input_type -> temporal.server.api.historyservice.v1.UpdateWorkflowExecutionOptionsRequest - 22, // 22: temporal.server.api.historyservice.v1.HistoryService.RequestCancelWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.RequestCancelWorkflowExecutionRequest - 23, // 23: temporal.server.api.historyservice.v1.HistoryService.ScheduleWorkflowTask:input_type -> temporal.server.api.historyservice.v1.ScheduleWorkflowTaskRequest - 24, // 24: temporal.server.api.historyservice.v1.HistoryService.VerifyFirstWorkflowTaskScheduled:input_type -> temporal.server.api.historyservice.v1.VerifyFirstWorkflowTaskScheduledRequest - 25, // 25: temporal.server.api.historyservice.v1.HistoryService.RecordChildExecutionCompleted:input_type -> temporal.server.api.historyservice.v1.RecordChildExecutionCompletedRequest - 26, // 26: temporal.server.api.historyservice.v1.HistoryService.VerifyChildExecutionCompletionRecorded:input_type -> temporal.server.api.historyservice.v1.VerifyChildExecutionCompletionRecordedRequest - 27, // 27: temporal.server.api.historyservice.v1.HistoryService.DescribeWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.DescribeWorkflowExecutionRequest - 28, // 28: temporal.server.api.historyservice.v1.HistoryService.ReplicateEventsV2:input_type -> temporal.server.api.historyservice.v1.ReplicateEventsV2Request - 29, // 29: temporal.server.api.historyservice.v1.HistoryService.ReplicateWorkflowState:input_type -> temporal.server.api.historyservice.v1.ReplicateWorkflowStateRequest - 30, // 30: temporal.server.api.historyservice.v1.HistoryService.SyncShardStatus:input_type -> temporal.server.api.historyservice.v1.SyncShardStatusRequest - 31, // 31: temporal.server.api.historyservice.v1.HistoryService.SyncActivity:input_type -> temporal.server.api.historyservice.v1.SyncActivityRequest - 32, // 32: temporal.server.api.historyservice.v1.HistoryService.DescribeMutableState:input_type -> temporal.server.api.historyservice.v1.DescribeMutableStateRequest - 33, // 33: temporal.server.api.historyservice.v1.HistoryService.DescribeHistoryHost:input_type -> temporal.server.api.historyservice.v1.DescribeHistoryHostRequest - 34, // 34: temporal.server.api.historyservice.v1.HistoryService.CloseShard:input_type -> temporal.server.api.historyservice.v1.CloseShardRequest - 35, // 35: temporal.server.api.historyservice.v1.HistoryService.GetShard:input_type -> temporal.server.api.historyservice.v1.GetShardRequest - 36, // 36: temporal.server.api.historyservice.v1.HistoryService.RemoveTask:input_type -> temporal.server.api.historyservice.v1.RemoveTaskRequest - 37, // 37: temporal.server.api.historyservice.v1.HistoryService.GetReplicationMessages:input_type -> temporal.server.api.historyservice.v1.GetReplicationMessagesRequest - 38, // 38: temporal.server.api.historyservice.v1.HistoryService.GetDLQReplicationMessages:input_type -> temporal.server.api.historyservice.v1.GetDLQReplicationMessagesRequest - 39, // 39: temporal.server.api.historyservice.v1.HistoryService.QueryWorkflow:input_type -> temporal.server.api.historyservice.v1.QueryWorkflowRequest - 40, // 40: temporal.server.api.historyservice.v1.HistoryService.ReapplyEvents:input_type -> temporal.server.api.historyservice.v1.ReapplyEventsRequest - 41, // 41: temporal.server.api.historyservice.v1.HistoryService.GetDLQMessages:input_type -> temporal.server.api.historyservice.v1.GetDLQMessagesRequest - 42, // 42: temporal.server.api.historyservice.v1.HistoryService.PurgeDLQMessages:input_type -> temporal.server.api.historyservice.v1.PurgeDLQMessagesRequest - 43, // 43: temporal.server.api.historyservice.v1.HistoryService.MergeDLQMessages:input_type -> temporal.server.api.historyservice.v1.MergeDLQMessagesRequest - 44, // 44: temporal.server.api.historyservice.v1.HistoryService.RefreshWorkflowTasks:input_type -> temporal.server.api.historyservice.v1.RefreshWorkflowTasksRequest - 45, // 45: temporal.server.api.historyservice.v1.HistoryService.GenerateLastHistoryReplicationTasks:input_type -> temporal.server.api.historyservice.v1.GenerateLastHistoryReplicationTasksRequest - 46, // 46: temporal.server.api.historyservice.v1.HistoryService.GetReplicationStatus:input_type -> temporal.server.api.historyservice.v1.GetReplicationStatusRequest - 47, // 47: temporal.server.api.historyservice.v1.HistoryService.RebuildMutableState:input_type -> temporal.server.api.historyservice.v1.RebuildMutableStateRequest - 48, // 48: temporal.server.api.historyservice.v1.HistoryService.ImportWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.ImportWorkflowExecutionRequest - 49, // 49: temporal.server.api.historyservice.v1.HistoryService.DeleteWorkflowVisibilityRecord:input_type -> temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordRequest - 50, // 50: temporal.server.api.historyservice.v1.HistoryService.UpdateWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.UpdateWorkflowExecutionRequest - 51, // 51: temporal.server.api.historyservice.v1.HistoryService.PollWorkflowExecutionUpdate:input_type -> temporal.server.api.historyservice.v1.PollWorkflowExecutionUpdateRequest - 52, // 52: temporal.server.api.historyservice.v1.HistoryService.StreamWorkflowReplicationMessages:input_type -> temporal.server.api.historyservice.v1.StreamWorkflowReplicationMessagesRequest - 53, // 53: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionHistory:input_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryRequest - 54, // 54: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionHistoryReverse:input_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryReverseRequest - 55, // 55: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionRawHistoryV2:input_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryV2Request - 56, // 56: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionRawHistory:input_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryRequest - 57, // 57: temporal.server.api.historyservice.v1.HistoryService.ForceDeleteWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.ForceDeleteWorkflowExecutionRequest - 58, // 58: temporal.server.api.historyservice.v1.HistoryService.DeleteExecution:input_type -> temporal.server.api.historyservice.v1.DeleteExecutionRequest - 59, // 59: temporal.server.api.historyservice.v1.HistoryService.GetDLQTasks:input_type -> temporal.server.api.historyservice.v1.GetDLQTasksRequest - 60, // 60: temporal.server.api.historyservice.v1.HistoryService.DeleteDLQTasks:input_type -> temporal.server.api.historyservice.v1.DeleteDLQTasksRequest - 61, // 61: temporal.server.api.historyservice.v1.HistoryService.ListQueues:input_type -> temporal.server.api.historyservice.v1.ListQueuesRequest - 62, // 62: temporal.server.api.historyservice.v1.HistoryService.AddTasks:input_type -> temporal.server.api.historyservice.v1.AddTasksRequest - 63, // 63: temporal.server.api.historyservice.v1.HistoryService.ListTasks:input_type -> temporal.server.api.historyservice.v1.ListTasksRequest - 64, // 64: temporal.server.api.historyservice.v1.HistoryService.CompleteNexusOperation:input_type -> temporal.server.api.historyservice.v1.CompleteNexusOperationRequest - 65, // 65: temporal.server.api.historyservice.v1.HistoryService.CompleteNexusOperationChasm:input_type -> temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest - 66, // 66: temporal.server.api.historyservice.v1.HistoryService.InvokeStateMachineMethod:input_type -> temporal.server.api.historyservice.v1.InvokeStateMachineMethodRequest - 67, // 67: temporal.server.api.historyservice.v1.HistoryService.DeepHealthCheck:input_type -> temporal.server.api.historyservice.v1.DeepHealthCheckRequest - 68, // 68: temporal.server.api.historyservice.v1.HistoryService.SyncWorkflowState:input_type -> temporal.server.api.historyservice.v1.SyncWorkflowStateRequest - 69, // 69: temporal.server.api.historyservice.v1.HistoryService.UpdateActivityOptions:input_type -> temporal.server.api.historyservice.v1.UpdateActivityOptionsRequest - 70, // 70: temporal.server.api.historyservice.v1.HistoryService.PauseActivity:input_type -> temporal.server.api.historyservice.v1.PauseActivityRequest - 71, // 71: temporal.server.api.historyservice.v1.HistoryService.UnpauseActivity:input_type -> temporal.server.api.historyservice.v1.UnpauseActivityRequest - 72, // 72: temporal.server.api.historyservice.v1.HistoryService.ResetActivity:input_type -> temporal.server.api.historyservice.v1.ResetActivityRequest - 73, // 73: temporal.server.api.historyservice.v1.HistoryService.PauseWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.PauseWorkflowExecutionRequest - 74, // 74: temporal.server.api.historyservice.v1.HistoryService.UnpauseWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.UnpauseWorkflowExecutionRequest - 75, // 75: temporal.server.api.historyservice.v1.HistoryService.StartNexusOperation:input_type -> temporal.server.api.historyservice.v1.StartNexusOperationRequest - 76, // 76: temporal.server.api.historyservice.v1.HistoryService.CancelNexusOperation:input_type -> temporal.server.api.historyservice.v1.CancelNexusOperationRequest - 77, // 77: temporal.server.api.historyservice.v1.HistoryService.PollWorkflowExecutionTimeSkipping:input_type -> temporal.server.api.historyservice.v1.PollWorkflowExecutionTimeSkippingRequest - 78, // 78: temporal.server.api.historyservice.v1.HistoryService.StartWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.StartWorkflowExecutionResponse - 79, // 79: temporal.server.api.historyservice.v1.HistoryService.GetMutableState:output_type -> temporal.server.api.historyservice.v1.GetMutableStateResponse - 80, // 80: temporal.server.api.historyservice.v1.HistoryService.PollMutableState:output_type -> temporal.server.api.historyservice.v1.PollMutableStateResponse - 81, // 81: temporal.server.api.historyservice.v1.HistoryService.ResetStickyTaskQueue:output_type -> temporal.server.api.historyservice.v1.ResetStickyTaskQueueResponse - 82, // 82: temporal.server.api.historyservice.v1.HistoryService.RecordWorkflowTaskStarted:output_type -> temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse - 83, // 83: temporal.server.api.historyservice.v1.HistoryService.RecordActivityTaskStarted:output_type -> temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse - 84, // 84: temporal.server.api.historyservice.v1.HistoryService.RespondWorkflowTaskCompleted:output_type -> temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedResponse - 85, // 85: temporal.server.api.historyservice.v1.HistoryService.RespondWorkflowTaskFailed:output_type -> temporal.server.api.historyservice.v1.RespondWorkflowTaskFailedResponse - 86, // 86: temporal.server.api.historyservice.v1.HistoryService.IsWorkflowTaskValid:output_type -> temporal.server.api.historyservice.v1.IsWorkflowTaskValidResponse - 87, // 87: temporal.server.api.historyservice.v1.HistoryService.RecordActivityTaskHeartbeat:output_type -> temporal.server.api.historyservice.v1.RecordActivityTaskHeartbeatResponse - 88, // 88: temporal.server.api.historyservice.v1.HistoryService.RespondActivityTaskCompleted:output_type -> temporal.server.api.historyservice.v1.RespondActivityTaskCompletedResponse - 89, // 89: temporal.server.api.historyservice.v1.HistoryService.RespondActivityTaskFailed:output_type -> temporal.server.api.historyservice.v1.RespondActivityTaskFailedResponse - 90, // 90: temporal.server.api.historyservice.v1.HistoryService.RespondActivityTaskCanceled:output_type -> temporal.server.api.historyservice.v1.RespondActivityTaskCanceledResponse - 91, // 91: temporal.server.api.historyservice.v1.HistoryService.IsActivityTaskValid:output_type -> temporal.server.api.historyservice.v1.IsActivityTaskValidResponse - 92, // 92: temporal.server.api.historyservice.v1.HistoryService.SignalWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.SignalWorkflowExecutionResponse - 93, // 93: temporal.server.api.historyservice.v1.HistoryService.SignalWithStartWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.SignalWithStartWorkflowExecutionResponse - 94, // 94: temporal.server.api.historyservice.v1.HistoryService.ExecuteMultiOperation:output_type -> temporal.server.api.historyservice.v1.ExecuteMultiOperationResponse - 95, // 95: temporal.server.api.historyservice.v1.HistoryService.RemoveSignalMutableState:output_type -> temporal.server.api.historyservice.v1.RemoveSignalMutableStateResponse - 96, // 96: temporal.server.api.historyservice.v1.HistoryService.TerminateWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.TerminateWorkflowExecutionResponse - 97, // 97: temporal.server.api.historyservice.v1.HistoryService.DeleteWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.DeleteWorkflowExecutionResponse - 98, // 98: temporal.server.api.historyservice.v1.HistoryService.ResetWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.ResetWorkflowExecutionResponse - 99, // 99: temporal.server.api.historyservice.v1.HistoryService.UpdateWorkflowExecutionOptions:output_type -> temporal.server.api.historyservice.v1.UpdateWorkflowExecutionOptionsResponse - 100, // 100: temporal.server.api.historyservice.v1.HistoryService.RequestCancelWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.RequestCancelWorkflowExecutionResponse - 101, // 101: temporal.server.api.historyservice.v1.HistoryService.ScheduleWorkflowTask:output_type -> temporal.server.api.historyservice.v1.ScheduleWorkflowTaskResponse - 102, // 102: temporal.server.api.historyservice.v1.HistoryService.VerifyFirstWorkflowTaskScheduled:output_type -> temporal.server.api.historyservice.v1.VerifyFirstWorkflowTaskScheduledResponse - 103, // 103: temporal.server.api.historyservice.v1.HistoryService.RecordChildExecutionCompleted:output_type -> temporal.server.api.historyservice.v1.RecordChildExecutionCompletedResponse - 104, // 104: temporal.server.api.historyservice.v1.HistoryService.VerifyChildExecutionCompletionRecorded:output_type -> temporal.server.api.historyservice.v1.VerifyChildExecutionCompletionRecordedResponse - 105, // 105: temporal.server.api.historyservice.v1.HistoryService.DescribeWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse - 106, // 106: temporal.server.api.historyservice.v1.HistoryService.ReplicateEventsV2:output_type -> temporal.server.api.historyservice.v1.ReplicateEventsV2Response - 107, // 107: temporal.server.api.historyservice.v1.HistoryService.ReplicateWorkflowState:output_type -> temporal.server.api.historyservice.v1.ReplicateWorkflowStateResponse - 108, // 108: temporal.server.api.historyservice.v1.HistoryService.SyncShardStatus:output_type -> temporal.server.api.historyservice.v1.SyncShardStatusResponse - 109, // 109: temporal.server.api.historyservice.v1.HistoryService.SyncActivity:output_type -> temporal.server.api.historyservice.v1.SyncActivityResponse - 110, // 110: temporal.server.api.historyservice.v1.HistoryService.DescribeMutableState:output_type -> temporal.server.api.historyservice.v1.DescribeMutableStateResponse - 111, // 111: temporal.server.api.historyservice.v1.HistoryService.DescribeHistoryHost:output_type -> temporal.server.api.historyservice.v1.DescribeHistoryHostResponse - 112, // 112: temporal.server.api.historyservice.v1.HistoryService.CloseShard:output_type -> temporal.server.api.historyservice.v1.CloseShardResponse - 113, // 113: temporal.server.api.historyservice.v1.HistoryService.GetShard:output_type -> temporal.server.api.historyservice.v1.GetShardResponse - 114, // 114: temporal.server.api.historyservice.v1.HistoryService.RemoveTask:output_type -> temporal.server.api.historyservice.v1.RemoveTaskResponse - 115, // 115: temporal.server.api.historyservice.v1.HistoryService.GetReplicationMessages:output_type -> temporal.server.api.historyservice.v1.GetReplicationMessagesResponse - 116, // 116: temporal.server.api.historyservice.v1.HistoryService.GetDLQReplicationMessages:output_type -> temporal.server.api.historyservice.v1.GetDLQReplicationMessagesResponse - 117, // 117: temporal.server.api.historyservice.v1.HistoryService.QueryWorkflow:output_type -> temporal.server.api.historyservice.v1.QueryWorkflowResponse - 118, // 118: temporal.server.api.historyservice.v1.HistoryService.ReapplyEvents:output_type -> temporal.server.api.historyservice.v1.ReapplyEventsResponse - 119, // 119: temporal.server.api.historyservice.v1.HistoryService.GetDLQMessages:output_type -> temporal.server.api.historyservice.v1.GetDLQMessagesResponse - 120, // 120: temporal.server.api.historyservice.v1.HistoryService.PurgeDLQMessages:output_type -> temporal.server.api.historyservice.v1.PurgeDLQMessagesResponse - 121, // 121: temporal.server.api.historyservice.v1.HistoryService.MergeDLQMessages:output_type -> temporal.server.api.historyservice.v1.MergeDLQMessagesResponse - 122, // 122: temporal.server.api.historyservice.v1.HistoryService.RefreshWorkflowTasks:output_type -> temporal.server.api.historyservice.v1.RefreshWorkflowTasksResponse - 123, // 123: temporal.server.api.historyservice.v1.HistoryService.GenerateLastHistoryReplicationTasks:output_type -> temporal.server.api.historyservice.v1.GenerateLastHistoryReplicationTasksResponse - 124, // 124: temporal.server.api.historyservice.v1.HistoryService.GetReplicationStatus:output_type -> temporal.server.api.historyservice.v1.GetReplicationStatusResponse - 125, // 125: temporal.server.api.historyservice.v1.HistoryService.RebuildMutableState:output_type -> temporal.server.api.historyservice.v1.RebuildMutableStateResponse - 126, // 126: temporal.server.api.historyservice.v1.HistoryService.ImportWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.ImportWorkflowExecutionResponse - 127, // 127: temporal.server.api.historyservice.v1.HistoryService.DeleteWorkflowVisibilityRecord:output_type -> temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordResponse - 128, // 128: temporal.server.api.historyservice.v1.HistoryService.UpdateWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.UpdateWorkflowExecutionResponse - 129, // 129: temporal.server.api.historyservice.v1.HistoryService.PollWorkflowExecutionUpdate:output_type -> temporal.server.api.historyservice.v1.PollWorkflowExecutionUpdateResponse - 130, // 130: temporal.server.api.historyservice.v1.HistoryService.StreamWorkflowReplicationMessages:output_type -> temporal.server.api.historyservice.v1.StreamWorkflowReplicationMessagesResponse - 131, // 131: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionHistory:output_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryResponse - 132, // 132: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionHistoryReverse:output_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryReverseResponse - 133, // 133: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionRawHistoryV2:output_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryV2Response - 134, // 134: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionRawHistory:output_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryResponse - 135, // 135: temporal.server.api.historyservice.v1.HistoryService.ForceDeleteWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.ForceDeleteWorkflowExecutionResponse - 136, // 136: temporal.server.api.historyservice.v1.HistoryService.DeleteExecution:output_type -> temporal.server.api.historyservice.v1.DeleteExecutionResponse - 137, // 137: temporal.server.api.historyservice.v1.HistoryService.GetDLQTasks:output_type -> temporal.server.api.historyservice.v1.GetDLQTasksResponse - 138, // 138: temporal.server.api.historyservice.v1.HistoryService.DeleteDLQTasks:output_type -> temporal.server.api.historyservice.v1.DeleteDLQTasksResponse - 139, // 139: temporal.server.api.historyservice.v1.HistoryService.ListQueues:output_type -> temporal.server.api.historyservice.v1.ListQueuesResponse - 140, // 140: temporal.server.api.historyservice.v1.HistoryService.AddTasks:output_type -> temporal.server.api.historyservice.v1.AddTasksResponse - 141, // 141: temporal.server.api.historyservice.v1.HistoryService.ListTasks:output_type -> temporal.server.api.historyservice.v1.ListTasksResponse - 142, // 142: temporal.server.api.historyservice.v1.HistoryService.CompleteNexusOperation:output_type -> temporal.server.api.historyservice.v1.CompleteNexusOperationResponse - 143, // 143: temporal.server.api.historyservice.v1.HistoryService.CompleteNexusOperationChasm:output_type -> temporal.server.api.historyservice.v1.CompleteNexusOperationChasmResponse - 144, // 144: temporal.server.api.historyservice.v1.HistoryService.InvokeStateMachineMethod:output_type -> temporal.server.api.historyservice.v1.InvokeStateMachineMethodResponse - 145, // 145: temporal.server.api.historyservice.v1.HistoryService.DeepHealthCheck:output_type -> temporal.server.api.historyservice.v1.DeepHealthCheckResponse - 146, // 146: temporal.server.api.historyservice.v1.HistoryService.SyncWorkflowState:output_type -> temporal.server.api.historyservice.v1.SyncWorkflowStateResponse - 147, // 147: temporal.server.api.historyservice.v1.HistoryService.UpdateActivityOptions:output_type -> temporal.server.api.historyservice.v1.UpdateActivityOptionsResponse - 148, // 148: temporal.server.api.historyservice.v1.HistoryService.PauseActivity:output_type -> temporal.server.api.historyservice.v1.PauseActivityResponse - 149, // 149: temporal.server.api.historyservice.v1.HistoryService.UnpauseActivity:output_type -> temporal.server.api.historyservice.v1.UnpauseActivityResponse - 150, // 150: temporal.server.api.historyservice.v1.HistoryService.ResetActivity:output_type -> temporal.server.api.historyservice.v1.ResetActivityResponse - 151, // 151: temporal.server.api.historyservice.v1.HistoryService.PauseWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.PauseWorkflowExecutionResponse - 152, // 152: temporal.server.api.historyservice.v1.HistoryService.UnpauseWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.UnpauseWorkflowExecutionResponse - 153, // 153: temporal.server.api.historyservice.v1.HistoryService.StartNexusOperation:output_type -> temporal.server.api.historyservice.v1.StartNexusOperationResponse - 154, // 154: temporal.server.api.historyservice.v1.HistoryService.CancelNexusOperation:output_type -> temporal.server.api.historyservice.v1.CancelNexusOperationResponse - 155, // 155: temporal.server.api.historyservice.v1.HistoryService.PollWorkflowExecutionTimeSkipping:output_type -> temporal.server.api.historyservice.v1.PollWorkflowExecutionTimeSkippingResponse - 78, // [78:156] is the sub-list for method output_type - 0, // [0:78] is the sub-list for method input_type + 3, // 3: temporal.server.api.historyservice.v1.HistoryService.GetStreamReplaySlices:input_type -> temporal.server.api.historyservice.v1.GetStreamReplaySlicesRequest + 4, // 4: temporal.server.api.historyservice.v1.HistoryService.ResetStickyTaskQueue:input_type -> temporal.server.api.historyservice.v1.ResetStickyTaskQueueRequest + 5, // 5: temporal.server.api.historyservice.v1.HistoryService.RecordWorkflowTaskStarted:input_type -> temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedRequest + 6, // 6: temporal.server.api.historyservice.v1.HistoryService.RecordActivityTaskStarted:input_type -> temporal.server.api.historyservice.v1.RecordActivityTaskStartedRequest + 7, // 7: temporal.server.api.historyservice.v1.HistoryService.RespondWorkflowTaskCompleted:input_type -> temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedRequest + 8, // 8: temporal.server.api.historyservice.v1.HistoryService.RespondWorkflowTaskFailed:input_type -> temporal.server.api.historyservice.v1.RespondWorkflowTaskFailedRequest + 9, // 9: temporal.server.api.historyservice.v1.HistoryService.IsWorkflowTaskValid:input_type -> temporal.server.api.historyservice.v1.IsWorkflowTaskValidRequest + 10, // 10: temporal.server.api.historyservice.v1.HistoryService.RecordActivityTaskHeartbeat:input_type -> temporal.server.api.historyservice.v1.RecordActivityTaskHeartbeatRequest + 11, // 11: temporal.server.api.historyservice.v1.HistoryService.RespondActivityTaskCompleted:input_type -> temporal.server.api.historyservice.v1.RespondActivityTaskCompletedRequest + 12, // 12: temporal.server.api.historyservice.v1.HistoryService.RespondActivityTaskFailed:input_type -> temporal.server.api.historyservice.v1.RespondActivityTaskFailedRequest + 13, // 13: temporal.server.api.historyservice.v1.HistoryService.RespondActivityTaskCanceled:input_type -> temporal.server.api.historyservice.v1.RespondActivityTaskCanceledRequest + 14, // 14: temporal.server.api.historyservice.v1.HistoryService.IsActivityTaskValid:input_type -> temporal.server.api.historyservice.v1.IsActivityTaskValidRequest + 15, // 15: temporal.server.api.historyservice.v1.HistoryService.SignalWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.SignalWorkflowExecutionRequest + 16, // 16: temporal.server.api.historyservice.v1.HistoryService.SignalWithStartWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.SignalWithStartWorkflowExecutionRequest + 17, // 17: temporal.server.api.historyservice.v1.HistoryService.ExecuteMultiOperation:input_type -> temporal.server.api.historyservice.v1.ExecuteMultiOperationRequest + 18, // 18: temporal.server.api.historyservice.v1.HistoryService.RemoveSignalMutableState:input_type -> temporal.server.api.historyservice.v1.RemoveSignalMutableStateRequest + 19, // 19: temporal.server.api.historyservice.v1.HistoryService.TerminateWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.TerminateWorkflowExecutionRequest + 20, // 20: temporal.server.api.historyservice.v1.HistoryService.DeleteWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.DeleteWorkflowExecutionRequest + 21, // 21: temporal.server.api.historyservice.v1.HistoryService.ResetWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.ResetWorkflowExecutionRequest + 22, // 22: temporal.server.api.historyservice.v1.HistoryService.UpdateWorkflowExecutionOptions:input_type -> temporal.server.api.historyservice.v1.UpdateWorkflowExecutionOptionsRequest + 23, // 23: temporal.server.api.historyservice.v1.HistoryService.RequestCancelWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.RequestCancelWorkflowExecutionRequest + 24, // 24: temporal.server.api.historyservice.v1.HistoryService.ScheduleWorkflowTask:input_type -> temporal.server.api.historyservice.v1.ScheduleWorkflowTaskRequest + 25, // 25: temporal.server.api.historyservice.v1.HistoryService.VerifyFirstWorkflowTaskScheduled:input_type -> temporal.server.api.historyservice.v1.VerifyFirstWorkflowTaskScheduledRequest + 26, // 26: temporal.server.api.historyservice.v1.HistoryService.RecordChildExecutionCompleted:input_type -> temporal.server.api.historyservice.v1.RecordChildExecutionCompletedRequest + 27, // 27: temporal.server.api.historyservice.v1.HistoryService.VerifyChildExecutionCompletionRecorded:input_type -> temporal.server.api.historyservice.v1.VerifyChildExecutionCompletionRecordedRequest + 28, // 28: temporal.server.api.historyservice.v1.HistoryService.DescribeWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.DescribeWorkflowExecutionRequest + 29, // 29: temporal.server.api.historyservice.v1.HistoryService.ReplicateEventsV2:input_type -> temporal.server.api.historyservice.v1.ReplicateEventsV2Request + 30, // 30: temporal.server.api.historyservice.v1.HistoryService.ReplicateWorkflowState:input_type -> temporal.server.api.historyservice.v1.ReplicateWorkflowStateRequest + 31, // 31: temporal.server.api.historyservice.v1.HistoryService.SyncShardStatus:input_type -> temporal.server.api.historyservice.v1.SyncShardStatusRequest + 32, // 32: temporal.server.api.historyservice.v1.HistoryService.SyncActivity:input_type -> temporal.server.api.historyservice.v1.SyncActivityRequest + 33, // 33: temporal.server.api.historyservice.v1.HistoryService.DescribeMutableState:input_type -> temporal.server.api.historyservice.v1.DescribeMutableStateRequest + 34, // 34: temporal.server.api.historyservice.v1.HistoryService.DescribeHistoryHost:input_type -> temporal.server.api.historyservice.v1.DescribeHistoryHostRequest + 35, // 35: temporal.server.api.historyservice.v1.HistoryService.CloseShard:input_type -> temporal.server.api.historyservice.v1.CloseShardRequest + 36, // 36: temporal.server.api.historyservice.v1.HistoryService.GetShard:input_type -> temporal.server.api.historyservice.v1.GetShardRequest + 37, // 37: temporal.server.api.historyservice.v1.HistoryService.RemoveTask:input_type -> temporal.server.api.historyservice.v1.RemoveTaskRequest + 38, // 38: temporal.server.api.historyservice.v1.HistoryService.GetReplicationMessages:input_type -> temporal.server.api.historyservice.v1.GetReplicationMessagesRequest + 39, // 39: temporal.server.api.historyservice.v1.HistoryService.GetDLQReplicationMessages:input_type -> temporal.server.api.historyservice.v1.GetDLQReplicationMessagesRequest + 40, // 40: temporal.server.api.historyservice.v1.HistoryService.QueryWorkflow:input_type -> temporal.server.api.historyservice.v1.QueryWorkflowRequest + 41, // 41: temporal.server.api.historyservice.v1.HistoryService.ReapplyEvents:input_type -> temporal.server.api.historyservice.v1.ReapplyEventsRequest + 42, // 42: temporal.server.api.historyservice.v1.HistoryService.GetDLQMessages:input_type -> temporal.server.api.historyservice.v1.GetDLQMessagesRequest + 43, // 43: temporal.server.api.historyservice.v1.HistoryService.PurgeDLQMessages:input_type -> temporal.server.api.historyservice.v1.PurgeDLQMessagesRequest + 44, // 44: temporal.server.api.historyservice.v1.HistoryService.MergeDLQMessages:input_type -> temporal.server.api.historyservice.v1.MergeDLQMessagesRequest + 45, // 45: temporal.server.api.historyservice.v1.HistoryService.RefreshWorkflowTasks:input_type -> temporal.server.api.historyservice.v1.RefreshWorkflowTasksRequest + 46, // 46: temporal.server.api.historyservice.v1.HistoryService.GenerateLastHistoryReplicationTasks:input_type -> temporal.server.api.historyservice.v1.GenerateLastHistoryReplicationTasksRequest + 47, // 47: temporal.server.api.historyservice.v1.HistoryService.GetReplicationStatus:input_type -> temporal.server.api.historyservice.v1.GetReplicationStatusRequest + 48, // 48: temporal.server.api.historyservice.v1.HistoryService.RebuildMutableState:input_type -> temporal.server.api.historyservice.v1.RebuildMutableStateRequest + 49, // 49: temporal.server.api.historyservice.v1.HistoryService.ImportWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.ImportWorkflowExecutionRequest + 50, // 50: temporal.server.api.historyservice.v1.HistoryService.DeleteWorkflowVisibilityRecord:input_type -> temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordRequest + 51, // 51: temporal.server.api.historyservice.v1.HistoryService.UpdateWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.UpdateWorkflowExecutionRequest + 52, // 52: temporal.server.api.historyservice.v1.HistoryService.PollWorkflowExecutionUpdate:input_type -> temporal.server.api.historyservice.v1.PollWorkflowExecutionUpdateRequest + 53, // 53: temporal.server.api.historyservice.v1.HistoryService.StreamWorkflowReplicationMessages:input_type -> temporal.server.api.historyservice.v1.StreamWorkflowReplicationMessagesRequest + 54, // 54: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionHistory:input_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryRequest + 55, // 55: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionHistoryReverse:input_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryReverseRequest + 56, // 56: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionRawHistoryV2:input_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryV2Request + 57, // 57: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionRawHistory:input_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryRequest + 58, // 58: temporal.server.api.historyservice.v1.HistoryService.ForceDeleteWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.ForceDeleteWorkflowExecutionRequest + 59, // 59: temporal.server.api.historyservice.v1.HistoryService.DeleteExecution:input_type -> temporal.server.api.historyservice.v1.DeleteExecutionRequest + 60, // 60: temporal.server.api.historyservice.v1.HistoryService.GetDLQTasks:input_type -> temporal.server.api.historyservice.v1.GetDLQTasksRequest + 61, // 61: temporal.server.api.historyservice.v1.HistoryService.DeleteDLQTasks:input_type -> temporal.server.api.historyservice.v1.DeleteDLQTasksRequest + 62, // 62: temporal.server.api.historyservice.v1.HistoryService.ListQueues:input_type -> temporal.server.api.historyservice.v1.ListQueuesRequest + 63, // 63: temporal.server.api.historyservice.v1.HistoryService.AddTasks:input_type -> temporal.server.api.historyservice.v1.AddTasksRequest + 64, // 64: temporal.server.api.historyservice.v1.HistoryService.ListTasks:input_type -> temporal.server.api.historyservice.v1.ListTasksRequest + 65, // 65: temporal.server.api.historyservice.v1.HistoryService.CompleteNexusOperation:input_type -> temporal.server.api.historyservice.v1.CompleteNexusOperationRequest + 66, // 66: temporal.server.api.historyservice.v1.HistoryService.CompleteNexusOperationChasm:input_type -> temporal.server.api.historyservice.v1.CompleteNexusOperationChasmRequest + 67, // 67: temporal.server.api.historyservice.v1.HistoryService.InvokeStateMachineMethod:input_type -> temporal.server.api.historyservice.v1.InvokeStateMachineMethodRequest + 68, // 68: temporal.server.api.historyservice.v1.HistoryService.DeepHealthCheck:input_type -> temporal.server.api.historyservice.v1.DeepHealthCheckRequest + 69, // 69: temporal.server.api.historyservice.v1.HistoryService.SyncWorkflowState:input_type -> temporal.server.api.historyservice.v1.SyncWorkflowStateRequest + 70, // 70: temporal.server.api.historyservice.v1.HistoryService.UpdateActivityOptions:input_type -> temporal.server.api.historyservice.v1.UpdateActivityOptionsRequest + 71, // 71: temporal.server.api.historyservice.v1.HistoryService.PauseActivity:input_type -> temporal.server.api.historyservice.v1.PauseActivityRequest + 72, // 72: temporal.server.api.historyservice.v1.HistoryService.UnpauseActivity:input_type -> temporal.server.api.historyservice.v1.UnpauseActivityRequest + 73, // 73: temporal.server.api.historyservice.v1.HistoryService.ResetActivity:input_type -> temporal.server.api.historyservice.v1.ResetActivityRequest + 74, // 74: temporal.server.api.historyservice.v1.HistoryService.PauseWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.PauseWorkflowExecutionRequest + 75, // 75: temporal.server.api.historyservice.v1.HistoryService.UnpauseWorkflowExecution:input_type -> temporal.server.api.historyservice.v1.UnpauseWorkflowExecutionRequest + 76, // 76: temporal.server.api.historyservice.v1.HistoryService.StartNexusOperation:input_type -> temporal.server.api.historyservice.v1.StartNexusOperationRequest + 77, // 77: temporal.server.api.historyservice.v1.HistoryService.CancelNexusOperation:input_type -> temporal.server.api.historyservice.v1.CancelNexusOperationRequest + 78, // 78: temporal.server.api.historyservice.v1.HistoryService.PollWorkflowExecutionTimeSkipping:input_type -> temporal.server.api.historyservice.v1.PollWorkflowExecutionTimeSkippingRequest + 79, // 79: temporal.server.api.historyservice.v1.HistoryService.StartWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.StartWorkflowExecutionResponse + 80, // 80: temporal.server.api.historyservice.v1.HistoryService.GetMutableState:output_type -> temporal.server.api.historyservice.v1.GetMutableStateResponse + 81, // 81: temporal.server.api.historyservice.v1.HistoryService.PollMutableState:output_type -> temporal.server.api.historyservice.v1.PollMutableStateResponse + 82, // 82: temporal.server.api.historyservice.v1.HistoryService.GetStreamReplaySlices:output_type -> temporal.server.api.historyservice.v1.GetStreamReplaySlicesResponse + 83, // 83: temporal.server.api.historyservice.v1.HistoryService.ResetStickyTaskQueue:output_type -> temporal.server.api.historyservice.v1.ResetStickyTaskQueueResponse + 84, // 84: temporal.server.api.historyservice.v1.HistoryService.RecordWorkflowTaskStarted:output_type -> temporal.server.api.historyservice.v1.RecordWorkflowTaskStartedResponse + 85, // 85: temporal.server.api.historyservice.v1.HistoryService.RecordActivityTaskStarted:output_type -> temporal.server.api.historyservice.v1.RecordActivityTaskStartedResponse + 86, // 86: temporal.server.api.historyservice.v1.HistoryService.RespondWorkflowTaskCompleted:output_type -> temporal.server.api.historyservice.v1.RespondWorkflowTaskCompletedResponse + 87, // 87: temporal.server.api.historyservice.v1.HistoryService.RespondWorkflowTaskFailed:output_type -> temporal.server.api.historyservice.v1.RespondWorkflowTaskFailedResponse + 88, // 88: temporal.server.api.historyservice.v1.HistoryService.IsWorkflowTaskValid:output_type -> temporal.server.api.historyservice.v1.IsWorkflowTaskValidResponse + 89, // 89: temporal.server.api.historyservice.v1.HistoryService.RecordActivityTaskHeartbeat:output_type -> temporal.server.api.historyservice.v1.RecordActivityTaskHeartbeatResponse + 90, // 90: temporal.server.api.historyservice.v1.HistoryService.RespondActivityTaskCompleted:output_type -> temporal.server.api.historyservice.v1.RespondActivityTaskCompletedResponse + 91, // 91: temporal.server.api.historyservice.v1.HistoryService.RespondActivityTaskFailed:output_type -> temporal.server.api.historyservice.v1.RespondActivityTaskFailedResponse + 92, // 92: temporal.server.api.historyservice.v1.HistoryService.RespondActivityTaskCanceled:output_type -> temporal.server.api.historyservice.v1.RespondActivityTaskCanceledResponse + 93, // 93: temporal.server.api.historyservice.v1.HistoryService.IsActivityTaskValid:output_type -> temporal.server.api.historyservice.v1.IsActivityTaskValidResponse + 94, // 94: temporal.server.api.historyservice.v1.HistoryService.SignalWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.SignalWorkflowExecutionResponse + 95, // 95: temporal.server.api.historyservice.v1.HistoryService.SignalWithStartWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.SignalWithStartWorkflowExecutionResponse + 96, // 96: temporal.server.api.historyservice.v1.HistoryService.ExecuteMultiOperation:output_type -> temporal.server.api.historyservice.v1.ExecuteMultiOperationResponse + 97, // 97: temporal.server.api.historyservice.v1.HistoryService.RemoveSignalMutableState:output_type -> temporal.server.api.historyservice.v1.RemoveSignalMutableStateResponse + 98, // 98: temporal.server.api.historyservice.v1.HistoryService.TerminateWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.TerminateWorkflowExecutionResponse + 99, // 99: temporal.server.api.historyservice.v1.HistoryService.DeleteWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.DeleteWorkflowExecutionResponse + 100, // 100: temporal.server.api.historyservice.v1.HistoryService.ResetWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.ResetWorkflowExecutionResponse + 101, // 101: temporal.server.api.historyservice.v1.HistoryService.UpdateWorkflowExecutionOptions:output_type -> temporal.server.api.historyservice.v1.UpdateWorkflowExecutionOptionsResponse + 102, // 102: temporal.server.api.historyservice.v1.HistoryService.RequestCancelWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.RequestCancelWorkflowExecutionResponse + 103, // 103: temporal.server.api.historyservice.v1.HistoryService.ScheduleWorkflowTask:output_type -> temporal.server.api.historyservice.v1.ScheduleWorkflowTaskResponse + 104, // 104: temporal.server.api.historyservice.v1.HistoryService.VerifyFirstWorkflowTaskScheduled:output_type -> temporal.server.api.historyservice.v1.VerifyFirstWorkflowTaskScheduledResponse + 105, // 105: temporal.server.api.historyservice.v1.HistoryService.RecordChildExecutionCompleted:output_type -> temporal.server.api.historyservice.v1.RecordChildExecutionCompletedResponse + 106, // 106: temporal.server.api.historyservice.v1.HistoryService.VerifyChildExecutionCompletionRecorded:output_type -> temporal.server.api.historyservice.v1.VerifyChildExecutionCompletionRecordedResponse + 107, // 107: temporal.server.api.historyservice.v1.HistoryService.DescribeWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.DescribeWorkflowExecutionResponse + 108, // 108: temporal.server.api.historyservice.v1.HistoryService.ReplicateEventsV2:output_type -> temporal.server.api.historyservice.v1.ReplicateEventsV2Response + 109, // 109: temporal.server.api.historyservice.v1.HistoryService.ReplicateWorkflowState:output_type -> temporal.server.api.historyservice.v1.ReplicateWorkflowStateResponse + 110, // 110: temporal.server.api.historyservice.v1.HistoryService.SyncShardStatus:output_type -> temporal.server.api.historyservice.v1.SyncShardStatusResponse + 111, // 111: temporal.server.api.historyservice.v1.HistoryService.SyncActivity:output_type -> temporal.server.api.historyservice.v1.SyncActivityResponse + 112, // 112: temporal.server.api.historyservice.v1.HistoryService.DescribeMutableState:output_type -> temporal.server.api.historyservice.v1.DescribeMutableStateResponse + 113, // 113: temporal.server.api.historyservice.v1.HistoryService.DescribeHistoryHost:output_type -> temporal.server.api.historyservice.v1.DescribeHistoryHostResponse + 114, // 114: temporal.server.api.historyservice.v1.HistoryService.CloseShard:output_type -> temporal.server.api.historyservice.v1.CloseShardResponse + 115, // 115: temporal.server.api.historyservice.v1.HistoryService.GetShard:output_type -> temporal.server.api.historyservice.v1.GetShardResponse + 116, // 116: temporal.server.api.historyservice.v1.HistoryService.RemoveTask:output_type -> temporal.server.api.historyservice.v1.RemoveTaskResponse + 117, // 117: temporal.server.api.historyservice.v1.HistoryService.GetReplicationMessages:output_type -> temporal.server.api.historyservice.v1.GetReplicationMessagesResponse + 118, // 118: temporal.server.api.historyservice.v1.HistoryService.GetDLQReplicationMessages:output_type -> temporal.server.api.historyservice.v1.GetDLQReplicationMessagesResponse + 119, // 119: temporal.server.api.historyservice.v1.HistoryService.QueryWorkflow:output_type -> temporal.server.api.historyservice.v1.QueryWorkflowResponse + 120, // 120: temporal.server.api.historyservice.v1.HistoryService.ReapplyEvents:output_type -> temporal.server.api.historyservice.v1.ReapplyEventsResponse + 121, // 121: temporal.server.api.historyservice.v1.HistoryService.GetDLQMessages:output_type -> temporal.server.api.historyservice.v1.GetDLQMessagesResponse + 122, // 122: temporal.server.api.historyservice.v1.HistoryService.PurgeDLQMessages:output_type -> temporal.server.api.historyservice.v1.PurgeDLQMessagesResponse + 123, // 123: temporal.server.api.historyservice.v1.HistoryService.MergeDLQMessages:output_type -> temporal.server.api.historyservice.v1.MergeDLQMessagesResponse + 124, // 124: temporal.server.api.historyservice.v1.HistoryService.RefreshWorkflowTasks:output_type -> temporal.server.api.historyservice.v1.RefreshWorkflowTasksResponse + 125, // 125: temporal.server.api.historyservice.v1.HistoryService.GenerateLastHistoryReplicationTasks:output_type -> temporal.server.api.historyservice.v1.GenerateLastHistoryReplicationTasksResponse + 126, // 126: temporal.server.api.historyservice.v1.HistoryService.GetReplicationStatus:output_type -> temporal.server.api.historyservice.v1.GetReplicationStatusResponse + 127, // 127: temporal.server.api.historyservice.v1.HistoryService.RebuildMutableState:output_type -> temporal.server.api.historyservice.v1.RebuildMutableStateResponse + 128, // 128: temporal.server.api.historyservice.v1.HistoryService.ImportWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.ImportWorkflowExecutionResponse + 129, // 129: temporal.server.api.historyservice.v1.HistoryService.DeleteWorkflowVisibilityRecord:output_type -> temporal.server.api.historyservice.v1.DeleteWorkflowVisibilityRecordResponse + 130, // 130: temporal.server.api.historyservice.v1.HistoryService.UpdateWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.UpdateWorkflowExecutionResponse + 131, // 131: temporal.server.api.historyservice.v1.HistoryService.PollWorkflowExecutionUpdate:output_type -> temporal.server.api.historyservice.v1.PollWorkflowExecutionUpdateResponse + 132, // 132: temporal.server.api.historyservice.v1.HistoryService.StreamWorkflowReplicationMessages:output_type -> temporal.server.api.historyservice.v1.StreamWorkflowReplicationMessagesResponse + 133, // 133: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionHistory:output_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryResponse + 134, // 134: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionHistoryReverse:output_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionHistoryReverseResponse + 135, // 135: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionRawHistoryV2:output_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryV2Response + 136, // 136: temporal.server.api.historyservice.v1.HistoryService.GetWorkflowExecutionRawHistory:output_type -> temporal.server.api.historyservice.v1.GetWorkflowExecutionRawHistoryResponse + 137, // 137: temporal.server.api.historyservice.v1.HistoryService.ForceDeleteWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.ForceDeleteWorkflowExecutionResponse + 138, // 138: temporal.server.api.historyservice.v1.HistoryService.DeleteExecution:output_type -> temporal.server.api.historyservice.v1.DeleteExecutionResponse + 139, // 139: temporal.server.api.historyservice.v1.HistoryService.GetDLQTasks:output_type -> temporal.server.api.historyservice.v1.GetDLQTasksResponse + 140, // 140: temporal.server.api.historyservice.v1.HistoryService.DeleteDLQTasks:output_type -> temporal.server.api.historyservice.v1.DeleteDLQTasksResponse + 141, // 141: temporal.server.api.historyservice.v1.HistoryService.ListQueues:output_type -> temporal.server.api.historyservice.v1.ListQueuesResponse + 142, // 142: temporal.server.api.historyservice.v1.HistoryService.AddTasks:output_type -> temporal.server.api.historyservice.v1.AddTasksResponse + 143, // 143: temporal.server.api.historyservice.v1.HistoryService.ListTasks:output_type -> temporal.server.api.historyservice.v1.ListTasksResponse + 144, // 144: temporal.server.api.historyservice.v1.HistoryService.CompleteNexusOperation:output_type -> temporal.server.api.historyservice.v1.CompleteNexusOperationResponse + 145, // 145: temporal.server.api.historyservice.v1.HistoryService.CompleteNexusOperationChasm:output_type -> temporal.server.api.historyservice.v1.CompleteNexusOperationChasmResponse + 146, // 146: temporal.server.api.historyservice.v1.HistoryService.InvokeStateMachineMethod:output_type -> temporal.server.api.historyservice.v1.InvokeStateMachineMethodResponse + 147, // 147: temporal.server.api.historyservice.v1.HistoryService.DeepHealthCheck:output_type -> temporal.server.api.historyservice.v1.DeepHealthCheckResponse + 148, // 148: temporal.server.api.historyservice.v1.HistoryService.SyncWorkflowState:output_type -> temporal.server.api.historyservice.v1.SyncWorkflowStateResponse + 149, // 149: temporal.server.api.historyservice.v1.HistoryService.UpdateActivityOptions:output_type -> temporal.server.api.historyservice.v1.UpdateActivityOptionsResponse + 150, // 150: temporal.server.api.historyservice.v1.HistoryService.PauseActivity:output_type -> temporal.server.api.historyservice.v1.PauseActivityResponse + 151, // 151: temporal.server.api.historyservice.v1.HistoryService.UnpauseActivity:output_type -> temporal.server.api.historyservice.v1.UnpauseActivityResponse + 152, // 152: temporal.server.api.historyservice.v1.HistoryService.ResetActivity:output_type -> temporal.server.api.historyservice.v1.ResetActivityResponse + 153, // 153: temporal.server.api.historyservice.v1.HistoryService.PauseWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.PauseWorkflowExecutionResponse + 154, // 154: temporal.server.api.historyservice.v1.HistoryService.UnpauseWorkflowExecution:output_type -> temporal.server.api.historyservice.v1.UnpauseWorkflowExecutionResponse + 155, // 155: temporal.server.api.historyservice.v1.HistoryService.StartNexusOperation:output_type -> temporal.server.api.historyservice.v1.StartNexusOperationResponse + 156, // 156: temporal.server.api.historyservice.v1.HistoryService.CancelNexusOperation:output_type -> temporal.server.api.historyservice.v1.CancelNexusOperationResponse + 157, // 157: temporal.server.api.historyservice.v1.HistoryService.PollWorkflowExecutionTimeSkipping:output_type -> temporal.server.api.historyservice.v1.PollWorkflowExecutionTimeSkippingResponse + 79, // [79:158] is the sub-list for method output_type + 0, // [0:79] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name diff --git a/api/historyservice/v1/service_grpc.pb.go b/api/historyservice/v1/service_grpc.pb.go index 79e609f4a33..a6c13f620cd 100644 --- a/api/historyservice/v1/service_grpc.pb.go +++ b/api/historyservice/v1/service_grpc.pb.go @@ -23,6 +23,7 @@ const ( HistoryService_StartWorkflowExecution_FullMethodName = "/temporal.server.api.historyservice.v1.HistoryService/StartWorkflowExecution" HistoryService_GetMutableState_FullMethodName = "/temporal.server.api.historyservice.v1.HistoryService/GetMutableState" HistoryService_PollMutableState_FullMethodName = "/temporal.server.api.historyservice.v1.HistoryService/PollMutableState" + HistoryService_GetStreamReplaySlices_FullMethodName = "/temporal.server.api.historyservice.v1.HistoryService/GetStreamReplaySlices" HistoryService_ResetStickyTaskQueue_FullMethodName = "/temporal.server.api.historyservice.v1.HistoryService/ResetStickyTaskQueue" HistoryService_RecordWorkflowTaskStarted_FullMethodName = "/temporal.server.api.historyservice.v1.HistoryService/RecordWorkflowTaskStarted" HistoryService_RecordActivityTaskStarted_FullMethodName = "/temporal.server.api.historyservice.v1.HistoryService/RecordActivityTaskStarted" @@ -117,6 +118,10 @@ type HistoryServiceClient interface { // It fails with 'EntityNotExistError' if specified workflow execution in unknown to the service. // It returns CurrentBranchChangedError if the workflow version branch has changed. PollMutableState(ctx context.Context, in *PollMutableStateRequest, opts ...grpc.CallOption) (*PollMutableStateResponse, error) + // Returns the stream ranges the workflow's completed tasks recorded, re-read + // from their streams and tagged with the event that recorded each, so a task + // built without RecordWorkflowTaskStarted can still replay a consumer. + GetStreamReplaySlices(ctx context.Context, in *GetStreamReplaySlicesRequest, opts ...grpc.CallOption) (*GetStreamReplaySlicesResponse, error) // Reset the sticky task queue related information in mutable state of a given workflow. // Things cleared are: // 1. StickyTaskQueue @@ -428,6 +433,15 @@ func (c *historyServiceClient) PollMutableState(ctx context.Context, in *PollMut return out, nil } +func (c *historyServiceClient) GetStreamReplaySlices(ctx context.Context, in *GetStreamReplaySlicesRequest, opts ...grpc.CallOption) (*GetStreamReplaySlicesResponse, error) { + out := new(GetStreamReplaySlicesResponse) + err := c.cc.Invoke(ctx, HistoryService_GetStreamReplaySlices_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *historyServiceClient) ResetStickyTaskQueue(ctx context.Context, in *ResetStickyTaskQueueRequest, opts ...grpc.CallOption) (*ResetStickyTaskQueueResponse, error) { out := new(ResetStickyTaskQueueResponse) err := c.cc.Invoke(ctx, HistoryService_ResetStickyTaskQueue_FullMethodName, in, out, opts...) @@ -1142,6 +1156,10 @@ type HistoryServiceServer interface { // It fails with 'EntityNotExistError' if specified workflow execution in unknown to the service. // It returns CurrentBranchChangedError if the workflow version branch has changed. PollMutableState(context.Context, *PollMutableStateRequest) (*PollMutableStateResponse, error) + // Returns the stream ranges the workflow's completed tasks recorded, re-read + // from their streams and tagged with the event that recorded each, so a task + // built without RecordWorkflowTaskStarted can still replay a consumer. + GetStreamReplaySlices(context.Context, *GetStreamReplaySlicesRequest) (*GetStreamReplaySlicesResponse, error) // Reset the sticky task queue related information in mutable state of a given workflow. // Things cleared are: // 1. StickyTaskQueue @@ -1432,6 +1450,9 @@ func (UnimplementedHistoryServiceServer) GetMutableState(context.Context, *GetMu func (UnimplementedHistoryServiceServer) PollMutableState(context.Context, *PollMutableStateRequest) (*PollMutableStateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method PollMutableState not implemented") } +func (UnimplementedHistoryServiceServer) GetStreamReplaySlices(context.Context, *GetStreamReplaySlicesRequest) (*GetStreamReplaySlicesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetStreamReplaySlices not implemented") +} func (UnimplementedHistoryServiceServer) ResetStickyTaskQueue(context.Context, *ResetStickyTaskQueueRequest) (*ResetStickyTaskQueueResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ResetStickyTaskQueue not implemented") } @@ -1724,6 +1745,24 @@ func _HistoryService_PollMutableState_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } +func _HistoryService_GetStreamReplaySlices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetStreamReplaySlicesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HistoryServiceServer).GetStreamReplaySlices(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HistoryService_GetStreamReplaySlices_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HistoryServiceServer).GetStreamReplaySlices(ctx, req.(*GetStreamReplaySlicesRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _HistoryService_ResetStickyTaskQueue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ResetStickyTaskQueueRequest) if err := dec(in); err != nil { @@ -3101,6 +3140,10 @@ var HistoryService_ServiceDesc = grpc.ServiceDesc{ MethodName: "PollMutableState", Handler: _HistoryService_PollMutableState_Handler, }, + { + MethodName: "GetStreamReplaySlices", + Handler: _HistoryService_GetStreamReplaySlices_Handler, + }, { MethodName: "ResetStickyTaskQueue", Handler: _HistoryService_ResetStickyTaskQueue_Handler, diff --git a/api/historyservicemock/v1/service_grpc.pb.mock.go b/api/historyservicemock/v1/service_grpc.pb.mock.go index 6f4d8d32ff7..421c6c539fa 100644 --- a/api/historyservicemock/v1/service_grpc.pb.mock.go +++ b/api/historyservicemock/v1/service_grpc.pb.mock.go @@ -503,6 +503,26 @@ func (mr *MockHistoryServiceClientMockRecorder) GetShard(ctx, in any, opts ...an return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetShard", reflect.TypeOf((*MockHistoryServiceClient)(nil).GetShard), varargs...) } +// GetStreamReplaySlices mocks base method. +func (m *MockHistoryServiceClient) GetStreamReplaySlices(ctx context.Context, in *historyservice.GetStreamReplaySlicesRequest, opts ...grpc.CallOption) (*historyservice.GetStreamReplaySlicesResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetStreamReplaySlices", varargs...) + ret0, _ := ret[0].(*historyservice.GetStreamReplaySlicesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetStreamReplaySlices indicates an expected call of GetStreamReplaySlices. +func (mr *MockHistoryServiceClientMockRecorder) GetStreamReplaySlices(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetStreamReplaySlices", reflect.TypeOf((*MockHistoryServiceClient)(nil).GetStreamReplaySlices), varargs...) +} + // GetWorkflowExecutionHistory mocks base method. func (m *MockHistoryServiceClient) GetWorkflowExecutionHistory(ctx context.Context, in *historyservice.GetWorkflowExecutionHistoryRequest, opts ...grpc.CallOption) (*historyservice.GetWorkflowExecutionHistoryResponse, error) { m.ctrl.T.Helper() @@ -2110,6 +2130,21 @@ func (mr *MockHistoryServiceServerMockRecorder) GetShard(arg0, arg1 any) *gomock return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetShard", reflect.TypeOf((*MockHistoryServiceServer)(nil).GetShard), arg0, arg1) } +// GetStreamReplaySlices mocks base method. +func (m *MockHistoryServiceServer) GetStreamReplaySlices(arg0 context.Context, arg1 *historyservice.GetStreamReplaySlicesRequest) (*historyservice.GetStreamReplaySlicesResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetStreamReplaySlices", arg0, arg1) + ret0, _ := ret[0].(*historyservice.GetStreamReplaySlicesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetStreamReplaySlices indicates an expected call of GetStreamReplaySlices. +func (mr *MockHistoryServiceServerMockRecorder) GetStreamReplaySlices(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetStreamReplaySlices", reflect.TypeOf((*MockHistoryServiceServer)(nil).GetStreamReplaySlices), arg0, arg1) +} + // GetWorkflowExecutionHistory mocks base method. func (m *MockHistoryServiceServer) GetWorkflowExecutionHistory(arg0 context.Context, arg1 *historyservice.GetWorkflowExecutionHistoryRequest) (*historyservice.GetWorkflowExecutionHistoryResponse, error) { m.ctrl.T.Helper() diff --git a/api/matchingservice/v1/request_response.pb.go b/api/matchingservice/v1/request_response.pb.go index 4a2f7325773..bbdbe0254c9 100644 --- a/api/matchingservice/v1/request_response.pb.go +++ b/api/matchingservice/v1/request_response.pb.go @@ -12,22 +12,23 @@ import ( unsafe "unsafe" v11 "go.temporal.io/api/common/v1" - v112 "go.temporal.io/api/deployment/v1" - v19 "go.temporal.io/api/enums/v1" - v114 "go.temporal.io/api/failure/v1" + v113 "go.temporal.io/api/deployment/v1" + v110 "go.temporal.io/api/enums/v1" + v115 "go.temporal.io/api/failure/v1" v16 "go.temporal.io/api/history/v1" - v113 "go.temporal.io/api/nexus/v1" + v114 "go.temporal.io/api/nexus/v1" v15 "go.temporal.io/api/protocol/v1" v12 "go.temporal.io/api/query/v1" + v17 "go.temporal.io/api/stream/v1" v14 "go.temporal.io/api/taskqueue/v1" - v115 "go.temporal.io/api/worker/v1" + v116 "go.temporal.io/api/worker/v1" v1 "go.temporal.io/api/workflowservice/v1" - v17 "go.temporal.io/server/api/clock/v1" - v110 "go.temporal.io/server/api/deployment/v1" - v116 "go.temporal.io/server/api/enums/v1" + v18 "go.temporal.io/server/api/clock/v1" + v111 "go.temporal.io/server/api/deployment/v1" + v117 "go.temporal.io/server/api/enums/v1" v13 "go.temporal.io/server/api/history/v1" - v111 "go.temporal.io/server/api/persistence/v1" - v18 "go.temporal.io/server/api/taskqueue/v1" + v112 "go.temporal.io/server/api/persistence/v1" + v19 "go.temporal.io/server/api/taskqueue/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" durationpb "google.golang.org/protobuf/types/known/durationpb" @@ -145,7 +146,11 @@ type PollWorkflowTaskQueueResponse struct { PollerScalingDecision *v14.PollerScalingDecision `protobuf:"bytes,21,opt,name=poller_scaling_decision,json=pollerScalingDecision,proto3" json:"poller_scaling_decision,omitempty"` // Raw history bytes sent from matching service when history.sendRawHistoryBetweenInternalServices is enabled. // Matching client will deserialize this to History when it receives the response. - RawHistory *v16.History `protobuf:"bytes,22,opt,name=raw_history,json=rawHistory,proto3" json:"raw_history,omitempty"` + RawHistory *v16.History `protobuf:"bytes,22,opt,name=raw_history,json=rawHistory,proto3" json:"raw_history,omitempty"` + // Slices of the streams this Workflow is consuming, each covering the offset + // range the task may deliver. Payloads ride here and never enter History; + // only the consumed range is recorded, on WorkflowTaskCompleted. + StreamSlices []*v17.StreamSlice `protobuf:"bytes,23,rep,name=stream_slices,json=streamSlices,proto3" json:"stream_slices,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -327,6 +332,13 @@ func (x *PollWorkflowTaskQueueResponse) GetRawHistory() *v16.History { return nil } +func (x *PollWorkflowTaskQueueResponse) GetStreamSlices() []*v17.StreamSlice { + if x != nil { + return x.StreamSlices + } + return nil +} + // PollWorkflowTaskQueueResponseWithRawHistory is wire-compatible with PollWorkflowTaskQueueResponse. // // WIRE COMPATIBILITY PATTERN: @@ -374,7 +386,11 @@ type PollWorkflowTaskQueueResponseWithRawHistory struct { // Raw history bytes. Each element is a proto-encoded batch of history events. // When matching client deserializes this to PollWorkflowTaskQueueResponse, this field // will be automatically deserialized to the raw_history field as History. - RawHistory [][]byte `protobuf:"bytes,22,rep,name=raw_history,json=rawHistory,proto3" json:"raw_history,omitempty"` + RawHistory [][]byte `protobuf:"bytes,22,rep,name=raw_history,json=rawHistory,proto3" json:"raw_history,omitempty"` + // Slices of the streams this Workflow is consuming, each covering the offset + // range the task may deliver. Payloads ride here and never enter History; + // only the consumed range is recorded, on WorkflowTaskCompleted. + StreamSlices []*v17.StreamSlice `protobuf:"bytes,23,rep,name=stream_slices,json=streamSlices,proto3" json:"stream_slices,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -556,6 +572,13 @@ func (x *PollWorkflowTaskQueueResponseWithRawHistory) GetRawHistory() [][]byte { return nil } +func (x *PollWorkflowTaskQueueResponseWithRawHistory) GetStreamSlices() []*v17.StreamSlice { + if x != nil { + return x.StreamSlices + } + return nil +} + type PollActivityTaskQueueRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` @@ -846,11 +869,11 @@ type AddWorkflowTaskRequest struct { // // aip.dev/not-precedent: "to" is used to indicate interval. --) ScheduleToStartTimeout *durationpb.Duration `protobuf:"bytes,5,opt,name=schedule_to_start_timeout,json=scheduleToStartTimeout,proto3" json:"schedule_to_start_timeout,omitempty"` - Clock *v17.VectorClock `protobuf:"bytes,9,opt,name=clock,proto3" json:"clock,omitempty"` + Clock *v18.VectorClock `protobuf:"bytes,9,opt,name=clock,proto3" json:"clock,omitempty"` // How this task should be directed by matching. (Missing means the default // for TaskVersionDirective, which is unversioned.) - VersionDirective *v18.TaskVersionDirective `protobuf:"bytes,10,opt,name=version_directive,json=versionDirective,proto3" json:"version_directive,omitempty"` - ForwardInfo *v18.TaskForwardInfo `protobuf:"bytes,11,opt,name=forward_info,json=forwardInfo,proto3" json:"forward_info,omitempty"` + VersionDirective *v19.TaskVersionDirective `protobuf:"bytes,10,opt,name=version_directive,json=versionDirective,proto3" json:"version_directive,omitempty"` + ForwardInfo *v19.TaskForwardInfo `protobuf:"bytes,11,opt,name=forward_info,json=forwardInfo,proto3" json:"forward_info,omitempty"` Priority *v11.Priority `protobuf:"bytes,12,opt,name=priority,proto3" json:"priority,omitempty"` // Stamp value from when the workflow task was scheduled. Used to validate the task is still relevant. Stamp int32 `protobuf:"varint,13,opt,name=stamp,proto3" json:"stamp,omitempty"` @@ -923,21 +946,21 @@ func (x *AddWorkflowTaskRequest) GetScheduleToStartTimeout() *durationpb.Duratio return nil } -func (x *AddWorkflowTaskRequest) GetClock() *v17.VectorClock { +func (x *AddWorkflowTaskRequest) GetClock() *v18.VectorClock { if x != nil { return x.Clock } return nil } -func (x *AddWorkflowTaskRequest) GetVersionDirective() *v18.TaskVersionDirective { +func (x *AddWorkflowTaskRequest) GetVersionDirective() *v19.TaskVersionDirective { if x != nil { return x.VersionDirective } return nil } -func (x *AddWorkflowTaskRequest) GetForwardInfo() *v18.TaskForwardInfo { +func (x *AddWorkflowTaskRequest) GetForwardInfo() *v19.TaskForwardInfo { if x != nil { return x.ForwardInfo } @@ -1014,11 +1037,11 @@ type AddActivityTaskRequest struct { // // aip.dev/not-precedent: "to" is used to indicate interval. --) ScheduleToStartTimeout *durationpb.Duration `protobuf:"bytes,6,opt,name=schedule_to_start_timeout,json=scheduleToStartTimeout,proto3" json:"schedule_to_start_timeout,omitempty"` - Clock *v17.VectorClock `protobuf:"bytes,9,opt,name=clock,proto3" json:"clock,omitempty"` + Clock *v18.VectorClock `protobuf:"bytes,9,opt,name=clock,proto3" json:"clock,omitempty"` // How this task should be directed by matching. (Missing means the default // for TaskVersionDirective, which is unversioned.) - VersionDirective *v18.TaskVersionDirective `protobuf:"bytes,10,opt,name=version_directive,json=versionDirective,proto3" json:"version_directive,omitempty"` - ForwardInfo *v18.TaskForwardInfo `protobuf:"bytes,11,opt,name=forward_info,json=forwardInfo,proto3" json:"forward_info,omitempty"` + VersionDirective *v19.TaskVersionDirective `protobuf:"bytes,10,opt,name=version_directive,json=versionDirective,proto3" json:"version_directive,omitempty"` + ForwardInfo *v19.TaskForwardInfo `protobuf:"bytes,11,opt,name=forward_info,json=forwardInfo,proto3" json:"forward_info,omitempty"` Stamp int32 `protobuf:"varint,12,opt,name=stamp,proto3" json:"stamp,omitempty"` Priority *v11.Priority `protobuf:"bytes,13,opt,name=priority,proto3" json:"priority,omitempty"` // Reference to the Chasm component for activity execution (if applicable). For standalone activities, all @@ -1094,21 +1117,21 @@ func (x *AddActivityTaskRequest) GetScheduleToStartTimeout() *durationpb.Duratio return nil } -func (x *AddActivityTaskRequest) GetClock() *v17.VectorClock { +func (x *AddActivityTaskRequest) GetClock() *v18.VectorClock { if x != nil { return x.Clock } return nil } -func (x *AddActivityTaskRequest) GetVersionDirective() *v18.TaskVersionDirective { +func (x *AddActivityTaskRequest) GetVersionDirective() *v19.TaskVersionDirective { if x != nil { return x.VersionDirective } return nil } -func (x *AddActivityTaskRequest) GetForwardInfo() *v18.TaskForwardInfo { +func (x *AddActivityTaskRequest) GetForwardInfo() *v19.TaskForwardInfo { if x != nil { return x.ForwardInfo } @@ -1189,8 +1212,8 @@ type QueryWorkflowRequest struct { QueryRequest *v1.QueryWorkflowRequest `protobuf:"bytes,3,opt,name=query_request,json=queryRequest,proto3" json:"query_request,omitempty"` // How this task should be directed by matching. (Missing means the default // for TaskVersionDirective, which is unversioned.) - VersionDirective *v18.TaskVersionDirective `protobuf:"bytes,5,opt,name=version_directive,json=versionDirective,proto3" json:"version_directive,omitempty"` - ForwardInfo *v18.TaskForwardInfo `protobuf:"bytes,6,opt,name=forward_info,json=forwardInfo,proto3" json:"forward_info,omitempty"` + VersionDirective *v19.TaskVersionDirective `protobuf:"bytes,5,opt,name=version_directive,json=versionDirective,proto3" json:"version_directive,omitempty"` + ForwardInfo *v19.TaskForwardInfo `protobuf:"bytes,6,opt,name=forward_info,json=forwardInfo,proto3" json:"forward_info,omitempty"` Priority *v11.Priority `protobuf:"bytes,7,opt,name=priority,proto3" json:"priority,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -1247,14 +1270,14 @@ func (x *QueryWorkflowRequest) GetQueryRequest() *v1.QueryWorkflowRequest { return nil } -func (x *QueryWorkflowRequest) GetVersionDirective() *v18.TaskVersionDirective { +func (x *QueryWorkflowRequest) GetVersionDirective() *v19.TaskVersionDirective { if x != nil { return x.VersionDirective } return nil } -func (x *QueryWorkflowRequest) GetForwardInfo() *v18.TaskForwardInfo { +func (x *QueryWorkflowRequest) GetForwardInfo() *v19.TaskForwardInfo { if x != nil { return x.ForwardInfo } @@ -1427,7 +1450,7 @@ func (*RespondQueryTaskCompletedResponse) Descriptor() ([]byte, []int) { type CancelOutstandingPollRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - TaskQueueType v19.TaskQueueType `protobuf:"varint,2,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` + TaskQueueType v110.TaskQueueType `protobuf:"varint,2,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` TaskQueue *v14.TaskQueue `protobuf:"bytes,3,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` PollerId string `protobuf:"bytes,4,opt,name=poller_id,json=pollerId,proto3" json:"poller_id,omitempty"` unknownFields protoimpl.UnknownFields @@ -1471,11 +1494,11 @@ func (x *CancelOutstandingPollRequest) GetNamespaceId() string { return "" } -func (x *CancelOutstandingPollRequest) GetTaskQueueType() v19.TaskQueueType { +func (x *CancelOutstandingPollRequest) GetTaskQueueType() v110.TaskQueueType { if x != nil { return x.TaskQueueType } - return v19.TaskQueueType(0) + return v110.TaskQueueType(0) } func (x *CancelOutstandingPollRequest) GetTaskQueue() *v14.TaskQueue { @@ -1533,7 +1556,7 @@ type CancelOutstandingWorkerPollsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` TaskQueue *v14.TaskQueue `protobuf:"bytes,2,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` - TaskQueueType v19.TaskQueueType `protobuf:"varint,3,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` + TaskQueueType v110.TaskQueueType `protobuf:"varint,3,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` WorkerInstanceKey string `protobuf:"bytes,4,opt,name=worker_instance_key,json=workerInstanceKey,proto3" json:"worker_instance_key,omitempty"` // Worker identity string (e.g., "pid@hostname"). Used to eagerly remove the worker // from pollerHistory so DescribeTaskQueue doesn't show stale pollers. @@ -1588,11 +1611,11 @@ func (x *CancelOutstandingWorkerPollsRequest) GetTaskQueue() *v14.TaskQueue { return nil } -func (x *CancelOutstandingWorkerPollsRequest) GetTaskQueueType() v19.TaskQueueType { +func (x *CancelOutstandingWorkerPollsRequest) GetTaskQueueType() v110.TaskQueueType { if x != nil { return x.TaskQueueType } - return v19.TaskQueueType(0) + return v110.TaskQueueType(0) } func (x *CancelOutstandingWorkerPollsRequest) GetWorkerInstanceKey() string { @@ -1661,9 +1684,9 @@ type CancelOutstandingWorkerPollsPartitionRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` // Used for RPC routing only. Set to any partition on the target host. - TaskQueuePartition *v18.TaskQueuePartition `protobuf:"bytes,2,opt,name=task_queue_partition,json=taskQueuePartition,proto3" json:"task_queue_partition,omitempty"` + TaskQueuePartition *v19.TaskQueuePartition `protobuf:"bytes,2,opt,name=task_queue_partition,json=taskQueuePartition,proto3" json:"task_queue_partition,omitempty"` // Partitions to process on this host. - Partitions []*v18.TaskQueuePartition `protobuf:"bytes,3,rep,name=partitions,proto3" json:"partitions,omitempty"` + Partitions []*v19.TaskQueuePartition `protobuf:"bytes,3,rep,name=partitions,proto3" json:"partitions,omitempty"` // Workers to cancel polls for. Workers []*CancelOutstandingWorkerPollsPartitionRequest_WorkerEntry `protobuf:"bytes,4,rep,name=workers,proto3" json:"workers,omitempty"` unknownFields protoimpl.UnknownFields @@ -1707,14 +1730,14 @@ func (x *CancelOutstandingWorkerPollsPartitionRequest) GetNamespaceId() string { return "" } -func (x *CancelOutstandingWorkerPollsPartitionRequest) GetTaskQueuePartition() *v18.TaskQueuePartition { +func (x *CancelOutstandingWorkerPollsPartitionRequest) GetTaskQueuePartition() *v19.TaskQueuePartition { if x != nil { return x.TaskQueuePartition } return nil } -func (x *CancelOutstandingWorkerPollsPartitionRequest) GetPartitions() []*v18.TaskQueuePartition { +func (x *CancelOutstandingWorkerPollsPartitionRequest) GetPartitions() []*v19.TaskQueuePartition { if x != nil { return x.Partitions } @@ -1776,7 +1799,7 @@ type DescribeTaskQueueRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` DescRequest *v1.DescribeTaskQueueRequest `protobuf:"bytes,2,opt,name=desc_request,json=descRequest,proto3" json:"desc_request,omitempty"` - Version *v110.WorkerDeploymentVersion `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + Version *v111.WorkerDeploymentVersion `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1825,7 +1848,7 @@ func (x *DescribeTaskQueueRequest) GetDescRequest() *v1.DescribeTaskQueueRequest return nil } -func (x *DescribeTaskQueueRequest) GetVersion() *v110.WorkerDeploymentVersion { +func (x *DescribeTaskQueueRequest) GetVersion() *v111.WorkerDeploymentVersion { if x != nil { return x.Version } @@ -1880,9 +1903,9 @@ type DescribeVersionedTaskQueuesRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` // This task queue is for routing purposes. - TaskQueueType v19.TaskQueueType `protobuf:"varint,2,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` + TaskQueueType v110.TaskQueueType `protobuf:"varint,2,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` TaskQueue *v14.TaskQueue `protobuf:"bytes,3,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` - Version *v110.WorkerDeploymentVersion `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` + Version *v111.WorkerDeploymentVersion `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` // List of task queues to describe. VersionTaskQueues []*DescribeVersionedTaskQueuesRequest_VersionTaskQueue `protobuf:"bytes,5,rep,name=version_task_queues,json=versionTaskQueues,proto3" json:"version_task_queues,omitempty"` unknownFields protoimpl.UnknownFields @@ -1926,11 +1949,11 @@ func (x *DescribeVersionedTaskQueuesRequest) GetNamespaceId() string { return "" } -func (x *DescribeVersionedTaskQueuesRequest) GetTaskQueueType() v19.TaskQueueType { +func (x *DescribeVersionedTaskQueuesRequest) GetTaskQueueType() v110.TaskQueueType { if x != nil { return x.TaskQueueType } - return v19.TaskQueueType(0) + return v110.TaskQueueType(0) } func (x *DescribeVersionedTaskQueuesRequest) GetTaskQueue() *v14.TaskQueue { @@ -1940,7 +1963,7 @@ func (x *DescribeVersionedTaskQueuesRequest) GetTaskQueue() *v14.TaskQueue { return nil } -func (x *DescribeVersionedTaskQueuesRequest) GetVersion() *v110.WorkerDeploymentVersion { +func (x *DescribeVersionedTaskQueuesRequest) GetVersion() *v111.WorkerDeploymentVersion { if x != nil { return x.Version } @@ -2001,7 +2024,7 @@ func (x *DescribeVersionedTaskQueuesResponse) GetVersionTaskQueues() []*Describe type DescribeTaskQueuePartitionRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - TaskQueuePartition *v18.TaskQueuePartition `protobuf:"bytes,2,opt,name=task_queue_partition,json=taskQueuePartition,proto3" json:"task_queue_partition,omitempty"` + TaskQueuePartition *v19.TaskQueuePartition `protobuf:"bytes,2,opt,name=task_queue_partition,json=taskQueuePartition,proto3" json:"task_queue_partition,omitempty"` Versions *v14.TaskQueueVersionSelection `protobuf:"bytes,3,opt,name=versions,proto3" json:"versions,omitempty"` // Report task queue stats for the requested task queue types and versions ReportStats bool `protobuf:"varint,4,opt,name=report_stats,json=reportStats,proto3" json:"report_stats,omitempty"` @@ -2053,7 +2076,7 @@ func (x *DescribeTaskQueuePartitionRequest) GetNamespaceId() string { return "" } -func (x *DescribeTaskQueuePartitionRequest) GetTaskQueuePartition() *v18.TaskQueuePartition { +func (x *DescribeTaskQueuePartitionRequest) GetTaskQueuePartition() *v19.TaskQueuePartition { if x != nil { return x.TaskQueuePartition } @@ -2097,8 +2120,8 @@ func (x *DescribeTaskQueuePartitionRequest) GetOnlyIfLoaded() bool { type DescribeTaskQueuePartitionResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - VersionsInfoInternal map[string]*v18.TaskQueueVersionInfoInternal `protobuf:"bytes,1,rep,name=versions_info_internal,json=versionsInfoInternal,proto3" json:"versions_info_internal,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - ScaleInfo *v18.PartitionScaleInfo `protobuf:"bytes,2,opt,name=scale_info,json=scaleInfo,proto3" json:"scale_info,omitempty"` + VersionsInfoInternal map[string]*v19.TaskQueueVersionInfoInternal `protobuf:"bytes,1,rep,name=versions_info_internal,json=versionsInfoInternal,proto3" json:"versions_info_internal,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + ScaleInfo *v19.PartitionScaleInfo `protobuf:"bytes,2,opt,name=scale_info,json=scaleInfo,proto3" json:"scale_info,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2133,14 +2156,14 @@ func (*DescribeTaskQueuePartitionResponse) Descriptor() ([]byte, []int) { return file_temporal_server_api_matchingservice_v1_request_response_proto_rawDescGZIP(), []int{24} } -func (x *DescribeTaskQueuePartitionResponse) GetVersionsInfoInternal() map[string]*v18.TaskQueueVersionInfoInternal { +func (x *DescribeTaskQueuePartitionResponse) GetVersionsInfoInternal() map[string]*v19.TaskQueueVersionInfoInternal { if x != nil { return x.VersionsInfoInternal } return nil } -func (x *DescribeTaskQueuePartitionResponse) GetScaleInfo() *v18.PartitionScaleInfo { +func (x *DescribeTaskQueuePartitionResponse) GetScaleInfo() *v19.PartitionScaleInfo { if x != nil { return x.ScaleInfo } @@ -2779,8 +2802,8 @@ type GetTaskQueueUserDataRequest struct { NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` // The task queue to fetch data from. The task queue is always considered as a normal // queue, since sticky queues have no user data. - TaskQueue string `protobuf:"bytes,2,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` - TaskQueueType v19.TaskQueueType `protobuf:"varint,5,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` + TaskQueue string `protobuf:"bytes,2,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` + TaskQueueType v110.TaskQueueType `protobuf:"varint,5,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` // The value of the last known user data version. // If the requester has no data, it should set this to 0. // This value must not be set to a negative number (note that our linter suggests avoiding uint64). @@ -2843,11 +2866,11 @@ func (x *GetTaskQueueUserDataRequest) GetTaskQueue() string { return "" } -func (x *GetTaskQueueUserDataRequest) GetTaskQueueType() v19.TaskQueueType { +func (x *GetTaskQueueUserDataRequest) GetTaskQueueType() v110.TaskQueueType { if x != nil { return x.TaskQueueType } - return v19.TaskQueueType(0) + return v110.TaskQueueType(0) } func (x *GetTaskQueueUserDataRequest) GetLastKnownUserDataVersion() int64 { @@ -2882,8 +2905,8 @@ type GetTaskQueueUserDataResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // Versioned user data, set if the task queue has user data and the request's last_known_user_data_version is less // than the version cached in the root partition. - UserData *v111.VersionedTaskQueueUserData `protobuf:"bytes,2,opt,name=user_data,json=userData,proto3" json:"user_data,omitempty"` - EphemeralData *v18.VersionedEphemeralData `protobuf:"bytes,3,opt,name=ephemeral_data,json=ephemeralData,proto3" json:"ephemeral_data,omitempty"` + UserData *v112.VersionedTaskQueueUserData `protobuf:"bytes,2,opt,name=user_data,json=userData,proto3" json:"user_data,omitempty"` + EphemeralData *v19.VersionedEphemeralData `protobuf:"bytes,3,opt,name=ephemeral_data,json=ephemeralData,proto3" json:"ephemeral_data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2918,14 +2941,14 @@ func (*GetTaskQueueUserDataResponse) Descriptor() ([]byte, []int) { return file_temporal_server_api_matchingservice_v1_request_response_proto_rawDescGZIP(), []int{36} } -func (x *GetTaskQueueUserDataResponse) GetUserData() *v111.VersionedTaskQueueUserData { +func (x *GetTaskQueueUserDataResponse) GetUserData() *v112.VersionedTaskQueueUserData { if x != nil { return x.UserData } return nil } -func (x *GetTaskQueueUserDataResponse) GetEphemeralData() *v18.VersionedEphemeralData { +func (x *GetTaskQueueUserDataResponse) GetEphemeralData() *v19.VersionedEphemeralData { if x != nil { return x.EphemeralData } @@ -2940,8 +2963,8 @@ type SyncDeploymentUserDataRequest struct { // (-- api-linter: core::0203::required=disabled // // aip.dev/not-precedent: Not following Google API format --) - DeploymentName string `protobuf:"bytes,9,opt,name=deployment_name,json=deploymentName,proto3" json:"deployment_name,omitempty"` - TaskQueueTypes []v19.TaskQueueType `protobuf:"varint,8,rep,packed,name=task_queue_types,json=taskQueueTypes,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_types,omitempty"` + DeploymentName string `protobuf:"bytes,9,opt,name=deployment_name,json=deploymentName,proto3" json:"deployment_name,omitempty"` + TaskQueueTypes []v110.TaskQueueType `protobuf:"varint,8,rep,packed,name=task_queue_types,json=taskQueueTypes,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_types,omitempty"` // Types that are valid to be assigned to Operation: // // *SyncDeploymentUserDataRequest_UpdateVersionData @@ -2949,12 +2972,12 @@ type SyncDeploymentUserDataRequest struct { Operation isSyncDeploymentUserDataRequest_Operation `protobuf_oneof:"operation"` // Absent means no change. // Ignored by the task queue if new revision number is not greater that what it has. - UpdateRoutingConfig *v112.RoutingConfig `protobuf:"bytes,10,opt,name=update_routing_config,json=updateRoutingConfig,proto3" json:"update_routing_config,omitempty"` + UpdateRoutingConfig *v113.RoutingConfig `protobuf:"bytes,10,opt,name=update_routing_config,json=updateRoutingConfig,proto3" json:"update_routing_config,omitempty"` // Optional map of build id to upsert version data. // (-- api-linter: core::0203::required=disabled // // aip.dev/not-precedent: Not following Google API format --) - UpsertVersionsData map[string]*v110.WorkerDeploymentVersionData `protobuf:"bytes,11,rep,name=upsert_versions_data,json=upsertVersionsData,proto3" json:"upsert_versions_data,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + UpsertVersionsData map[string]*v111.WorkerDeploymentVersionData `protobuf:"bytes,11,rep,name=upsert_versions_data,json=upsertVersionsData,proto3" json:"upsert_versions_data,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // List of build ids to forget from task queue. ForgetVersions []string `protobuf:"bytes,12,rep,name=forget_versions,json=forgetVersions,proto3" json:"forget_versions,omitempty"` unknownFields protoimpl.UnknownFields @@ -3012,7 +3035,7 @@ func (x *SyncDeploymentUserDataRequest) GetDeploymentName() string { return "" } -func (x *SyncDeploymentUserDataRequest) GetTaskQueueTypes() []v19.TaskQueueType { +func (x *SyncDeploymentUserDataRequest) GetTaskQueueTypes() []v110.TaskQueueType { if x != nil { return x.TaskQueueTypes } @@ -3027,7 +3050,7 @@ func (x *SyncDeploymentUserDataRequest) GetOperation() isSyncDeploymentUserDataR } // Deprecated: Marked as deprecated in temporal/server/api/matchingservice/v1/request_response.proto. -func (x *SyncDeploymentUserDataRequest) GetUpdateVersionData() *v110.DeploymentVersionData { +func (x *SyncDeploymentUserDataRequest) GetUpdateVersionData() *v111.DeploymentVersionData { if x != nil { if x, ok := x.Operation.(*SyncDeploymentUserDataRequest_UpdateVersionData); ok { return x.UpdateVersionData @@ -3037,7 +3060,7 @@ func (x *SyncDeploymentUserDataRequest) GetUpdateVersionData() *v110.DeploymentV } // Deprecated: Marked as deprecated in temporal/server/api/matchingservice/v1/request_response.proto. -func (x *SyncDeploymentUserDataRequest) GetForgetVersion() *v110.WorkerDeploymentVersion { +func (x *SyncDeploymentUserDataRequest) GetForgetVersion() *v111.WorkerDeploymentVersion { if x != nil { if x, ok := x.Operation.(*SyncDeploymentUserDataRequest_ForgetVersion); ok { return x.ForgetVersion @@ -3046,14 +3069,14 @@ func (x *SyncDeploymentUserDataRequest) GetForgetVersion() *v110.WorkerDeploymen return nil } -func (x *SyncDeploymentUserDataRequest) GetUpdateRoutingConfig() *v112.RoutingConfig { +func (x *SyncDeploymentUserDataRequest) GetUpdateRoutingConfig() *v113.RoutingConfig { if x != nil { return x.UpdateRoutingConfig } return nil } -func (x *SyncDeploymentUserDataRequest) GetUpsertVersionsData() map[string]*v110.WorkerDeploymentVersionData { +func (x *SyncDeploymentUserDataRequest) GetUpsertVersionsData() map[string]*v111.WorkerDeploymentVersionData { if x != nil { return x.UpsertVersionsData } @@ -3075,14 +3098,14 @@ type SyncDeploymentUserDataRequest_UpdateVersionData struct { // The deployment version and its data that is being updated. // // Deprecated: Marked as deprecated in temporal/server/api/matchingservice/v1/request_response.proto. - UpdateVersionData *v110.DeploymentVersionData `protobuf:"bytes,6,opt,name=update_version_data,json=updateVersionData,proto3,oneof"` + UpdateVersionData *v111.DeploymentVersionData `protobuf:"bytes,6,opt,name=update_version_data,json=updateVersionData,proto3,oneof"` } type SyncDeploymentUserDataRequest_ForgetVersion struct { // The version whose data should be cleaned from the task queue. // // Deprecated: Marked as deprecated in temporal/server/api/matchingservice/v1/request_response.proto. - ForgetVersion *v110.WorkerDeploymentVersion `protobuf:"bytes,7,opt,name=forget_version,json=forgetVersion,proto3,oneof"` + ForgetVersion *v111.WorkerDeploymentVersion `protobuf:"bytes,7,opt,name=forget_version,json=forgetVersion,proto3,oneof"` } func (*SyncDeploymentUserDataRequest_UpdateVersionData) isSyncDeploymentUserDataRequest_Operation() {} @@ -3151,7 +3174,7 @@ type ApplyTaskQueueUserDataReplicationEventRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` TaskQueue string `protobuf:"bytes,2,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` - UserData *v111.TaskQueueUserData `protobuf:"bytes,3,opt,name=user_data,json=userData,proto3" json:"user_data,omitempty"` + UserData *v112.TaskQueueUserData `protobuf:"bytes,3,opt,name=user_data,json=userData,proto3" json:"user_data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -3200,7 +3223,7 @@ func (x *ApplyTaskQueueUserDataReplicationEventRequest) GetTaskQueue() string { return "" } -func (x *ApplyTaskQueueUserDataReplicationEventRequest) GetUserData() *v111.TaskQueueUserData { +func (x *ApplyTaskQueueUserDataReplicationEventRequest) GetUserData() *v112.TaskQueueUserData { if x != nil { return x.UserData } @@ -3342,7 +3365,7 @@ func (x *GetBuildIdTaskQueueMappingResponse) GetTaskQueues() []string { type ForceLoadTaskQueuePartitionRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - TaskQueuePartition *v18.TaskQueuePartition `protobuf:"bytes,2,opt,name=task_queue_partition,json=taskQueuePartition,proto3" json:"task_queue_partition,omitempty"` + TaskQueuePartition *v19.TaskQueuePartition `protobuf:"bytes,2,opt,name=task_queue_partition,json=taskQueuePartition,proto3" json:"task_queue_partition,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -3384,7 +3407,7 @@ func (x *ForceLoadTaskQueuePartitionRequest) GetNamespaceId() string { return "" } -func (x *ForceLoadTaskQueuePartitionRequest) GetTaskQueuePartition() *v18.TaskQueuePartition { +func (x *ForceLoadTaskQueuePartitionRequest) GetTaskQueuePartition() *v19.TaskQueuePartition { if x != nil { return x.TaskQueuePartition } @@ -3440,7 +3463,7 @@ type ForceUnloadTaskQueueRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` TaskQueue string `protobuf:"bytes,2,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` - TaskQueueType v19.TaskQueueType `protobuf:"varint,3,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` + TaskQueueType v110.TaskQueueType `protobuf:"varint,3,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -3489,11 +3512,11 @@ func (x *ForceUnloadTaskQueueRequest) GetTaskQueue() string { return "" } -func (x *ForceUnloadTaskQueueRequest) GetTaskQueueType() v19.TaskQueueType { +func (x *ForceUnloadTaskQueueRequest) GetTaskQueueType() v110.TaskQueueType { if x != nil { return x.TaskQueueType } - return v19.TaskQueueType(0) + return v110.TaskQueueType(0) } // TODO Shivam - Please remove this in 123 @@ -3544,7 +3567,7 @@ func (x *ForceUnloadTaskQueueResponse) GetWasLoaded() bool { type ForceUnloadTaskQueuePartitionRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - TaskQueuePartition *v18.TaskQueuePartition `protobuf:"bytes,2,opt,name=task_queue_partition,json=taskQueuePartition,proto3" json:"task_queue_partition,omitempty"` + TaskQueuePartition *v19.TaskQueuePartition `protobuf:"bytes,2,opt,name=task_queue_partition,json=taskQueuePartition,proto3" json:"task_queue_partition,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -3586,7 +3609,7 @@ func (x *ForceUnloadTaskQueuePartitionRequest) GetNamespaceId() string { return "" } -func (x *ForceUnloadTaskQueuePartitionRequest) GetTaskQueuePartition() *v18.TaskQueuePartition { +func (x *ForceUnloadTaskQueuePartitionRequest) GetTaskQueuePartition() *v19.TaskQueuePartition { if x != nil { return x.TaskQueuePartition } @@ -3650,7 +3673,7 @@ type UpdateTaskQueueUserDataRequest struct { TaskQueue string `protobuf:"bytes,2,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` // Versioned user data, set if the task queue has user data and the request's last_known_user_data_version is less // than the version cached in the root partition. - UserData *v111.VersionedTaskQueueUserData `protobuf:"bytes,3,opt,name=user_data,json=userData,proto3" json:"user_data,omitempty"` + UserData *v112.VersionedTaskQueueUserData `protobuf:"bytes,3,opt,name=user_data,json=userData,proto3" json:"user_data,omitempty"` // List of added build ids BuildIdsAdded []string `protobuf:"bytes,4,rep,name=build_ids_added,json=buildIdsAdded,proto3" json:"build_ids_added,omitempty"` // List of removed build ids @@ -3703,7 +3726,7 @@ func (x *UpdateTaskQueueUserDataRequest) GetTaskQueue() string { return "" } -func (x *UpdateTaskQueueUserDataRequest) GetUserData() *v111.VersionedTaskQueueUserData { +func (x *UpdateTaskQueueUserDataRequest) GetUserData() *v112.VersionedTaskQueueUserData { if x != nil { return x.UserData } @@ -3764,7 +3787,7 @@ type ReplicateTaskQueueUserDataRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` TaskQueue string `protobuf:"bytes,2,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` - UserData *v111.TaskQueueUserData `protobuf:"bytes,3,opt,name=user_data,json=userData,proto3" json:"user_data,omitempty"` + UserData *v112.TaskQueueUserData `protobuf:"bytes,3,opt,name=user_data,json=userData,proto3" json:"user_data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -3813,7 +3836,7 @@ func (x *ReplicateTaskQueueUserDataRequest) GetTaskQueue() string { return "" } -func (x *ReplicateTaskQueueUserDataRequest) GetUserData() *v111.TaskQueueUserData { +func (x *ReplicateTaskQueueUserDataRequest) GetUserData() *v112.TaskQueueUserData { if x != nil { return x.UserData } @@ -3957,8 +3980,8 @@ type DispatchNexusTaskRequest struct { NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` TaskQueue *v14.TaskQueue `protobuf:"bytes,2,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` // Nexus request extracted by the frontend and translated into Temporal API format. - Request *v113.Request `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` - ForwardInfo *v18.TaskForwardInfo `protobuf:"bytes,4,opt,name=forward_info,json=forwardInfo,proto3" json:"forward_info,omitempty"` + Request *v114.Request `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` + ForwardInfo *v19.TaskForwardInfo `protobuf:"bytes,4,opt,name=forward_info,json=forwardInfo,proto3" json:"forward_info,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -4007,14 +4030,14 @@ func (x *DispatchNexusTaskRequest) GetTaskQueue() *v14.TaskQueue { return nil } -func (x *DispatchNexusTaskRequest) GetRequest() *v113.Request { +func (x *DispatchNexusTaskRequest) GetRequest() *v114.Request { if x != nil { return x.Request } return nil } -func (x *DispatchNexusTaskRequest) GetForwardInfo() *v18.TaskForwardInfo { +func (x *DispatchNexusTaskRequest) GetForwardInfo() *v19.TaskForwardInfo { if x != nil { return x.ForwardInfo } @@ -4072,7 +4095,7 @@ func (x *DispatchNexusTaskResponse) GetOutcome() isDispatchNexusTaskResponse_Out } // Deprecated: Marked as deprecated in temporal/server/api/matchingservice/v1/request_response.proto. -func (x *DispatchNexusTaskResponse) GetHandlerError() *v113.HandlerError { +func (x *DispatchNexusTaskResponse) GetHandlerError() *v114.HandlerError { if x != nil { if x, ok := x.Outcome.(*DispatchNexusTaskResponse_HandlerError); ok { return x.HandlerError @@ -4081,7 +4104,7 @@ func (x *DispatchNexusTaskResponse) GetHandlerError() *v113.HandlerError { return nil } -func (x *DispatchNexusTaskResponse) GetResponse() *v113.Response { +func (x *DispatchNexusTaskResponse) GetResponse() *v114.Response { if x != nil { if x, ok := x.Outcome.(*DispatchNexusTaskResponse_Response); ok { return x.Response @@ -4099,7 +4122,7 @@ func (x *DispatchNexusTaskResponse) GetRequestTimeout() *DispatchNexusTaskRespon return nil } -func (x *DispatchNexusTaskResponse) GetFailure() *v114.Failure { +func (x *DispatchNexusTaskResponse) GetFailure() *v115.Failure { if x != nil { if x, ok := x.Outcome.(*DispatchNexusTaskResponse_Failure); ok { return x.Failure @@ -4116,12 +4139,12 @@ type DispatchNexusTaskResponse_HandlerError struct { // Deprecated. Use failure field instead. // // Deprecated: Marked as deprecated in temporal/server/api/matchingservice/v1/request_response.proto. - HandlerError *v113.HandlerError `protobuf:"bytes,1,opt,name=handler_error,json=handlerError,proto3,oneof"` + HandlerError *v114.HandlerError `protobuf:"bytes,1,opt,name=handler_error,json=handlerError,proto3,oneof"` } type DispatchNexusTaskResponse_Response struct { // Set if the worker's handler responded successfully to the nexus task. - Response *v113.Response `protobuf:"bytes,2,opt,name=response,proto3,oneof"` + Response *v114.Response `protobuf:"bytes,2,opt,name=response,proto3,oneof"` } type DispatchNexusTaskResponse_RequestTimeout struct { @@ -4130,7 +4153,7 @@ type DispatchNexusTaskResponse_RequestTimeout struct { type DispatchNexusTaskResponse_Failure struct { // Set if the worker's handler failed the nexus task. Must contain a NexusHandlerFailureInfo object. - Failure *v114.Failure `protobuf:"bytes,4,opt,name=failure,proto3,oneof"` + Failure *v115.Failure `protobuf:"bytes,4,opt,name=failure,proto3,oneof"` } func (*DispatchNexusTaskResponse_HandlerError) isDispatchNexusTaskResponse_Outcome() {} @@ -4491,7 +4514,7 @@ func (*RespondNexusTaskFailedResponse) Descriptor() ([]byte, []int) { // aip.dev/not-precedent: CreateNexusEndpoint RPC doesn't follow Google API format. --) type CreateNexusEndpointRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - Spec *v111.NexusEndpointSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` + Spec *v112.NexusEndpointSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -4526,7 +4549,7 @@ func (*CreateNexusEndpointRequest) Descriptor() ([]byte, []int) { return file_temporal_server_api_matchingservice_v1_request_response_proto_rawDescGZIP(), []int{63} } -func (x *CreateNexusEndpointRequest) GetSpec() *v111.NexusEndpointSpec { +func (x *CreateNexusEndpointRequest) GetSpec() *v112.NexusEndpointSpec { if x != nil { return x.Spec } @@ -4535,7 +4558,7 @@ func (x *CreateNexusEndpointRequest) GetSpec() *v111.NexusEndpointSpec { type CreateNexusEndpointResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Entry *v111.NexusEndpointEntry `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"` + Entry *v112.NexusEndpointEntry `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -4570,7 +4593,7 @@ func (*CreateNexusEndpointResponse) Descriptor() ([]byte, []int) { return file_temporal_server_api_matchingservice_v1_request_response_proto_rawDescGZIP(), []int{64} } -func (x *CreateNexusEndpointResponse) GetEntry() *v111.NexusEndpointEntry { +func (x *CreateNexusEndpointResponse) GetEntry() *v112.NexusEndpointEntry { if x != nil { return x.Entry } @@ -4591,7 +4614,7 @@ type UpdateNexusEndpointRequest struct { // Version of the endpoint, used for optimistic concurrency. Must match current version in persistence or the // request will fail a FAILED_PRECONDITION error. Version int64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` - Spec *v111.NexusEndpointSpec `protobuf:"bytes,3,opt,name=spec,proto3" json:"spec,omitempty"` + Spec *v112.NexusEndpointSpec `protobuf:"bytes,3,opt,name=spec,proto3" json:"spec,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -4640,7 +4663,7 @@ func (x *UpdateNexusEndpointRequest) GetVersion() int64 { return 0 } -func (x *UpdateNexusEndpointRequest) GetSpec() *v111.NexusEndpointSpec { +func (x *UpdateNexusEndpointRequest) GetSpec() *v112.NexusEndpointSpec { if x != nil { return x.Spec } @@ -4649,7 +4672,7 @@ func (x *UpdateNexusEndpointRequest) GetSpec() *v111.NexusEndpointSpec { type UpdateNexusEndpointResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Entry *v111.NexusEndpointEntry `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"` + Entry *v112.NexusEndpointEntry `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -4684,7 +4707,7 @@ func (*UpdateNexusEndpointResponse) Descriptor() ([]byte, []int) { return file_temporal_server_api_matchingservice_v1_request_response_proto_rawDescGZIP(), []int{66} } -func (x *UpdateNexusEndpointResponse) GetEntry() *v111.NexusEndpointEntry { +func (x *UpdateNexusEndpointResponse) GetEntry() *v112.NexusEndpointEntry { if x != nil { return x.Entry } @@ -4863,7 +4886,7 @@ type ListNexusEndpointsResponse struct { // Token for getting the next page. NextPageToken []byte `protobuf:"bytes,1,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` TableVersion int64 `protobuf:"varint,2,opt,name=table_version,json=tableVersion,proto3" json:"table_version,omitempty"` - Entries []*v111.NexusEndpointEntry `protobuf:"bytes,3,rep,name=entries,proto3" json:"entries,omitempty"` + Entries []*v112.NexusEndpointEntry `protobuf:"bytes,3,rep,name=entries,proto3" json:"entries,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -4912,7 +4935,7 @@ func (x *ListNexusEndpointsResponse) GetTableVersion() int64 { return 0 } -func (x *ListNexusEndpointsResponse) GetEntries() []*v111.NexusEndpointEntry { +func (x *ListNexusEndpointsResponse) GetEntries() []*v112.NexusEndpointEntry { if x != nil { return x.Entries } @@ -5065,9 +5088,9 @@ type ListWorkersResponse struct { // includes expensive runtime metrics. We will stop populating this field in the future. // // Deprecated: Marked as deprecated in temporal/server/api/matchingservice/v1/request_response.proto. - WorkersInfo []*v115.WorkerInfo `protobuf:"bytes,1,rep,name=workers_info,json=workersInfo,proto3" json:"workers_info,omitempty"` + WorkersInfo []*v116.WorkerInfo `protobuf:"bytes,1,rep,name=workers_info,json=workersInfo,proto3" json:"workers_info,omitempty"` NextPageToken []byte `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - Workers []*v115.WorkerListInfo `protobuf:"bytes,3,rep,name=workers,proto3" json:"workers,omitempty"` + Workers []*v116.WorkerListInfo `protobuf:"bytes,3,rep,name=workers,proto3" json:"workers,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -5103,7 +5126,7 @@ func (*ListWorkersResponse) Descriptor() ([]byte, []int) { } // Deprecated: Marked as deprecated in temporal/server/api/matchingservice/v1/request_response.proto. -func (x *ListWorkersResponse) GetWorkersInfo() []*v115.WorkerInfo { +func (x *ListWorkersResponse) GetWorkersInfo() []*v116.WorkerInfo { if x != nil { return x.WorkersInfo } @@ -5117,7 +5140,7 @@ func (x *ListWorkersResponse) GetNextPageToken() []byte { return nil } -func (x *ListWorkersResponse) GetWorkers() []*v115.WorkerListInfo { +func (x *ListWorkersResponse) GetWorkers() []*v116.WorkerListInfo { if x != nil { return x.Workers } @@ -5382,7 +5405,7 @@ func (x *DescribeWorkerRequest) GetRequest() *v1.DescribeWorkerRequest { type DescribeWorkerResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - WorkerInfo *v115.WorkerInfo `protobuf:"bytes,1,opt,name=worker_info,json=workerInfo,proto3" json:"worker_info,omitempty"` + WorkerInfo *v116.WorkerInfo `protobuf:"bytes,1,opt,name=worker_info,json=workerInfo,proto3" json:"worker_info,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -5417,7 +5440,7 @@ func (*DescribeWorkerResponse) Descriptor() ([]byte, []int) { return file_temporal_server_api_matchingservice_v1_request_response_proto_rawDescGZIP(), []int{80} } -func (x *DescribeWorkerResponse) GetWorkerInfo() *v115.WorkerInfo { +func (x *DescribeWorkerResponse) GetWorkerInfo() *v116.WorkerInfo { if x != nil { return x.WorkerInfo } @@ -5439,8 +5462,8 @@ type UpdateFairnessStateRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` TaskQueue string `protobuf:"bytes,2,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` - TaskQueueType v19.TaskQueueType `protobuf:"varint,3,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` - FairnessState v116.FairnessState `protobuf:"varint,4,opt,name=fairness_state,json=fairnessState,proto3,enum=temporal.server.api.enums.v1.FairnessState" json:"fairness_state,omitempty"` + TaskQueueType v110.TaskQueueType `protobuf:"varint,3,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` + FairnessState v117.FairnessState `protobuf:"varint,4,opt,name=fairness_state,json=fairnessState,proto3,enum=temporal.server.api.enums.v1.FairnessState" json:"fairness_state,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -5489,18 +5512,18 @@ func (x *UpdateFairnessStateRequest) GetTaskQueue() string { return "" } -func (x *UpdateFairnessStateRequest) GetTaskQueueType() v19.TaskQueueType { +func (x *UpdateFairnessStateRequest) GetTaskQueueType() v110.TaskQueueType { if x != nil { return x.TaskQueueType } - return v19.TaskQueueType(0) + return v110.TaskQueueType(0) } -func (x *UpdateFairnessStateRequest) GetFairnessState() v116.FairnessState { +func (x *UpdateFairnessStateRequest) GetFairnessState() v117.FairnessState { if x != nil { return x.FairnessState } - return v116.FairnessState(0) + return v117.FairnessState(0) } type UpdateFairnessStateResponse struct { @@ -5543,8 +5566,8 @@ type CheckTaskQueueVersionMembershipRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` TaskQueue string `protobuf:"bytes,2,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` - TaskQueueType v19.TaskQueueType `protobuf:"varint,3,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` - Version *v110.WorkerDeploymentVersion `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` + TaskQueueType v110.TaskQueueType `protobuf:"varint,3,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` + Version *v111.WorkerDeploymentVersion `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -5593,14 +5616,14 @@ func (x *CheckTaskQueueVersionMembershipRequest) GetTaskQueue() string { return "" } -func (x *CheckTaskQueueVersionMembershipRequest) GetTaskQueueType() v19.TaskQueueType { +func (x *CheckTaskQueueVersionMembershipRequest) GetTaskQueueType() v110.TaskQueueType { if x != nil { return x.TaskQueueType } - return v19.TaskQueueType(0) + return v110.TaskQueueType(0) } -func (x *CheckTaskQueueVersionMembershipRequest) GetVersion() *v110.WorkerDeploymentVersion { +func (x *CheckTaskQueueVersionMembershipRequest) GetVersion() *v111.WorkerDeploymentVersion { if x != nil { return x.Version } @@ -5799,7 +5822,7 @@ func (x *CancelOutstandingWorkerPollsPartitionRequest_WorkerEntry) GetWorkerIden type DescribeVersionedTaskQueuesRequest_VersionTaskQueue struct { state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Type v19.TaskQueueType `protobuf:"varint,2,opt,name=type,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"type,omitempty"` + Type v110.TaskQueueType `protobuf:"varint,2,opt,name=type,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"type,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -5841,18 +5864,18 @@ func (x *DescribeVersionedTaskQueuesRequest_VersionTaskQueue) GetName() string { return "" } -func (x *DescribeVersionedTaskQueuesRequest_VersionTaskQueue) GetType() v19.TaskQueueType { +func (x *DescribeVersionedTaskQueuesRequest_VersionTaskQueue) GetType() v110.TaskQueueType { if x != nil { return x.Type } - return v19.TaskQueueType(0) + return v110.TaskQueueType(0) } // (-- api-linter: core::0123::resource-annotation=disabled --) type DescribeVersionedTaskQueuesResponse_VersionTaskQueue struct { state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Type v19.TaskQueueType `protobuf:"varint,2,opt,name=type,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"type,omitempty"` + Type v110.TaskQueueType `protobuf:"varint,2,opt,name=type,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"type,omitempty"` Stats *v14.TaskQueueStats `protobuf:"bytes,3,opt,name=stats,proto3" json:"stats,omitempty"` // (-- api-linter: core::0140::prepositions=disabled // @@ -5899,11 +5922,11 @@ func (x *DescribeVersionedTaskQueuesResponse_VersionTaskQueue) GetName() string return "" } -func (x *DescribeVersionedTaskQueuesResponse_VersionTaskQueue) GetType() v19.TaskQueueType { +func (x *DescribeVersionedTaskQueuesResponse_VersionTaskQueue) GetType() v110.TaskQueueType { if x != nil { return x.Type } - return v19.TaskQueueType(0) + return v110.TaskQueueType(0) } func (x *DescribeVersionedTaskQueuesResponse_VersionTaskQueue) GetStats() *v14.TaskQueueStats { @@ -6060,7 +6083,7 @@ var File_temporal_server_api_matchingservice_v1_request_response_proto protorefl const file_temporal_server_api_matchingservice_v1_request_response_proto_rawDesc = "" + "\n" + - "=temporal/server/api/matchingservice/v1/request_response.proto\x12&temporal.server.api.matchingservice.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a$temporal/api/common/v1/message.proto\x1a(temporal/api/deployment/v1/message.proto\x1a&temporal/api/enums/v1/task_queue.proto\x1a%temporal/api/failure/v1/message.proto\x1a%temporal/api/history/v1/message.proto\x1a#temporal/api/nexus/v1/message.proto\x1a&temporal/api/protocol/v1/message.proto\x1a#temporal/api/query/v1/message.proto\x1a'temporal/api/taskqueue/v1/message.proto\x1a$temporal/api/worker/v1/message.proto\x1a6temporal/api/workflowservice/v1/request_response.proto\x1a*temporal/server/api/clock/v1/message.proto\x1a/temporal/server/api/deployment/v1/message.proto\x1a1temporal/server/api/enums/v1/fairness_state.proto\x1a,temporal/server/api/history/v1/message.proto\x1a.temporal/server/api/persistence/v1/nexus.proto\x1a4temporal/server/api/persistence/v1/task_queues.proto\x1a.temporal/server/api/taskqueue/v1/message.proto\"\xc3\x02\n" + + "=temporal/server/api/matchingservice/v1/request_response.proto\x12&temporal.server.api.matchingservice.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a$temporal/api/common/v1/message.proto\x1a(temporal/api/deployment/v1/message.proto\x1a&temporal/api/enums/v1/task_queue.proto\x1a%temporal/api/failure/v1/message.proto\x1a%temporal/api/history/v1/message.proto\x1a#temporal/api/nexus/v1/message.proto\x1a&temporal/api/protocol/v1/message.proto\x1a#temporal/api/query/v1/message.proto\x1a$temporal/api/stream/v1/message.proto\x1a'temporal/api/taskqueue/v1/message.proto\x1a$temporal/api/worker/v1/message.proto\x1a6temporal/api/workflowservice/v1/request_response.proto\x1a*temporal/server/api/clock/v1/message.proto\x1a/temporal/server/api/deployment/v1/message.proto\x1a1temporal/server/api/enums/v1/fairness_state.proto\x1a,temporal/server/api/history/v1/message.proto\x1a.temporal/server/api/persistence/v1/nexus.proto\x1a4temporal/server/api/persistence/v1/task_queues.proto\x1a.temporal/server/api/taskqueue/v1/message.proto\"\xc3\x02\n" + "\x1cPollWorkflowTaskQueueRequest\x12!\n" + "\fnamespace_id\x18\x01 \x01(\tR\vnamespaceId\x12\x1b\n" + "\tpoller_id\x18\x02 \x01(\tR\bpollerId\x12`\n" + @@ -6068,7 +6091,7 @@ const file_temporal_server_api_matchingservice_v1_request_response_proto_rawDesc "\x10forwarded_source\x18\x04 \x01(\tR\x0fforwardedSource\x12V\n" + "\n" + "conditions\x18\x05 \x01(\v26.temporal.server.api.matchingservice.v1.PollConditionsR\n" + - "conditions\"\xd1\v\n" + + "conditions\"\x9b\f\n" + "\x1dPollWorkflowTaskQueueResponse\x12\x1d\n" + "\n" + "task_token\x18\x01 \x01(\fR\ttaskToken\x12X\n" + @@ -6093,10 +6116,11 @@ const file_temporal_server_api_matchingservice_v1_request_response_proto_rawDesc "\x0fnext_page_token\x18\x14 \x01(\fR\rnextPageToken\x12h\n" + "\x17poller_scaling_decision\x18\x15 \x01(\v20.temporal.api.taskqueue.v1.PollerScalingDecisionR\x15pollerScalingDecision\x12A\n" + "\vraw_history\x18\x16 \x01(\v2 .temporal.api.history.v1.HistoryR\n" + - "rawHistory\x1a`\n" + + "rawHistory\x12H\n" + + "\rstream_slices\x18\x17 \x03(\v2#.temporal.api.stream.v1.StreamSliceR\fstreamSlices\x1a`\n" + "\fQueriesEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12:\n" + - "\x05value\x18\x02 \x01(\v2$.temporal.api.query.v1.WorkflowQueryR\x05value:\x028\x01J\x04\b\r\x10\x0e\"\xcb\v\n" + + "\x05value\x18\x02 \x01(\v2$.temporal.api.query.v1.WorkflowQueryR\x05value:\x028\x01J\x04\b\r\x10\x0e\"\x95\f\n" + "+PollWorkflowTaskQueueResponseWithRawHistory\x12\x1d\n" + "\n" + "task_token\x18\x01 \x01(\fR\ttaskToken\x12X\n" + @@ -6121,7 +6145,8 @@ const file_temporal_server_api_matchingservice_v1_request_response_proto_rawDesc "\x0fnext_page_token\x18\x14 \x01(\fR\rnextPageToken\x12h\n" + "\x17poller_scaling_decision\x18\x15 \x01(\v20.temporal.api.taskqueue.v1.PollerScalingDecisionR\x15pollerScalingDecision\x12\x1f\n" + "\vraw_history\x18\x16 \x03(\fR\n" + - "rawHistory\x1a`\n" + + "rawHistory\x12H\n" + + "\rstream_slices\x18\x17 \x03(\v2#.temporal.api.stream.v1.StreamSliceR\fstreamSlices\x1a`\n" + "\fQueriesEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12:\n" + "\x05value\x18\x02 \x01(\v2$.temporal.api.query.v1.WorkflowQueryR\x05value:\x028\x01J\x04\b\r\x10\x0e\"\xc3\x02\n" + @@ -6629,61 +6654,62 @@ var file_temporal_server_api_matchingservice_v1_request_response_proto_goTypes = (*v15.Message)(nil), // 104: temporal.api.protocol.v1.Message (*v16.History)(nil), // 105: temporal.api.history.v1.History (*v14.PollerScalingDecision)(nil), // 106: temporal.api.taskqueue.v1.PollerScalingDecision - (*v1.PollActivityTaskQueueRequest)(nil), // 107: temporal.api.workflowservice.v1.PollActivityTaskQueueRequest - (*v11.ActivityType)(nil), // 108: temporal.api.common.v1.ActivityType - (*v11.Payloads)(nil), // 109: temporal.api.common.v1.Payloads - (*durationpb.Duration)(nil), // 110: google.protobuf.Duration - (*v11.Header)(nil), // 111: temporal.api.common.v1.Header - (*v11.Priority)(nil), // 112: temporal.api.common.v1.Priority - (*v11.RetryPolicy)(nil), // 113: temporal.api.common.v1.RetryPolicy - (*v17.VectorClock)(nil), // 114: temporal.server.api.clock.v1.VectorClock - (*v18.TaskVersionDirective)(nil), // 115: temporal.server.api.taskqueue.v1.TaskVersionDirective - (*v18.TaskForwardInfo)(nil), // 116: temporal.server.api.taskqueue.v1.TaskForwardInfo - (*v1.QueryWorkflowRequest)(nil), // 117: temporal.api.workflowservice.v1.QueryWorkflowRequest - (*v12.QueryRejected)(nil), // 118: temporal.api.query.v1.QueryRejected - (*v1.RespondQueryTaskCompletedRequest)(nil), // 119: temporal.api.workflowservice.v1.RespondQueryTaskCompletedRequest - (v19.TaskQueueType)(0), // 120: temporal.api.enums.v1.TaskQueueType - (*v18.TaskQueuePartition)(nil), // 121: temporal.server.api.taskqueue.v1.TaskQueuePartition - (*v1.DescribeTaskQueueRequest)(nil), // 122: temporal.api.workflowservice.v1.DescribeTaskQueueRequest - (*v110.WorkerDeploymentVersion)(nil), // 123: temporal.server.api.deployment.v1.WorkerDeploymentVersion - (*v1.DescribeTaskQueueResponse)(nil), // 124: temporal.api.workflowservice.v1.DescribeTaskQueueResponse - (*v14.TaskQueueVersionSelection)(nil), // 125: temporal.api.taskqueue.v1.TaskQueueVersionSelection - (*v18.PartitionScaleInfo)(nil), // 126: temporal.server.api.taskqueue.v1.PartitionScaleInfo - (*v14.TaskQueuePartitionMetadata)(nil), // 127: temporal.api.taskqueue.v1.TaskQueuePartitionMetadata - (*v1.GetWorkerVersioningRulesRequest)(nil), // 128: temporal.api.workflowservice.v1.GetWorkerVersioningRulesRequest - (*v1.GetWorkerVersioningRulesResponse)(nil), // 129: temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse - (*v1.UpdateWorkerVersioningRulesRequest)(nil), // 130: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest - (*v1.UpdateWorkerVersioningRulesResponse)(nil), // 131: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse - (*v1.GetWorkerBuildIdCompatibilityRequest)(nil), // 132: temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityRequest - (*v1.GetWorkerBuildIdCompatibilityResponse)(nil), // 133: temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse - (*v111.VersionedTaskQueueUserData)(nil), // 134: temporal.server.api.persistence.v1.VersionedTaskQueueUserData - (*v18.VersionedEphemeralData)(nil), // 135: temporal.server.api.taskqueue.v1.VersionedEphemeralData - (*v110.DeploymentVersionData)(nil), // 136: temporal.server.api.deployment.v1.DeploymentVersionData - (*v112.RoutingConfig)(nil), // 137: temporal.api.deployment.v1.RoutingConfig - (*v111.TaskQueueUserData)(nil), // 138: temporal.server.api.persistence.v1.TaskQueueUserData - (*v113.Request)(nil), // 139: temporal.api.nexus.v1.Request - (*v113.HandlerError)(nil), // 140: temporal.api.nexus.v1.HandlerError - (*v113.Response)(nil), // 141: temporal.api.nexus.v1.Response - (*v114.Failure)(nil), // 142: temporal.api.failure.v1.Failure - (*v1.PollNexusTaskQueueRequest)(nil), // 143: temporal.api.workflowservice.v1.PollNexusTaskQueueRequest - (*v1.PollNexusTaskQueueResponse)(nil), // 144: temporal.api.workflowservice.v1.PollNexusTaskQueueResponse - (*v1.RespondNexusTaskCompletedRequest)(nil), // 145: temporal.api.workflowservice.v1.RespondNexusTaskCompletedRequest - (*v1.RespondNexusTaskFailedRequest)(nil), // 146: temporal.api.workflowservice.v1.RespondNexusTaskFailedRequest - (*v111.NexusEndpointSpec)(nil), // 147: temporal.server.api.persistence.v1.NexusEndpointSpec - (*v111.NexusEndpointEntry)(nil), // 148: temporal.server.api.persistence.v1.NexusEndpointEntry - (*v1.RecordWorkerHeartbeatRequest)(nil), // 149: temporal.api.workflowservice.v1.RecordWorkerHeartbeatRequest - (*v1.ListWorkersRequest)(nil), // 150: temporal.api.workflowservice.v1.ListWorkersRequest - (*v115.WorkerInfo)(nil), // 151: temporal.api.worker.v1.WorkerInfo - (*v115.WorkerListInfo)(nil), // 152: temporal.api.worker.v1.WorkerListInfo - (*v1.CountWorkersRequest)(nil), // 153: temporal.api.workflowservice.v1.CountWorkersRequest - (*v1.UpdateTaskQueueConfigRequest)(nil), // 154: temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest - (*v14.TaskQueueConfig)(nil), // 155: temporal.api.taskqueue.v1.TaskQueueConfig - (*v1.DescribeWorkerRequest)(nil), // 156: temporal.api.workflowservice.v1.DescribeWorkerRequest - (v116.FairnessState)(0), // 157: temporal.server.api.enums.v1.FairnessState - (*v14.TaskQueueStats)(nil), // 158: temporal.api.taskqueue.v1.TaskQueueStats - (*v18.TaskQueueVersionInfoInternal)(nil), // 159: temporal.server.api.taskqueue.v1.TaskQueueVersionInfoInternal - (*v1.UpdateWorkerBuildIdCompatibilityRequest)(nil), // 160: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest - (*v110.WorkerDeploymentVersionData)(nil), // 161: temporal.server.api.deployment.v1.WorkerDeploymentVersionData + (*v17.StreamSlice)(nil), // 107: temporal.api.stream.v1.StreamSlice + (*v1.PollActivityTaskQueueRequest)(nil), // 108: temporal.api.workflowservice.v1.PollActivityTaskQueueRequest + (*v11.ActivityType)(nil), // 109: temporal.api.common.v1.ActivityType + (*v11.Payloads)(nil), // 110: temporal.api.common.v1.Payloads + (*durationpb.Duration)(nil), // 111: google.protobuf.Duration + (*v11.Header)(nil), // 112: temporal.api.common.v1.Header + (*v11.Priority)(nil), // 113: temporal.api.common.v1.Priority + (*v11.RetryPolicy)(nil), // 114: temporal.api.common.v1.RetryPolicy + (*v18.VectorClock)(nil), // 115: temporal.server.api.clock.v1.VectorClock + (*v19.TaskVersionDirective)(nil), // 116: temporal.server.api.taskqueue.v1.TaskVersionDirective + (*v19.TaskForwardInfo)(nil), // 117: temporal.server.api.taskqueue.v1.TaskForwardInfo + (*v1.QueryWorkflowRequest)(nil), // 118: temporal.api.workflowservice.v1.QueryWorkflowRequest + (*v12.QueryRejected)(nil), // 119: temporal.api.query.v1.QueryRejected + (*v1.RespondQueryTaskCompletedRequest)(nil), // 120: temporal.api.workflowservice.v1.RespondQueryTaskCompletedRequest + (v110.TaskQueueType)(0), // 121: temporal.api.enums.v1.TaskQueueType + (*v19.TaskQueuePartition)(nil), // 122: temporal.server.api.taskqueue.v1.TaskQueuePartition + (*v1.DescribeTaskQueueRequest)(nil), // 123: temporal.api.workflowservice.v1.DescribeTaskQueueRequest + (*v111.WorkerDeploymentVersion)(nil), // 124: temporal.server.api.deployment.v1.WorkerDeploymentVersion + (*v1.DescribeTaskQueueResponse)(nil), // 125: temporal.api.workflowservice.v1.DescribeTaskQueueResponse + (*v14.TaskQueueVersionSelection)(nil), // 126: temporal.api.taskqueue.v1.TaskQueueVersionSelection + (*v19.PartitionScaleInfo)(nil), // 127: temporal.server.api.taskqueue.v1.PartitionScaleInfo + (*v14.TaskQueuePartitionMetadata)(nil), // 128: temporal.api.taskqueue.v1.TaskQueuePartitionMetadata + (*v1.GetWorkerVersioningRulesRequest)(nil), // 129: temporal.api.workflowservice.v1.GetWorkerVersioningRulesRequest + (*v1.GetWorkerVersioningRulesResponse)(nil), // 130: temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse + (*v1.UpdateWorkerVersioningRulesRequest)(nil), // 131: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest + (*v1.UpdateWorkerVersioningRulesResponse)(nil), // 132: temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse + (*v1.GetWorkerBuildIdCompatibilityRequest)(nil), // 133: temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityRequest + (*v1.GetWorkerBuildIdCompatibilityResponse)(nil), // 134: temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse + (*v112.VersionedTaskQueueUserData)(nil), // 135: temporal.server.api.persistence.v1.VersionedTaskQueueUserData + (*v19.VersionedEphemeralData)(nil), // 136: temporal.server.api.taskqueue.v1.VersionedEphemeralData + (*v111.DeploymentVersionData)(nil), // 137: temporal.server.api.deployment.v1.DeploymentVersionData + (*v113.RoutingConfig)(nil), // 138: temporal.api.deployment.v1.RoutingConfig + (*v112.TaskQueueUserData)(nil), // 139: temporal.server.api.persistence.v1.TaskQueueUserData + (*v114.Request)(nil), // 140: temporal.api.nexus.v1.Request + (*v114.HandlerError)(nil), // 141: temporal.api.nexus.v1.HandlerError + (*v114.Response)(nil), // 142: temporal.api.nexus.v1.Response + (*v115.Failure)(nil), // 143: temporal.api.failure.v1.Failure + (*v1.PollNexusTaskQueueRequest)(nil), // 144: temporal.api.workflowservice.v1.PollNexusTaskQueueRequest + (*v1.PollNexusTaskQueueResponse)(nil), // 145: temporal.api.workflowservice.v1.PollNexusTaskQueueResponse + (*v1.RespondNexusTaskCompletedRequest)(nil), // 146: temporal.api.workflowservice.v1.RespondNexusTaskCompletedRequest + (*v1.RespondNexusTaskFailedRequest)(nil), // 147: temporal.api.workflowservice.v1.RespondNexusTaskFailedRequest + (*v112.NexusEndpointSpec)(nil), // 148: temporal.server.api.persistence.v1.NexusEndpointSpec + (*v112.NexusEndpointEntry)(nil), // 149: temporal.server.api.persistence.v1.NexusEndpointEntry + (*v1.RecordWorkerHeartbeatRequest)(nil), // 150: temporal.api.workflowservice.v1.RecordWorkerHeartbeatRequest + (*v1.ListWorkersRequest)(nil), // 151: temporal.api.workflowservice.v1.ListWorkersRequest + (*v116.WorkerInfo)(nil), // 152: temporal.api.worker.v1.WorkerInfo + (*v116.WorkerListInfo)(nil), // 153: temporal.api.worker.v1.WorkerListInfo + (*v1.CountWorkersRequest)(nil), // 154: temporal.api.workflowservice.v1.CountWorkersRequest + (*v1.UpdateTaskQueueConfigRequest)(nil), // 155: temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest + (*v14.TaskQueueConfig)(nil), // 156: temporal.api.taskqueue.v1.TaskQueueConfig + (*v1.DescribeWorkerRequest)(nil), // 157: temporal.api.workflowservice.v1.DescribeWorkerRequest + (v117.FairnessState)(0), // 158: temporal.server.api.enums.v1.FairnessState + (*v14.TaskQueueStats)(nil), // 159: temporal.api.taskqueue.v1.TaskQueueStats + (*v19.TaskQueueVersionInfoInternal)(nil), // 160: temporal.server.api.taskqueue.v1.TaskQueueVersionInfoInternal + (*v1.UpdateWorkerBuildIdCompatibilityRequest)(nil), // 161: temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest + (*v111.WorkerDeploymentVersionData)(nil), // 162: temporal.server.api.deployment.v1.WorkerDeploymentVersionData } var file_temporal_server_api_matchingservice_v1_request_response_proto_depIdxs = []int32{ 97, // 0: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueRequest.poll_request:type_name -> temporal.api.workflowservice.v1.PollWorkflowTaskQueueRequest @@ -6700,148 +6726,150 @@ var file_temporal_server_api_matchingservice_v1_request_response_proto_depIdxs = 105, // 11: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.history:type_name -> temporal.api.history.v1.History 106, // 12: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.poller_scaling_decision:type_name -> temporal.api.taskqueue.v1.PollerScalingDecision 105, // 13: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.raw_history:type_name -> temporal.api.history.v1.History - 98, // 14: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 99, // 15: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.workflow_type:type_name -> temporal.api.common.v1.WorkflowType - 100, // 16: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.query:type_name -> temporal.api.query.v1.WorkflowQuery - 101, // 17: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.transient_workflow_task:type_name -> temporal.server.api.history.v1.TransientWorkflowTaskInfo - 102, // 18: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.workflow_execution_task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 103, // 19: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.scheduled_time:type_name -> google.protobuf.Timestamp - 103, // 20: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.started_time:type_name -> google.protobuf.Timestamp - 87, // 21: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.queries:type_name -> temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.QueriesEntry - 104, // 22: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.messages:type_name -> temporal.api.protocol.v1.Message - 105, // 23: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.history:type_name -> temporal.api.history.v1.History - 106, // 24: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.poller_scaling_decision:type_name -> temporal.api.taskqueue.v1.PollerScalingDecision - 107, // 25: temporal.server.api.matchingservice.v1.PollActivityTaskQueueRequest.poll_request:type_name -> temporal.api.workflowservice.v1.PollActivityTaskQueueRequest - 85, // 26: temporal.server.api.matchingservice.v1.PollActivityTaskQueueRequest.conditions:type_name -> temporal.server.api.matchingservice.v1.PollConditions - 98, // 27: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 108, // 28: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.activity_type:type_name -> temporal.api.common.v1.ActivityType - 109, // 29: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.input:type_name -> temporal.api.common.v1.Payloads - 103, // 30: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.scheduled_time:type_name -> google.protobuf.Timestamp - 110, // 31: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.schedule_to_close_timeout:type_name -> google.protobuf.Duration - 103, // 32: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.started_time:type_name -> google.protobuf.Timestamp - 110, // 33: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.start_to_close_timeout:type_name -> google.protobuf.Duration - 110, // 34: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.heartbeat_timeout:type_name -> google.protobuf.Duration - 103, // 35: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.current_attempt_scheduled_time:type_name -> google.protobuf.Timestamp - 109, // 36: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.heartbeat_details:type_name -> temporal.api.common.v1.Payloads - 99, // 37: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.workflow_type:type_name -> temporal.api.common.v1.WorkflowType - 111, // 38: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.header:type_name -> temporal.api.common.v1.Header - 106, // 39: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.poller_scaling_decision:type_name -> temporal.api.taskqueue.v1.PollerScalingDecision - 112, // 40: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.priority:type_name -> temporal.api.common.v1.Priority - 113, // 41: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.retry_policy:type_name -> temporal.api.common.v1.RetryPolicy - 98, // 42: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 102, // 43: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 110, // 44: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.schedule_to_start_timeout:type_name -> google.protobuf.Duration - 114, // 45: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 115, // 46: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective - 116, // 47: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo - 112, // 48: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.priority:type_name -> temporal.api.common.v1.Priority - 98, // 49: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 102, // 50: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 110, // 51: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.schedule_to_start_timeout:type_name -> google.protobuf.Duration - 114, // 52: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 115, // 53: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective - 116, // 54: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo - 112, // 55: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.priority:type_name -> temporal.api.common.v1.Priority - 102, // 56: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 117, // 57: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.query_request:type_name -> temporal.api.workflowservice.v1.QueryWorkflowRequest - 115, // 58: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective - 116, // 59: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo - 112, // 60: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.priority:type_name -> temporal.api.common.v1.Priority - 109, // 61: temporal.server.api.matchingservice.v1.QueryWorkflowResponse.query_result:type_name -> temporal.api.common.v1.Payloads - 118, // 62: temporal.server.api.matchingservice.v1.QueryWorkflowResponse.query_rejected:type_name -> temporal.api.query.v1.QueryRejected - 102, // 63: temporal.server.api.matchingservice.v1.RespondQueryTaskCompletedRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 119, // 64: temporal.server.api.matchingservice.v1.RespondQueryTaskCompletedRequest.completed_request:type_name -> temporal.api.workflowservice.v1.RespondQueryTaskCompletedRequest - 120, // 65: temporal.server.api.matchingservice.v1.CancelOutstandingPollRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType - 102, // 66: temporal.server.api.matchingservice.v1.CancelOutstandingPollRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 102, // 67: temporal.server.api.matchingservice.v1.CancelOutstandingWorkerPollsRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 120, // 68: temporal.server.api.matchingservice.v1.CancelOutstandingWorkerPollsRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType - 121, // 69: temporal.server.api.matchingservice.v1.CancelOutstandingWorkerPollsPartitionRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition - 121, // 70: temporal.server.api.matchingservice.v1.CancelOutstandingWorkerPollsPartitionRequest.partitions:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition - 88, // 71: temporal.server.api.matchingservice.v1.CancelOutstandingWorkerPollsPartitionRequest.workers:type_name -> temporal.server.api.matchingservice.v1.CancelOutstandingWorkerPollsPartitionRequest.WorkerEntry - 122, // 72: temporal.server.api.matchingservice.v1.DescribeTaskQueueRequest.desc_request:type_name -> temporal.api.workflowservice.v1.DescribeTaskQueueRequest - 123, // 73: temporal.server.api.matchingservice.v1.DescribeTaskQueueRequest.version:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentVersion - 124, // 74: temporal.server.api.matchingservice.v1.DescribeTaskQueueResponse.desc_response:type_name -> temporal.api.workflowservice.v1.DescribeTaskQueueResponse - 120, // 75: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType - 102, // 76: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 123, // 77: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesRequest.version:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentVersion - 89, // 78: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesRequest.version_task_queues:type_name -> temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesRequest.VersionTaskQueue - 90, // 79: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesResponse.version_task_queues:type_name -> temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesResponse.VersionTaskQueue - 121, // 80: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition - 125, // 81: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionRequest.versions:type_name -> temporal.api.taskqueue.v1.TaskQueueVersionSelection - 92, // 82: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse.versions_info_internal:type_name -> temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse.VersionsInfoInternalEntry - 126, // 83: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse.scale_info:type_name -> temporal.server.api.taskqueue.v1.PartitionScaleInfo - 102, // 84: temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 127, // 85: temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsResponse.activity_task_queue_partitions:type_name -> temporal.api.taskqueue.v1.TaskQueuePartitionMetadata - 127, // 86: temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsResponse.workflow_task_queue_partitions:type_name -> temporal.api.taskqueue.v1.TaskQueuePartitionMetadata - 93, // 87: temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.apply_public_request:type_name -> temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.ApplyPublicRequest - 94, // 88: temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.remove_build_ids:type_name -> temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.RemoveBuildIds - 128, // 89: temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesRequest.request:type_name -> temporal.api.workflowservice.v1.GetWorkerVersioningRulesRequest - 129, // 90: temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesResponse.response:type_name -> temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse - 130, // 91: temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesRequest.request:type_name -> temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest - 131, // 92: temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesResponse.response:type_name -> temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse - 132, // 93: temporal.server.api.matchingservice.v1.GetWorkerBuildIdCompatibilityRequest.request:type_name -> temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityRequest - 133, // 94: temporal.server.api.matchingservice.v1.GetWorkerBuildIdCompatibilityResponse.response:type_name -> temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse - 120, // 95: temporal.server.api.matchingservice.v1.GetTaskQueueUserDataRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType - 134, // 96: temporal.server.api.matchingservice.v1.GetTaskQueueUserDataResponse.user_data:type_name -> temporal.server.api.persistence.v1.VersionedTaskQueueUserData - 135, // 97: temporal.server.api.matchingservice.v1.GetTaskQueueUserDataResponse.ephemeral_data:type_name -> temporal.server.api.taskqueue.v1.VersionedEphemeralData - 120, // 98: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.task_queue_types:type_name -> temporal.api.enums.v1.TaskQueueType - 136, // 99: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.update_version_data:type_name -> temporal.server.api.deployment.v1.DeploymentVersionData - 123, // 100: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.forget_version:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentVersion - 137, // 101: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.update_routing_config:type_name -> temporal.api.deployment.v1.RoutingConfig - 95, // 102: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.upsert_versions_data:type_name -> temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.UpsertVersionsDataEntry - 138, // 103: temporal.server.api.matchingservice.v1.ApplyTaskQueueUserDataReplicationEventRequest.user_data:type_name -> temporal.server.api.persistence.v1.TaskQueueUserData - 121, // 104: temporal.server.api.matchingservice.v1.ForceLoadTaskQueuePartitionRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition - 120, // 105: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueueRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType - 121, // 106: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueuePartitionRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition - 134, // 107: temporal.server.api.matchingservice.v1.UpdateTaskQueueUserDataRequest.user_data:type_name -> temporal.server.api.persistence.v1.VersionedTaskQueueUserData - 138, // 108: temporal.server.api.matchingservice.v1.ReplicateTaskQueueUserDataRequest.user_data:type_name -> temporal.server.api.persistence.v1.TaskQueueUserData - 102, // 109: temporal.server.api.matchingservice.v1.DispatchNexusTaskRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 139, // 110: temporal.server.api.matchingservice.v1.DispatchNexusTaskRequest.request:type_name -> temporal.api.nexus.v1.Request - 116, // 111: temporal.server.api.matchingservice.v1.DispatchNexusTaskRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo - 140, // 112: temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse.handler_error:type_name -> temporal.api.nexus.v1.HandlerError - 141, // 113: temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse.response:type_name -> temporal.api.nexus.v1.Response - 96, // 114: temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse.request_timeout:type_name -> temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse.Timeout - 142, // 115: temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse.failure:type_name -> temporal.api.failure.v1.Failure - 143, // 116: temporal.server.api.matchingservice.v1.PollNexusTaskQueueRequest.request:type_name -> temporal.api.workflowservice.v1.PollNexusTaskQueueRequest - 85, // 117: temporal.server.api.matchingservice.v1.PollNexusTaskQueueRequest.conditions:type_name -> temporal.server.api.matchingservice.v1.PollConditions - 144, // 118: temporal.server.api.matchingservice.v1.PollNexusTaskQueueResponse.response:type_name -> temporal.api.workflowservice.v1.PollNexusTaskQueueResponse - 102, // 119: temporal.server.api.matchingservice.v1.RespondNexusTaskCompletedRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 145, // 120: temporal.server.api.matchingservice.v1.RespondNexusTaskCompletedRequest.request:type_name -> temporal.api.workflowservice.v1.RespondNexusTaskCompletedRequest - 102, // 121: temporal.server.api.matchingservice.v1.RespondNexusTaskFailedRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 146, // 122: temporal.server.api.matchingservice.v1.RespondNexusTaskFailedRequest.request:type_name -> temporal.api.workflowservice.v1.RespondNexusTaskFailedRequest - 147, // 123: temporal.server.api.matchingservice.v1.CreateNexusEndpointRequest.spec:type_name -> temporal.server.api.persistence.v1.NexusEndpointSpec - 148, // 124: temporal.server.api.matchingservice.v1.CreateNexusEndpointResponse.entry:type_name -> temporal.server.api.persistence.v1.NexusEndpointEntry - 147, // 125: temporal.server.api.matchingservice.v1.UpdateNexusEndpointRequest.spec:type_name -> temporal.server.api.persistence.v1.NexusEndpointSpec - 148, // 126: temporal.server.api.matchingservice.v1.UpdateNexusEndpointResponse.entry:type_name -> temporal.server.api.persistence.v1.NexusEndpointEntry - 148, // 127: temporal.server.api.matchingservice.v1.ListNexusEndpointsResponse.entries:type_name -> temporal.server.api.persistence.v1.NexusEndpointEntry - 149, // 128: temporal.server.api.matchingservice.v1.RecordWorkerHeartbeatRequest.heartbeart_request:type_name -> temporal.api.workflowservice.v1.RecordWorkerHeartbeatRequest - 150, // 129: temporal.server.api.matchingservice.v1.ListWorkersRequest.list_request:type_name -> temporal.api.workflowservice.v1.ListWorkersRequest - 151, // 130: temporal.server.api.matchingservice.v1.ListWorkersResponse.workers_info:type_name -> temporal.api.worker.v1.WorkerInfo - 152, // 131: temporal.server.api.matchingservice.v1.ListWorkersResponse.workers:type_name -> temporal.api.worker.v1.WorkerListInfo - 153, // 132: temporal.server.api.matchingservice.v1.CountWorkersRequest.count_request:type_name -> temporal.api.workflowservice.v1.CountWorkersRequest - 154, // 133: temporal.server.api.matchingservice.v1.UpdateTaskQueueConfigRequest.update_taskqueue_config:type_name -> temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest - 155, // 134: temporal.server.api.matchingservice.v1.UpdateTaskQueueConfigResponse.updated_taskqueue_config:type_name -> temporal.api.taskqueue.v1.TaskQueueConfig - 156, // 135: temporal.server.api.matchingservice.v1.DescribeWorkerRequest.request:type_name -> temporal.api.workflowservice.v1.DescribeWorkerRequest - 151, // 136: temporal.server.api.matchingservice.v1.DescribeWorkerResponse.worker_info:type_name -> temporal.api.worker.v1.WorkerInfo - 120, // 137: temporal.server.api.matchingservice.v1.UpdateFairnessStateRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType - 157, // 138: temporal.server.api.matchingservice.v1.UpdateFairnessStateRequest.fairness_state:type_name -> temporal.server.api.enums.v1.FairnessState - 120, // 139: temporal.server.api.matchingservice.v1.CheckTaskQueueVersionMembershipRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType - 123, // 140: temporal.server.api.matchingservice.v1.CheckTaskQueueVersionMembershipRequest.version:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentVersion - 100, // 141: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.QueriesEntry.value:type_name -> temporal.api.query.v1.WorkflowQuery - 100, // 142: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.QueriesEntry.value:type_name -> temporal.api.query.v1.WorkflowQuery - 120, // 143: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesRequest.VersionTaskQueue.type:type_name -> temporal.api.enums.v1.TaskQueueType - 120, // 144: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesResponse.VersionTaskQueue.type:type_name -> temporal.api.enums.v1.TaskQueueType - 158, // 145: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesResponse.VersionTaskQueue.stats:type_name -> temporal.api.taskqueue.v1.TaskQueueStats - 91, // 146: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesResponse.VersionTaskQueue.stats_by_priority_key:type_name -> temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesResponse.VersionTaskQueue.StatsByPriorityKeyEntry - 158, // 147: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesResponse.VersionTaskQueue.StatsByPriorityKeyEntry.value:type_name -> temporal.api.taskqueue.v1.TaskQueueStats - 159, // 148: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse.VersionsInfoInternalEntry.value:type_name -> temporal.server.api.taskqueue.v1.TaskQueueVersionInfoInternal - 160, // 149: temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.ApplyPublicRequest.request:type_name -> temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest - 161, // 150: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.UpsertVersionsDataEntry.value:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentVersionData - 151, // [151:151] is the sub-list for method output_type - 151, // [151:151] is the sub-list for method input_type - 151, // [151:151] is the sub-list for extension type_name - 151, // [151:151] is the sub-list for extension extendee - 0, // [0:151] is the sub-list for field type_name + 107, // 14: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.stream_slices:type_name -> temporal.api.stream.v1.StreamSlice + 98, // 15: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 99, // 16: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.workflow_type:type_name -> temporal.api.common.v1.WorkflowType + 100, // 17: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.query:type_name -> temporal.api.query.v1.WorkflowQuery + 101, // 18: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.transient_workflow_task:type_name -> temporal.server.api.history.v1.TransientWorkflowTaskInfo + 102, // 19: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.workflow_execution_task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 103, // 20: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.scheduled_time:type_name -> google.protobuf.Timestamp + 103, // 21: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.started_time:type_name -> google.protobuf.Timestamp + 87, // 22: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.queries:type_name -> temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.QueriesEntry + 104, // 23: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.messages:type_name -> temporal.api.protocol.v1.Message + 105, // 24: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.history:type_name -> temporal.api.history.v1.History + 106, // 25: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.poller_scaling_decision:type_name -> temporal.api.taskqueue.v1.PollerScalingDecision + 107, // 26: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.stream_slices:type_name -> temporal.api.stream.v1.StreamSlice + 108, // 27: temporal.server.api.matchingservice.v1.PollActivityTaskQueueRequest.poll_request:type_name -> temporal.api.workflowservice.v1.PollActivityTaskQueueRequest + 85, // 28: temporal.server.api.matchingservice.v1.PollActivityTaskQueueRequest.conditions:type_name -> temporal.server.api.matchingservice.v1.PollConditions + 98, // 29: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 109, // 30: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.activity_type:type_name -> temporal.api.common.v1.ActivityType + 110, // 31: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.input:type_name -> temporal.api.common.v1.Payloads + 103, // 32: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.scheduled_time:type_name -> google.protobuf.Timestamp + 111, // 33: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.schedule_to_close_timeout:type_name -> google.protobuf.Duration + 103, // 34: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.started_time:type_name -> google.protobuf.Timestamp + 111, // 35: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.start_to_close_timeout:type_name -> google.protobuf.Duration + 111, // 36: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.heartbeat_timeout:type_name -> google.protobuf.Duration + 103, // 37: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.current_attempt_scheduled_time:type_name -> google.protobuf.Timestamp + 110, // 38: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.heartbeat_details:type_name -> temporal.api.common.v1.Payloads + 99, // 39: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.workflow_type:type_name -> temporal.api.common.v1.WorkflowType + 112, // 40: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.header:type_name -> temporal.api.common.v1.Header + 106, // 41: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.poller_scaling_decision:type_name -> temporal.api.taskqueue.v1.PollerScalingDecision + 113, // 42: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.priority:type_name -> temporal.api.common.v1.Priority + 114, // 43: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.retry_policy:type_name -> temporal.api.common.v1.RetryPolicy + 98, // 44: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 102, // 45: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 111, // 46: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.schedule_to_start_timeout:type_name -> google.protobuf.Duration + 115, // 47: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 116, // 48: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective + 117, // 49: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo + 113, // 50: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.priority:type_name -> temporal.api.common.v1.Priority + 98, // 51: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 102, // 52: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 111, // 53: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.schedule_to_start_timeout:type_name -> google.protobuf.Duration + 115, // 54: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 116, // 55: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective + 117, // 56: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo + 113, // 57: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.priority:type_name -> temporal.api.common.v1.Priority + 102, // 58: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 118, // 59: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.query_request:type_name -> temporal.api.workflowservice.v1.QueryWorkflowRequest + 116, // 60: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective + 117, // 61: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo + 113, // 62: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.priority:type_name -> temporal.api.common.v1.Priority + 110, // 63: temporal.server.api.matchingservice.v1.QueryWorkflowResponse.query_result:type_name -> temporal.api.common.v1.Payloads + 119, // 64: temporal.server.api.matchingservice.v1.QueryWorkflowResponse.query_rejected:type_name -> temporal.api.query.v1.QueryRejected + 102, // 65: temporal.server.api.matchingservice.v1.RespondQueryTaskCompletedRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 120, // 66: temporal.server.api.matchingservice.v1.RespondQueryTaskCompletedRequest.completed_request:type_name -> temporal.api.workflowservice.v1.RespondQueryTaskCompletedRequest + 121, // 67: temporal.server.api.matchingservice.v1.CancelOutstandingPollRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType + 102, // 68: temporal.server.api.matchingservice.v1.CancelOutstandingPollRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 102, // 69: temporal.server.api.matchingservice.v1.CancelOutstandingWorkerPollsRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 121, // 70: temporal.server.api.matchingservice.v1.CancelOutstandingWorkerPollsRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType + 122, // 71: temporal.server.api.matchingservice.v1.CancelOutstandingWorkerPollsPartitionRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition + 122, // 72: temporal.server.api.matchingservice.v1.CancelOutstandingWorkerPollsPartitionRequest.partitions:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition + 88, // 73: temporal.server.api.matchingservice.v1.CancelOutstandingWorkerPollsPartitionRequest.workers:type_name -> temporal.server.api.matchingservice.v1.CancelOutstandingWorkerPollsPartitionRequest.WorkerEntry + 123, // 74: temporal.server.api.matchingservice.v1.DescribeTaskQueueRequest.desc_request:type_name -> temporal.api.workflowservice.v1.DescribeTaskQueueRequest + 124, // 75: temporal.server.api.matchingservice.v1.DescribeTaskQueueRequest.version:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentVersion + 125, // 76: temporal.server.api.matchingservice.v1.DescribeTaskQueueResponse.desc_response:type_name -> temporal.api.workflowservice.v1.DescribeTaskQueueResponse + 121, // 77: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType + 102, // 78: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 124, // 79: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesRequest.version:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentVersion + 89, // 80: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesRequest.version_task_queues:type_name -> temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesRequest.VersionTaskQueue + 90, // 81: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesResponse.version_task_queues:type_name -> temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesResponse.VersionTaskQueue + 122, // 82: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition + 126, // 83: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionRequest.versions:type_name -> temporal.api.taskqueue.v1.TaskQueueVersionSelection + 92, // 84: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse.versions_info_internal:type_name -> temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse.VersionsInfoInternalEntry + 127, // 85: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse.scale_info:type_name -> temporal.server.api.taskqueue.v1.PartitionScaleInfo + 102, // 86: temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 128, // 87: temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsResponse.activity_task_queue_partitions:type_name -> temporal.api.taskqueue.v1.TaskQueuePartitionMetadata + 128, // 88: temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsResponse.workflow_task_queue_partitions:type_name -> temporal.api.taskqueue.v1.TaskQueuePartitionMetadata + 93, // 89: temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.apply_public_request:type_name -> temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.ApplyPublicRequest + 94, // 90: temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.remove_build_ids:type_name -> temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.RemoveBuildIds + 129, // 91: temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesRequest.request:type_name -> temporal.api.workflowservice.v1.GetWorkerVersioningRulesRequest + 130, // 92: temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesResponse.response:type_name -> temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse + 131, // 93: temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesRequest.request:type_name -> temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest + 132, // 94: temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesResponse.response:type_name -> temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse + 133, // 95: temporal.server.api.matchingservice.v1.GetWorkerBuildIdCompatibilityRequest.request:type_name -> temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityRequest + 134, // 96: temporal.server.api.matchingservice.v1.GetWorkerBuildIdCompatibilityResponse.response:type_name -> temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse + 121, // 97: temporal.server.api.matchingservice.v1.GetTaskQueueUserDataRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType + 135, // 98: temporal.server.api.matchingservice.v1.GetTaskQueueUserDataResponse.user_data:type_name -> temporal.server.api.persistence.v1.VersionedTaskQueueUserData + 136, // 99: temporal.server.api.matchingservice.v1.GetTaskQueueUserDataResponse.ephemeral_data:type_name -> temporal.server.api.taskqueue.v1.VersionedEphemeralData + 121, // 100: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.task_queue_types:type_name -> temporal.api.enums.v1.TaskQueueType + 137, // 101: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.update_version_data:type_name -> temporal.server.api.deployment.v1.DeploymentVersionData + 124, // 102: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.forget_version:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentVersion + 138, // 103: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.update_routing_config:type_name -> temporal.api.deployment.v1.RoutingConfig + 95, // 104: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.upsert_versions_data:type_name -> temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.UpsertVersionsDataEntry + 139, // 105: temporal.server.api.matchingservice.v1.ApplyTaskQueueUserDataReplicationEventRequest.user_data:type_name -> temporal.server.api.persistence.v1.TaskQueueUserData + 122, // 106: temporal.server.api.matchingservice.v1.ForceLoadTaskQueuePartitionRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition + 121, // 107: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueueRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType + 122, // 108: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueuePartitionRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition + 135, // 109: temporal.server.api.matchingservice.v1.UpdateTaskQueueUserDataRequest.user_data:type_name -> temporal.server.api.persistence.v1.VersionedTaskQueueUserData + 139, // 110: temporal.server.api.matchingservice.v1.ReplicateTaskQueueUserDataRequest.user_data:type_name -> temporal.server.api.persistence.v1.TaskQueueUserData + 102, // 111: temporal.server.api.matchingservice.v1.DispatchNexusTaskRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 140, // 112: temporal.server.api.matchingservice.v1.DispatchNexusTaskRequest.request:type_name -> temporal.api.nexus.v1.Request + 117, // 113: temporal.server.api.matchingservice.v1.DispatchNexusTaskRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo + 141, // 114: temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse.handler_error:type_name -> temporal.api.nexus.v1.HandlerError + 142, // 115: temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse.response:type_name -> temporal.api.nexus.v1.Response + 96, // 116: temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse.request_timeout:type_name -> temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse.Timeout + 143, // 117: temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse.failure:type_name -> temporal.api.failure.v1.Failure + 144, // 118: temporal.server.api.matchingservice.v1.PollNexusTaskQueueRequest.request:type_name -> temporal.api.workflowservice.v1.PollNexusTaskQueueRequest + 85, // 119: temporal.server.api.matchingservice.v1.PollNexusTaskQueueRequest.conditions:type_name -> temporal.server.api.matchingservice.v1.PollConditions + 145, // 120: temporal.server.api.matchingservice.v1.PollNexusTaskQueueResponse.response:type_name -> temporal.api.workflowservice.v1.PollNexusTaskQueueResponse + 102, // 121: temporal.server.api.matchingservice.v1.RespondNexusTaskCompletedRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 146, // 122: temporal.server.api.matchingservice.v1.RespondNexusTaskCompletedRequest.request:type_name -> temporal.api.workflowservice.v1.RespondNexusTaskCompletedRequest + 102, // 123: temporal.server.api.matchingservice.v1.RespondNexusTaskFailedRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 147, // 124: temporal.server.api.matchingservice.v1.RespondNexusTaskFailedRequest.request:type_name -> temporal.api.workflowservice.v1.RespondNexusTaskFailedRequest + 148, // 125: temporal.server.api.matchingservice.v1.CreateNexusEndpointRequest.spec:type_name -> temporal.server.api.persistence.v1.NexusEndpointSpec + 149, // 126: temporal.server.api.matchingservice.v1.CreateNexusEndpointResponse.entry:type_name -> temporal.server.api.persistence.v1.NexusEndpointEntry + 148, // 127: temporal.server.api.matchingservice.v1.UpdateNexusEndpointRequest.spec:type_name -> temporal.server.api.persistence.v1.NexusEndpointSpec + 149, // 128: temporal.server.api.matchingservice.v1.UpdateNexusEndpointResponse.entry:type_name -> temporal.server.api.persistence.v1.NexusEndpointEntry + 149, // 129: temporal.server.api.matchingservice.v1.ListNexusEndpointsResponse.entries:type_name -> temporal.server.api.persistence.v1.NexusEndpointEntry + 150, // 130: temporal.server.api.matchingservice.v1.RecordWorkerHeartbeatRequest.heartbeart_request:type_name -> temporal.api.workflowservice.v1.RecordWorkerHeartbeatRequest + 151, // 131: temporal.server.api.matchingservice.v1.ListWorkersRequest.list_request:type_name -> temporal.api.workflowservice.v1.ListWorkersRequest + 152, // 132: temporal.server.api.matchingservice.v1.ListWorkersResponse.workers_info:type_name -> temporal.api.worker.v1.WorkerInfo + 153, // 133: temporal.server.api.matchingservice.v1.ListWorkersResponse.workers:type_name -> temporal.api.worker.v1.WorkerListInfo + 154, // 134: temporal.server.api.matchingservice.v1.CountWorkersRequest.count_request:type_name -> temporal.api.workflowservice.v1.CountWorkersRequest + 155, // 135: temporal.server.api.matchingservice.v1.UpdateTaskQueueConfigRequest.update_taskqueue_config:type_name -> temporal.api.workflowservice.v1.UpdateTaskQueueConfigRequest + 156, // 136: temporal.server.api.matchingservice.v1.UpdateTaskQueueConfigResponse.updated_taskqueue_config:type_name -> temporal.api.taskqueue.v1.TaskQueueConfig + 157, // 137: temporal.server.api.matchingservice.v1.DescribeWorkerRequest.request:type_name -> temporal.api.workflowservice.v1.DescribeWorkerRequest + 152, // 138: temporal.server.api.matchingservice.v1.DescribeWorkerResponse.worker_info:type_name -> temporal.api.worker.v1.WorkerInfo + 121, // 139: temporal.server.api.matchingservice.v1.UpdateFairnessStateRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType + 158, // 140: temporal.server.api.matchingservice.v1.UpdateFairnessStateRequest.fairness_state:type_name -> temporal.server.api.enums.v1.FairnessState + 121, // 141: temporal.server.api.matchingservice.v1.CheckTaskQueueVersionMembershipRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType + 124, // 142: temporal.server.api.matchingservice.v1.CheckTaskQueueVersionMembershipRequest.version:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentVersion + 100, // 143: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.QueriesEntry.value:type_name -> temporal.api.query.v1.WorkflowQuery + 100, // 144: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponseWithRawHistory.QueriesEntry.value:type_name -> temporal.api.query.v1.WorkflowQuery + 121, // 145: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesRequest.VersionTaskQueue.type:type_name -> temporal.api.enums.v1.TaskQueueType + 121, // 146: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesResponse.VersionTaskQueue.type:type_name -> temporal.api.enums.v1.TaskQueueType + 159, // 147: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesResponse.VersionTaskQueue.stats:type_name -> temporal.api.taskqueue.v1.TaskQueueStats + 91, // 148: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesResponse.VersionTaskQueue.stats_by_priority_key:type_name -> temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesResponse.VersionTaskQueue.StatsByPriorityKeyEntry + 159, // 149: temporal.server.api.matchingservice.v1.DescribeVersionedTaskQueuesResponse.VersionTaskQueue.StatsByPriorityKeyEntry.value:type_name -> temporal.api.taskqueue.v1.TaskQueueStats + 160, // 150: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse.VersionsInfoInternalEntry.value:type_name -> temporal.server.api.taskqueue.v1.TaskQueueVersionInfoInternal + 161, // 151: temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.ApplyPublicRequest.request:type_name -> temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest + 162, // 152: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.UpsertVersionsDataEntry.value:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentVersionData + 153, // [153:153] is the sub-list for method output_type + 153, // [153:153] is the sub-list for method input_type + 153, // [153:153] is the sub-list for extension type_name + 153, // [153:153] is the sub-list for extension extendee + 0, // [0:153] is the sub-list for field type_name } func init() { file_temporal_server_api_matchingservice_v1_request_response_proto_init() } diff --git a/chasm/lib/workflow/stream_cursor_test.go b/chasm/lib/workflow/stream_cursor_test.go index 243f5c3fc22..db65d0cc2fc 100644 --- a/chasm/lib/workflow/stream_cursor_test.go +++ b/chasm/lib/workflow/stream_cursor_test.go @@ -109,6 +109,56 @@ func TestSubscribeCreatesTheStreamItNames(t *testing.T) { require.Len(t, state.GetConsumers(), 1, "the subscription pinned the new stream") } +// Committing a delivered range moves the consumer's cursor on the stream, so +// the stream knows how far this reader has got. +func TestCommitStreamCursorsAdvancesTheConsumer(t *testing.T) { + ctx := newStreamCursorTestContext() + w := &Workflow{} + owned := newAttachedStream(t, ctx, 4) + w.Streams = chasm.Map[string, *stream.Stream]{ + DefaultStreamName: chasm.NewComponentField(ctx, owned), + } + + _, err := w.SubscribeToOwnedStream(ctx, DefaultStreamName, 0, stream.DefaultLimits()) + require.NoError(t, err) + + cursor := w.StreamCursors[DefaultStreamName].Get(ctx) + require.NoError(t, cursor.StagePending(ctx, 0, 3)) + + recorded := w.CommitStreamCursors(ctx) + require.Len(t, recorded, 1) + require.Equal(t, int64(0), recorded[0].GetFromOffset()) + require.Equal(t, int64(3), recorded[0].GetToOffset()) + + require.Equal(t, int64(3), + owned.State.GetConsumers()[streamConsumerID(DefaultStreamName)].GetOffset(), + "the stream must see how far the consumer has read") +} + +// An idle task records an empty range, which must leave the consumer alone. +func TestCommitStreamCursorsWithAnEmptyRangeHoldsTheConsumer(t *testing.T) { + ctx := newStreamCursorTestContext() + w := &Workflow{} + owned := newAttachedStream(t, ctx, 4) + w.Streams = chasm.Map[string, *stream.Stream]{ + DefaultStreamName: chasm.NewComponentField(ctx, owned), + } + + _, err := w.SubscribeToOwnedStream(ctx, DefaultStreamName, 0, stream.DefaultLimits()) + require.NoError(t, err) + + cursor := w.StreamCursors[DefaultStreamName].Get(ctx) + require.NoError(t, cursor.StagePending(ctx, 0, 0)) + + recorded := w.CommitStreamCursors(ctx) + require.Len(t, recorded, 1, "an empty range is still recorded") + require.Equal(t, recorded[0].GetFromOffset(), recorded[0].GetToOffset()) + + require.Equal(t, int64(0), + owned.State.GetConsumers()[streamConsumerID(DefaultStreamName)].GetOffset(), + "consuming nothing must not move the consumer") +} + // Two publishes in one workflow task each write their own batch, keyed by the // offset it starts at, so neither collides with the other and a retry of // either addresses the same key it wrote before. diff --git a/chasm/lib/workflow/workflow.go b/chasm/lib/workflow/workflow.go index 8e77aafa8c4..1c32b7df32f 100644 --- a/chasm/lib/workflow/workflow.go +++ b/chasm/lib/workflow/workflow.go @@ -9,6 +9,7 @@ import ( failurepb "go.temporal.io/api/failure/v1" historypb "go.temporal.io/api/history/v1" "go.temporal.io/api/serviceerror" + streampb "go.temporal.io/api/stream/v1" "go.temporal.io/server/chasm" "go.temporal.io/server/chasm/lib/callback" callbackspb "go.temporal.io/server/chasm/lib/callback/gen/callbackpb/v1" @@ -243,6 +244,85 @@ func (w *Workflow) AdvanceKnownHead(mctx chasm.MutableContext, streamID string, return nil } +// StreamCursorsBehind reports whether any subscription still has offsets it has +// not been given. +// +// This is the one place a stream wakes a workflow. Publishing deliberately +// never does, because a stream item is data produced by an execution rather +// than a decision input to it. An active subscription is different: the +// workflow asked to be told, so leaving it to wait for some unrelated task +// would make delivery depend on traffic that has nothing to do with the stream. +func (w *Workflow) StreamCursorsBehind(ctx chasm.Context) bool { + for name, field := range w.StreamCursors { + cursor := field.Get(ctx) + + // An external stream's frontier is whatever it last pushed here: this + // execution cannot read the real one without reaching into another. + if cursor.IsExternal() { + if cursor.Offset() < cursor.KnownHead() { + return true + } + continue + } + + owned, ok := w.Streams[name] + if !ok { + continue + } + state, err := owned.Get(ctx).Snapshot(ctx, struct{}{}) + if err != nil { + continue + } + if cursor.Offset() < state.GetHeadOffset() { + return true + } + } + return false +} + +// CommitStreamCursors folds every staged range into its cursor and returns the +// ranges to record. Called while the workflow task's transaction is open, so +// the advance and the event that carries the range land together. +// +// A cursor with nothing staged is skipped, but a cursor staged with an empty +// range is not: replay has to see that the subscription was live and observed +// nothing. +func (w *Workflow) CommitStreamCursors(mctx chasm.MutableContext) []*streampb.StreamRange { + if w.StreamCursors == nil { + return nil + } + + names := make([]string, 0, len(w.StreamCursors)) + for name := range w.StreamCursors { + names = append(names, name) + } + // Recorded order has to be stable, or replay compares against a different + // event than the one the original execution wrote. + slices.Sort(names) + + var recorded []*streampb.StreamRange + for _, name := range names { + cursor := w.StreamCursors[name].Get(mctx) + from, to, ok := cursor.Commit(mctx) + if !ok { + continue + } + + // Let the floor follow the cursor. Anything below it is recorded as + // consumed, so nothing needs to re-read it. + if field, ok := w.Streams[name]; ok { + field.Get(mctx).AdvanceConsumer(mctx, streamConsumerID(name), to) + } + + recorded = append(recorded, &streampb.StreamRange{ + StreamId: cursor.StreamID(), + FromOffset: from, + ToOffset: to, + }) + } + return recorded +} + func NewWorkflow( _ chasm.MutableContext, msPointer chasm.MSPointer, diff --git a/client/history/client_gen.go b/client/history/client_gen.go index c594c7f17cd..7475fa3369e 100644 --- a/client/history/client_gen.go +++ b/client/history/client_gen.go @@ -399,6 +399,26 @@ func (c *clientImpl) GetShard( return response, nil } +func (c *clientImpl) GetStreamReplaySlices( + ctx context.Context, + request *historyservice.GetStreamReplaySlicesRequest, + opts ...grpc.CallOption, +) (*historyservice.GetStreamReplaySlicesResponse, error) { + shardID := c.shardIDFromWorkflowID(request.GetNamespaceId(), request.GetExecution().GetWorkflowId()) + var response *historyservice.GetStreamReplaySlicesResponse + op := func(ctx context.Context, client historyservice.HistoryServiceClient) error { + var err error + ctx, cancel := c.createContext(ctx) + defer cancel() + response, err = client.GetStreamReplaySlices(ctx, request, opts...) + return err + } + if err := c.executeWithRedirect(ctx, shardID, op); err != nil { + return nil, err + } + return response, nil +} + func (c *clientImpl) GetWorkflowExecutionHistory( ctx context.Context, request *historyservice.GetWorkflowExecutionHistoryRequest, diff --git a/client/history/metric_client_gen.go b/client/history/metric_client_gen.go index 8d4cad72aa5..78ccfda73a6 100644 --- a/client/history/metric_client_gen.go +++ b/client/history/metric_client_gen.go @@ -317,6 +317,20 @@ func (c *metricClient) GetShard( return c.client.GetShard(ctx, request, opts...) } +func (c *metricClient) GetStreamReplaySlices( + ctx context.Context, + request *historyservice.GetStreamReplaySlicesRequest, + opts ...grpc.CallOption, +) (_ *historyservice.GetStreamReplaySlicesResponse, retError error) { + + metricsHandler, startTime := c.startMetricsRecording(ctx, "HistoryClientGetStreamReplaySlices") + defer func() { + c.finishMetricsRecording(metricsHandler, startTime, retError) + }() + + return c.client.GetStreamReplaySlices(ctx, request, opts...) +} + func (c *metricClient) GetWorkflowExecutionHistory( ctx context.Context, request *historyservice.GetWorkflowExecutionHistoryRequest, diff --git a/client/history/retryable_client_gen.go b/client/history/retryable_client_gen.go index 31e48612095..a06b9118827 100644 --- a/client/history/retryable_client_gen.go +++ b/client/history/retryable_client_gen.go @@ -356,6 +356,21 @@ func (c *retryableClient) GetShard( return resp, err } +func (c *retryableClient) GetStreamReplaySlices( + ctx context.Context, + request *historyservice.GetStreamReplaySlicesRequest, + opts ...grpc.CallOption, +) (*historyservice.GetStreamReplaySlicesResponse, error) { + var resp *historyservice.GetStreamReplaySlicesResponse + op := func(ctx context.Context) error { + var err error + resp, err = c.client.GetStreamReplaySlices(ctx, request, opts...) + return err + } + err := backoff.ThrottleRetryContext(ctx, op, c.policy, c.isRetryable) + return resp, err +} + func (c *retryableClient) GetWorkflowExecutionHistory( ctx context.Context, request *historyservice.GetWorkflowExecutionHistoryRequest, diff --git a/common/rpc/interceptor/logtags/history_service_server_gen.go b/common/rpc/interceptor/logtags/history_service_server_gen.go index 038ccbf9c40..43dcc9e7b17 100644 --- a/common/rpc/interceptor/logtags/history_service_server_gen.go +++ b/common/rpc/interceptor/logtags/history_service_server_gen.go @@ -141,6 +141,13 @@ func (wt *WorkflowTags) extractFromHistoryServiceServerMessage(message any) []ta return nil case *historyservice.GetShardResponse: return nil + case *historyservice.GetStreamReplaySlicesRequest: + return []tag.Tag{ + tag.WorkflowID(r.GetExecution().GetWorkflowId()), + tag.WorkflowRunID(r.GetExecution().GetRunId()), + } + case *historyservice.GetStreamReplaySlicesResponse: + return nil case *historyservice.GetWorkflowExecutionHistoryRequest: return []tag.Tag{ tag.WorkflowID(r.GetRequest().GetExecution().GetWorkflowId()), diff --git a/common/util.go b/common/util.go index 87e02bbc63a..f67c0daa7e7 100644 --- a/common/util.go +++ b/common/util.go @@ -544,6 +544,7 @@ func CreateMatchingPollWorkflowTaskQueueResponse(historyResponse *historyservice StartedTime: historyResponse.StartedTime, Queries: historyResponse.Queries, Messages: historyResponse.Messages, + StreamSlices: historyResponse.StreamSlices, History: historyResponse.History, NextPageToken: historyResponse.NextPageToken, RawHistory: historyResponse.RawHistoryBytes, diff --git a/proto/internal/temporal/server/api/historyservice/v1/request_response.proto b/proto/internal/temporal/server/api/historyservice/v1/request_response.proto index de813adcf43..40fe5e92ef7 100644 --- a/proto/internal/temporal/server/api/historyservice/v1/request_response.proto +++ b/proto/internal/temporal/server/api/historyservice/v1/request_response.proto @@ -14,6 +14,7 @@ import "temporal/api/history/v1/message.proto"; import "temporal/api/nexus/v1/message.proto"; import "temporal/api/protocol/v1/message.proto"; import "temporal/api/query/v1/message.proto"; +import "temporal/api/stream/v1/message.proto"; import "temporal/api/taskqueue/v1/message.proto"; import "temporal/api/workflow/v1/message.proto"; import "temporal/api/workflowservice/v1/request_response.proto"; @@ -122,6 +123,22 @@ message StartWorkflowExecutionResponse { string first_execution_run_id = 7; } +// Asks for the stream ranges a workflow's completed tasks recorded, re-read from +// their streams, for a task that is built without RecordWorkflowTaskStarted. +// A query dispatched straight through matching is the one such task. +message GetStreamReplaySlicesRequest { + option (routing).workflow_id = "execution.workflow_id"; + + string namespace_id = 1; + temporal.api.common.v1.WorkflowExecution execution = 2; +} + +message GetStreamReplaySlicesResponse { + // Every slice is tagged with the completed event that recorded its range. + // Empty when the workflow consumes no stream. + repeated temporal.api.stream.v1.StreamSlice stream_slices = 1; +} + message GetMutableStateRequest { option (routing).workflow_id = "execution.workflow_id"; @@ -301,6 +318,10 @@ message RecordWorkflowTaskStartedResponse { // as raw_history_bytes (field 21) will be the only field used. temporal.api.history.v1.History raw_history = 20 [deprecated = true]; repeated bytes raw_history_bytes = 21; + // Slices of the streams this Workflow is consuming, each covering the offset + // range the task may deliver. Payloads ride here and never enter History; + // only the consumed range is recorded, on WorkflowTaskCompleted. + repeated temporal.api.stream.v1.StreamSlice stream_slices = 22; } // RecordWorkflowTaskStartedResponseWithRawHistory is wire-compatible with RecordWorkflowTaskStartedResponse. @@ -345,6 +366,10 @@ message RecordWorkflowTaskStartedResponseWithRawHistory { // instead of a proto-decoded History. This avoids matching service having to decode history. repeated bytes raw_history = 20 [deprecated = true]; repeated bytes raw_history_bytes = 21; + // Slices of the streams this Workflow is consuming, each covering the offset + // range the task may deliver. Payloads ride here and never enter History; + // only the consumed range is recorded, on WorkflowTaskCompleted. + repeated temporal.api.stream.v1.StreamSlice stream_slices = 22; } message RecordActivityTaskStartedRequest { diff --git a/proto/internal/temporal/server/api/historyservice/v1/service.proto b/proto/internal/temporal/server/api/historyservice/v1/service.proto index 58b0019b9f7..d19d6b13e7a 100644 --- a/proto/internal/temporal/server/api/historyservice/v1/service.proto +++ b/proto/internal/temporal/server/api/historyservice/v1/service.proto @@ -32,6 +32,13 @@ service HistoryService { option (temporal.server.api.common.v1.api_category).category = API_CATEGORY_LONG_POLL; } + // Returns the stream ranges the workflow's completed tasks recorded, re-read + // from their streams and tagged with the event that recorded each, so a task + // built without RecordWorkflowTaskStarted can still replay a consumer. + rpc GetStreamReplaySlices(GetStreamReplaySlicesRequest) returns (GetStreamReplaySlicesResponse) { + option (temporal.server.api.common.v1.api_category).category = API_CATEGORY_STANDARD; + } + // Reset the sticky task queue related information in mutable state of a given workflow. // Things cleared are: // 1. StickyTaskQueue diff --git a/proto/internal/temporal/server/api/matchingservice/v1/request_response.proto b/proto/internal/temporal/server/api/matchingservice/v1/request_response.proto index 33bae6d5c71..afe058cef5b 100644 --- a/proto/internal/temporal/server/api/matchingservice/v1/request_response.proto +++ b/proto/internal/temporal/server/api/matchingservice/v1/request_response.proto @@ -12,6 +12,7 @@ import "temporal/api/history/v1/message.proto"; import "temporal/api/nexus/v1/message.proto"; import "temporal/api/protocol/v1/message.proto"; import "temporal/api/query/v1/message.proto"; +import "temporal/api/stream/v1/message.proto"; import "temporal/api/taskqueue/v1/message.proto"; import "temporal/api/worker/v1/message.proto"; import "temporal/api/workflowservice/v1/request_response.proto"; @@ -62,6 +63,10 @@ message PollWorkflowTaskQueueResponse { // Raw history bytes sent from matching service when history.sendRawHistoryBetweenInternalServices is enabled. // Matching client will deserialize this to History when it receives the response. temporal.api.history.v1.History raw_history = 22; + // Slices of the streams this Workflow is consuming, each covering the offset + // range the task may deliver. Payloads ride here and never enter History; + // only the consumed range is recorded, on WorkflowTaskCompleted. + repeated temporal.api.stream.v1.StreamSlice stream_slices = 23; } // PollWorkflowTaskQueueResponseWithRawHistory is wire-compatible with PollWorkflowTaskQueueResponse. @@ -112,6 +117,10 @@ message PollWorkflowTaskQueueResponseWithRawHistory { // When matching client deserializes this to PollWorkflowTaskQueueResponse, this field // will be automatically deserialized to the raw_history field as History. repeated bytes raw_history = 22; + // Slices of the streams this Workflow is consuming, each covering the offset + // range the task may deliver. Payloads ride here and never enter History; + // only the consumed range is recorded, on WorkflowTaskCompleted. + repeated temporal.api.stream.v1.StreamSlice stream_slices = 23; } message PollActivityTaskQueueRequest { diff --git a/service/frontend/workflow_handler.go b/service/frontend/workflow_handler.go index 2a1230a3c04..16c4c7d081a 100644 --- a/service/frontend/workflow_handler.go +++ b/service/frontend/workflow_handler.go @@ -1197,6 +1197,7 @@ func (wh *WorkflowHandler) PollWorkflowTaskQueue(ctx context.Context, request *w StartedTime: matchingResp.StartedTime, Queries: matchingResp.Queries, Messages: matchingResp.Messages, + StreamSlices: matchingResp.StreamSlices, PollerScalingDecision: matchingResp.PollerScalingDecision, }, nil } diff --git a/service/history/api/recordworkflowtaskstarted/api.go b/service/history/api/recordworkflowtaskstarted/api.go index e88a3c6c9c3..2c096720dc0 100644 --- a/service/history/api/recordworkflowtaskstarted/api.go +++ b/service/history/api/recordworkflowtaskstarted/api.go @@ -51,6 +51,11 @@ func Invoke( var workflowKey definition.WorkflowKey var resp *historyservice.RecordWorkflowTaskStartedResponseWithRawHistory + var streamAddresses map[string]streamOrigin + // Set when a stream range the task depends on cannot be served. The task + // is failed inside the transaction, so the failure has to be persisted + // and reported to matching afterwards rather than returned as the error. + var streamFailure *rangeUnavailable err = api.GetAndUpdateWorkflowWithNew( ctx, @@ -102,6 +107,19 @@ func Invoke( if err != nil { return nil, err } + // Redelivers whatever range is already staged, so a + // duplicate of the same request hands back the same slice. + resp.StreamSlices, streamAddresses, err = deliverStreamSlices( + ctx, shardContext, mutableState) + if errors.As(err, &streamFailure) { + if err := failTaskForStreams(mutableState, workflowTask, streamFailure); err != nil { + return nil, err + } + return updateAction, nil + } + if err != nil { + return nil, err + } updateAction.Noop = true return updateAction, nil } @@ -238,6 +256,19 @@ func Invoke( return nil, err } + resp.StreamSlices, streamAddresses, err = deliverStreamSlices( + ctx, shardContext, mutableState) + if errors.As(err, &streamFailure) { + if err := failTaskForStreams(mutableState, workflowTask, streamFailure); err != nil { + return nil, err + } + updateAction.Noop = false + return updateAction, nil + } + if err != nil { + return nil, err + } + return updateAction, nil }, nil, @@ -248,6 +279,11 @@ func Invoke( if err != nil { return nil, err } + if streamFailure != nil { + // The failure is in History and the next attempt is scheduled, so this + // task is stale; matching drops it rather than retrying it. + return nil, serviceerrors.NewObsoleteMatchingTask(streamFailure.Error()) + } maxHistoryPageSize := int32(config.HistoryMaxPageSize(namespaceEntry.Name().String())) err = setHistoryForRecordWfTaskStartedResp( @@ -264,9 +300,64 @@ func Invoke( if err != nil { return nil, err } + + // After the history is attached, because the ranges to re-supply are read + // out of the events being sent. + err = attachReplaySlices(ctx, shardContext, workflowKey, streamAddresses, maxHistoryPageSize, resp) + if errors.As(err, &streamFailure) { + // The task is already started and its lock released, so failing it is + // a transaction of its own. + if err := failStartedTaskForStreams( + ctx, shardContext, workflowConsistencyChecker, workflowKey, + scheduledEventID, requestID, streamFailure, + ); err != nil { + return nil, err + } + return nil, serviceerrors.NewObsoleteMatchingTask(streamFailure.Error()) + } + if err != nil { + return nil, err + } return resp, nil } +// failStartedTaskForStreams fails a task that started but cannot be replayed, +// provided it is still the task this request started. +func failStartedTaskForStreams( + ctx context.Context, + shardContext historyi.ShardContext, + workflowConsistencyChecker api.WorkflowConsistencyChecker, + workflowKey definition.WorkflowKey, + scheduledEventID int64, + requestID string, + cause *rangeUnavailable, +) error { + return api.GetAndUpdateWorkflowWithNew( + ctx, + nil, + workflowKey, + func(workflowLease api.WorkflowLease) (*api.UpdateWorkflowAction, error) { + mutableState := workflowLease.GetMutableState() + if !mutableState.IsWorkflowExecutionRunning() { + return nil, consts.ErrWorkflowCompleted + } + workflowTask := mutableState.GetWorkflowTaskByID(scheduledEventID) + if workflowTask == nil || workflowTask.RequestID != requestID || + workflowTask.StartedEventID == common.EmptyEventID { + // Something else already resolved the task. + return &api.UpdateWorkflowAction{Noop: true}, nil + } + if err := failTaskForStreams(mutableState, workflowTask, cause); err != nil { + return nil, err + } + return &api.UpdateWorkflowAction{}, nil + }, + nil, + shardContext, + workflowConsistencyChecker, + ) +} + func setHistoryForRecordWfTaskStartedResp( ctx context.Context, shardContext historyi.ShardContext, @@ -400,6 +491,7 @@ func CreateRecordWorkflowTaskStartedResponse( Queries: rawResp.Queries, Clock: rawResp.Clock, Messages: rawResp.Messages, + StreamSlices: rawResp.StreamSlices, Version: rawResp.Version, NextPageToken: rawResp.NextPageToken, }, nil diff --git a/service/history/api/recordworkflowtaskstarted/stream_routing.go b/service/history/api/recordworkflowtaskstarted/stream_routing.go index 2bebc1af0fb..546160a3476 100644 --- a/service/history/api/recordworkflowtaskstarted/stream_routing.go +++ b/service/history/api/recordworkflowtaskstarted/stream_routing.go @@ -3,8 +3,13 @@ package recordworkflowtaskstarted import ( "context" + commonpb "go.temporal.io/api/common/v1" + enumspb "go.temporal.io/api/enums/v1" + "go.temporal.io/api/serviceerror" + "go.temporal.io/server/chasm" "go.temporal.io/server/chasm/lib/stream" streamlib "go.temporal.io/server/chasm/lib/stream/gen/streampb/v1" + "google.golang.org/protobuf/proto" ) type streamClientContextKey struct{} @@ -28,3 +33,70 @@ func StreamClientFromContext(ctx context.Context) (streamlib.StreamServiceClient func WithRoutedDeadline(ctx context.Context) (context.Context, context.CancelFunc) { return context.WithTimeout(ctx, stream.RoutedCallTimeout) } + +func readExternalWindow( + ctx context.Context, + namespaceID, streamID string, + from, to int64, +) (stream.Window, error) { + if to <= from { + return stream.Window{To: from}, nil + } + limit := int32(min(to-from, int64(stream.DefaultMaxMessagesPerPoll))) + client, ok := StreamClientFromContext(ctx) + if !ok { + // Hand-built engines in component tests have no service client. + return chasm.ReadComponent(ctx, + chasm.NewComponentRef[*stream.Stream](chasm.ExecutionKey{ + NamespaceID: namespaceID, + BusinessID: streamID, + }), + (*stream.Stream).ReadWindow, + stream.WindowRequest{From: from, MaxMessages: limit}) + } + + callCtx, cancel := WithRoutedDeadline(ctx) + defer cancel() + response, err := client.PollMessages(callCtx, &streamlib.PollMessagesRequest{ + NamespaceId: namespaceID, + FrontendRequest: &streamlib.PollMessagesInput{ + StreamId: streamID, FromOffset: from, MaxMessages: limit, + }, + }) + if err != nil { + return stream.Window{}, err + } + out := response.GetFrontendResponse() + if out == nil || out.GetNextOffset() < from || out.GetNextOffset() > to || + out.GetNextOffset() > out.GetHeadOffset() || + int64(len(out.GetRecords())) != out.GetNextOffset()-from { + return stream.Window{}, serviceerror.NewDataLoss( + "stream read returned an invalid contiguous range") + } + for index, message := range out.GetRecords() { + if message == nil || message.GetOffset() != from+int64(index) { + return stream.Window{}, serviceerror.NewDataLoss( + "stream read returned a missing or reordered offset") + } + } + w := stream.Window{ + State: &streamlib.StreamState{ + HeadOffset: out.GetHeadOffset(), + Closed: out.GetClosed(), + CloseReason: out.GetCloseReason(), + }, + To: out.GetNextOffset(), + Limit: int(limit), + RunID: out.GetRunId(), + } + if len(out.GetRecords()) == 0 { + return w, nil + } + data, err := proto.Marshal(&streamlib.StreamRecordBatch{Records: out.GetRecords()}) + if err != nil { + return stream.Window{}, err + } + w.Blobs = []*commonpb.DataBlob{{EncodingType: enumspb.ENCODING_TYPE_PROTO3, Data: data}} + w.Starts = []int64{from} + return w, nil +} diff --git a/service/history/api/recordworkflowtaskstarted/stream_routing_test.go b/service/history/api/recordworkflowtaskstarted/stream_routing_test.go new file mode 100644 index 00000000000..28589f344a5 --- /dev/null +++ b/service/history/api/recordworkflowtaskstarted/stream_routing_test.go @@ -0,0 +1,163 @@ +package recordworkflowtaskstarted + +import ( + "context" + "errors" + "testing" + + "github.com/stretchr/testify/require" + commonpb "go.temporal.io/api/common/v1" + "go.temporal.io/api/serviceerror" + streampb "go.temporal.io/api/stream/v1" + "go.temporal.io/server/chasm" + "go.temporal.io/server/chasm/lib/stream" + streamlib "go.temporal.io/server/chasm/lib/stream/gen/streampb/v1" + chasmworkflow "go.temporal.io/server/chasm/lib/workflow" + "go.temporal.io/server/common/definition" + "go.uber.org/mock/gomock" + "google.golang.org/grpc" +) + +type routedStreamClient struct { + streamlib.StreamServiceClient + poll func(context.Context, *streamlib.PollMessagesRequest) (*streamlib.PollMessagesResponse, error) +} + +func (c *routedStreamClient) PollMessages( + ctx context.Context, request *streamlib.PollMessagesRequest, _ ...grpc.CallOption, +) (*streamlib.PollMessagesResponse, error) { + return c.poll(ctx, request) +} + +func TestExternalStreamLiveAndReplayUseRoutedPayloadRead(t *testing.T) { + for _, replay := range []bool{false, true} { + t.Run(map[bool]string{false: "live", true: "replay"}[replay], func(t *testing.T) { + calls := 0 + client := &routedStreamClient{poll: func( + ctx context.Context, req *streamlib.PollMessagesRequest, + ) (*streamlib.PollMessagesResponse, error) { + calls++ + require.Equal(t, "namespace-id", req.GetNamespaceId()) + require.Equal(t, "remote-source", req.GetFrontendRequest().GetStreamId()) + require.EqualValues(t, 4, req.GetFrontendRequest().GetFromOffset()) + require.EqualValues(t, 2, req.GetFrontendRequest().GetMaxMessages()) + require.False(t, req.GetFrontendRequest().GetWaitNewMessages()) + require.Empty(t, req.GetFrontendRequest().GetTopics()) + return &streamlib.PollMessagesResponse{FrontendResponse: &streamlib.PollMessagesOutput{ + NextOffset: 6, HeadOffset: 9, + Records: []*streamlib.StreamRecord{ + { + Offset: 4, + Kind: streampb.STREAM_RECORD_KIND_DATA, + Body: &commonpb.Payload{Data: []byte("a")}, + }, + { + Offset: 5, + Kind: streampb.STREAM_RECORD_KIND_DATA, + Body: &commonpb.Payload{Data: []byte("b")}, + }, + }, + }}, nil + }} + // No local engine is installed, so a read that resolved the source + // through the local controller instead of the routed client fails. + ctx := WithStreamClient(context.Background(), client) + var window stream.Window + var err error + if replay { + window, err = readRecordedRange(ctx, + definition.NewWorkflowKey("namespace-id", "consumer", "consumer-run"), + streamOrigin{external: true}, "remote-source", 4, 6) + } else { + window, err = readWindowFor(ctx, nil, nil, "namespace-id", "input", true, "remote-source", 4, 6) + } + require.NoError(t, err) + require.Equal(t, 1, calls) + messages, next, err := stream.CollectRecords( + window.Blobs, window.Starts, 4, window.To, window.Limit, nil) + require.NoError(t, err) + require.EqualValues(t, 6, next) + require.Len(t, messages, 2) + require.Equal(t, []byte("a"), messages[0].GetBody().GetData()) + require.Equal(t, []byte("b"), messages[1].GetBody().GetData()) + }) + } +} + +func TestExternalStreamRoutedReadRejectsCorruptOrExpandedRange(t *testing.T) { + cases := map[string]*streamlib.PollMessagesOutput{ + "missing-response": nil, + "skipped-offset": { + NextOffset: 6, HeadOffset: 9, + Records: []*streamlib.StreamRecord{{Offset: 4}, {Offset: 6}}, + }, + "short-count": { + NextOffset: 6, HeadOffset: 9, + Records: []*streamlib.StreamRecord{{Offset: 4}}, + }, + "past-requested-frontier": { + NextOffset: 7, HeadOffset: 9, + Records: []*streamlib.StreamRecord{{Offset: 4}, {Offset: 5}, {Offset: 6}}, + }, + "past-committed-head": { + NextOffset: 6, HeadOffset: 5, + Records: []*streamlib.StreamRecord{{Offset: 4}, {Offset: 5}}, + }, + } + for name, response := range cases { + t.Run(name, func(t *testing.T) { + client := &routedStreamClient{poll: func( + context.Context, *streamlib.PollMessagesRequest, + ) (*streamlib.PollMessagesResponse, error) { + return &streamlib.PollMessagesResponse{FrontendResponse: response}, nil + }} + ctx := WithStreamClient(context.Background(), client) + _, err := readExternalWindow(ctx, "ns", "source", 4, 6) + var integrity *serviceerror.DataLoss + require.ErrorAs(t, err, &integrity) + }) + } +} + +func TestExternalStreamRoutedReadPropagatesSourceFailure(t *testing.T) { + want := errors.New("source shard unavailable") + client := &routedStreamClient{poll: func( + context.Context, *streamlib.PollMessagesRequest, + ) (*streamlib.PollMessagesResponse, error) { + return nil, want + }} + _, err := readExternalWindow(WithStreamClient(context.Background(), client), "ns", "source", 4, 6) + require.ErrorIs(t, err, want) +} + +func TestOwnedLiveStreamNeverReentersThroughRoutedClient(t *testing.T) { + client := &routedStreamClient{poll: func( + context.Context, *streamlib.PollMessagesRequest, + ) (*streamlib.PollMessagesResponse, error) { + t.Fatal("owned stream read re-entered the consumer through an RPC") + return nil, nil + }} + window, err := readWindowFor(WithStreamClient(context.Background(), client), nil, + &chasmworkflow.Workflow{}, "ns", "owned", false, "owned", 4, 6) + require.NoError(t, err) + require.EqualValues(t, 4, window.To) +} + +func TestOwnedReplayPinsConsumerRun(t *testing.T) { + engine := chasm.NewMockEngine(gomock.NewController(t)) + engine.EXPECT().ReadComponent(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( + func( + _ context.Context, + ref chasm.ComponentRef, + _ func(chasm.Context, chasm.Component) error, + _ ...chasm.TransitionOption, + ) error { + require.Equal(t, "consumer-run", ref.RunID) + require.Equal(t, "consumer", ref.BusinessID) + return nil + }) + _, err := readRecordedRange(chasm.NewEngineContext(context.Background(), engine), + definition.NewWorkflowKey("ns", "consumer", "consumer-run"), + streamOrigin{name: "owned"}, "owned", 4, 6) + require.NoError(t, err) +} diff --git a/service/history/api/recordworkflowtaskstarted/stream_slices.go b/service/history/api/recordworkflowtaskstarted/stream_slices.go new file mode 100644 index 00000000000..dd5b16980bf --- /dev/null +++ b/service/history/api/recordworkflowtaskstarted/stream_slices.go @@ -0,0 +1,756 @@ +package recordworkflowtaskstarted + +import ( + "context" + "errors" + "fmt" + "slices" + + commonpb "go.temporal.io/api/common/v1" + enumspb "go.temporal.io/api/enums/v1" + historypb "go.temporal.io/api/history/v1" + "go.temporal.io/api/serviceerror" + streampb "go.temporal.io/api/stream/v1" + "go.temporal.io/server/api/historyservice/v1" + "go.temporal.io/server/chasm" + "go.temporal.io/server/chasm/lib/stream" + chasmworkflow "go.temporal.io/server/chasm/lib/workflow" + "go.temporal.io/server/common" + "go.temporal.io/server/common/definition" + "go.temporal.io/server/common/failure" + "go.temporal.io/server/common/locks" + "go.temporal.io/server/common/persistence" + "go.temporal.io/server/common/persistence/serialization" + "go.temporal.io/server/service/history/api" + "go.temporal.io/server/service/history/consts" + historyi "go.temporal.io/server/service/history/interfaces" + "go.temporal.io/server/service/history/workflow" + "google.golang.org/protobuf/proto" +) + +// rangeUnavailable says a stream range this consumer depends on can no longer be +// served: the stream was truncated or deleted past it, or re-supplying it would +// exceed what one response may carry. Retrying the request would only ask the +// same stream again, so the workflow task is failed with it instead. +type rangeUnavailable struct { + msg string +} + +func (e *rangeUnavailable) Error() string { + return e.msg +} + +func unavailablef(format string, args ...any) error { + return &rangeUnavailable{msg: fmt.Sprintf(format, args...)} +} + +// unavailableIfGone tells a read failure that means the range is gone for good +// from one worth retrying. A shard that is moving or a store that timed out is +// the second kind and keeps its own error. +func unavailableIfGone(err error, format string, args ...any) error { + var precondition *serviceerror.FailedPrecondition + var notFound *serviceerror.NotFound + if errors.As(err, &precondition) || errors.As(err, ¬Found) { + return unavailablef(format+": %v", append(args, err)...) + } + return err +} + +// failTaskForStreams records why the task cannot be started and schedules the +// next attempt. The event is what an operator sees; a bare error to matching +// would only make the task come back. +func failTaskForStreams( + ms historyi.MutableState, + workflowTask *historyi.WorkflowTaskInfo, + cause *rangeUnavailable, +) error { + if _, err := ms.AddWorkflowTaskFailedEvent( + workflowTask, + enumspb.WORKFLOW_TASK_FAILED_CAUSE_STREAM_RANGE_UNAVAILABLE, + failure.NewServerFailure(cause.Error(), true), + consts.IdentityHistoryService, + nil, + "", + "", + "", + 0, + ); err != nil { + return err + } + ms.FlushBufferedEvents() + return workflow.ScheduleWorkflowTask(ms) +} + +// streamOrigin says where a subscribed stream lives, which decides how its +// payload is read: an external stream from its own execution, an owned one +// from the consumer's. +type streamOrigin struct { + external bool + // The name the consumer knows the stream by, which is how an owned one is + // found on the consumer's own component. + name string + + // Where the subscription began, and how far its completed tasks have + // committed. Together they say exactly which offsets replay owes the + // worker, so a re-supply that comes up short can be detected instead of + // silently handing the workflow less than it originally saw. + start int64 + committed int64 +} + +// streamOrigins describes every stream the workflow consumes from a read-only +// view of its component, for a task that is built without delivering anything +// and so has no other way of learning what a cold replay owes it. +func streamOrigins( + ctx context.Context, + ms historyi.MutableState, +) (map[string]streamOrigin, error) { + if !ms.HasChasmWorkflowComponent() { + return nil, nil + } + wf, chasmCtx, err := ms.ChasmWorkflowComponentReadOnly(ctx) + if err != nil { + return nil, err + } + if len(wf.StreamCursors) == 0 { + return nil, nil + } + addresses := make(map[string]streamOrigin, len(wf.StreamCursors)) + for name, field := range wf.StreamCursors { + cursor := field.Get(chasmCtx) + addresses[cursor.StreamID()] = streamOrigin{ + external: cursor.IsExternal(), + name: name, + start: cursor.StartOffset(), + committed: cursor.Offset(), + } + } + return addresses, nil +} + +// deliveryFrontier is the offset a delivery clips to. For a stream this +// execution owns it is read directly; for one in another execution it is +// whatever that stream last pushed here, because reading the real value would +// mean reaching across executions while this transaction is open. +func deliveryFrontier( + chasmCtx chasm.Context, + wf *chasmworkflow.Workflow, + name string, + cursor *stream.Cursor, +) (int64, error) { + if cursor.IsExternal() { + return cursor.KnownHead(), nil + } + field, ok := wf.Streams[name] + if !ok { + return 0, serviceerror.NewFailedPreconditionf( + "workflow consumes stream %q, which it neither owns nor subscribed to externally", name) + } + state, err := field.Get(chasmCtx).Snapshot(chasmCtx, struct{}{}) + if err != nil { + return 0, err + } + + // A consumer that fell behind a truncating stream is told so rather than + // handed the rest and left with a hole it cannot see. The floor protects + // an active consumer, so reaching this means the subscription was released + // and the stream moved on. + if cursor.Offset() < state.GetBaseOffset() { + return 0, unavailablef( + "stream %q was truncated past this consumer: it is at offset %d and the stream "+ + "now starts at %d", name, cursor.Offset(), state.GetBaseOffset()) + } + return state.GetHeadOffset(), nil +} + +// readDeliverable reads the next run of a stream for the task being started +// and returns it with the run id of the execution that holds the stream. +func readDeliverable( + ctx context.Context, + chasmCtx chasm.Context, + wf *chasmworkflow.Workflow, + namespaceID string, + name string, + cursor *stream.Cursor, + from, to int64, + limits stream.Limits, +) ([]*streampb.StreamRecord, int64, string, error) { + if to <= from { + return nil, from, "", nil + } + w, err := readWindowFor(ctx, chasmCtx, wf, namespaceID, name, cursor.IsExternal(), + cursor.StreamID(), from, to) + if err != nil { + return nil, 0, "", unavailableIfGone(err, + "stream %q no longer holds offsets [%d,%d) this consumer is due", + cursor.StreamID(), from, to) + } + // The collected run is contiguous from `from`, so the byte cap recomputes + // the same end offset the read would have reported. + collected, _, err := stream.CollectRecords( + w.Blobs, w.Starts, from, w.To, limits.MaxConsumeItemsPerTask, nil) + if err != nil { + return nil, 0, "", err + } + // Cap before converting: the byte budget applies to the run as stored, and + // trimming decides how far the recorded range reaches. + collected, readTo := stream.CapByBytes(collected, from, limits.MaxConsumeBytesPerTask) + return stream.ToAPIRecords(collected), readTo, w.RunID, nil +} + +// readWindowFor reads a range from whichever component holds it. +// +// Standalone external streams use the routed service client. That RPC only +// reads the source execution and never calls back into the locked consumer. +// Owned streams must use the already-loaded component: re-entering this +// execution through an RPC would contend with the lock already held. +func readWindowFor( + ctx context.Context, + chasmCtx chasm.Context, + wf *chasmworkflow.Workflow, + namespaceID string, + name string, + external bool, + streamID string, + from, to int64, +) (stream.Window, error) { + req := stream.WindowRequest{From: from, MaxMessages: int32(to - from)} + if !external { + s := wf.OwnedStream(chasmCtx, name) + if s == nil { + return stream.Window{To: from}, nil + } + return s.ReadWindow(chasmCtx, req) + } + return readExternalWindow(ctx, namespaceID, streamID, from, to) +} + +// DeliverStreamSlices hands the next range to a task built outside this +// package. The inline task returned by RespondWorkflowTaskCompleted is built by +// its own handler, so without this a subscribed workflow gets no data on the +// dispatch path every current SDK asks for. +// +// Only the live range. That task is always sticky, so the worker still holds +// the execution and has no ranges to replay. +func DeliverStreamSlices( + ctx context.Context, + shardContext historyi.ShardContext, + ms historyi.MutableState, +) ([]*streampb.StreamSlice, error) { + live, _, err := deliverStreamSlices(ctx, shardContext, ms) + return live, err +} + +// deliverStreamSlices hands the next range of every stream this workflow +// consumes to the task being started, and stages that range on the cursor so +// the event closing the task can record what was delivered. +// +// The payload read runs with the workflow lock held. That is the price of +// deciding a range and staging it in one transaction: staged first and read +// after, a failed read would leave a range that the worker never received but +// that the completion would still record as consumed. +func deliverStreamSlices( + ctx context.Context, + shardContext historyi.ShardContext, + ms historyi.MutableState, +) ([]*streampb.StreamSlice, map[string]streamOrigin, error) { + if !ms.HasChasmWorkflowComponent() { + return nil, nil, nil + } + // Read-only first. Reaching the component mutably marks it dirty, and a + // workflow with no subscription should not pay a node in its transaction + // for every task it runs. + if readOnly, _, err := ms.ChasmWorkflowComponentReadOnly(ctx); err != nil { + return nil, nil, err + } else if len(readOnly.StreamCursors) == 0 { + return nil, nil, nil + } + + wf, chasmCtx, err := ms.ChasmWorkflowComponent(ctx) + if err != nil { + return nil, nil, err + } + + names := make([]string, 0, len(wf.StreamCursors)) + for name := range wf.StreamCursors { + names = append(names, name) + } + // Delivery order has to be stable, because the completion records these + // ranges in the order they were produced. + slices.Sort(names) + + limits := shardContext.GetConfig().Stream.LimitsFor(ms.GetNamespaceEntry().Name().String()) + maxItems := limits.MaxConsumeItemsPerTask + consumer := ms.GetWorkflowKey() + + slicesOut := make([]*streampb.StreamSlice, 0, len(names)) + addresses := make(map[string]streamOrigin, len(names)) + for _, name := range names { + cursor := wf.StreamCursors[name].Get(chasmCtx) + + head, err := deliveryFrontier(chasmCtx, wf, name, cursor) + if err != nil { + return nil, nil, err + } + + // A range already staged is redelivered unchanged. The same task can be + // started more than once, and letting the second attempt pick up newer + // data would hand the workflow a different range than the one the + // completion is going to record. + from, to, restaged := cursor.Pending() + if !restaged { + from = cursor.Offset() + // Clip to the frontier, which is the committed head for an owned + // stream and the last pushed head for an external one. + to = min(from+int64(maxItems), head) + } + + records, next, ownerRunID, err := readDeliverable( + ctx, chasmCtx, wf, consumer.NamespaceID, name, cursor, from, to, limits) + if err != nil { + return nil, nil, err + } + if !cursor.IsExternal() { + ownerRunID = consumer.RunID + } + + if restaged { + // The staged range is the one the completion will record, so the + // worker has to be handed exactly that. A re-read that comes back + // short would otherwise deliver less than history claims was + // consumed, and replay would then disagree with the original run. + if next != to { + return nil, nil, serviceerror.NewInternalf( + "stream %q staged range [%d,%d) re-read as [%d,%d)", + cursor.StreamID(), from, to, from, next) + } + } else if err := cursor.StagePending(chasmCtx, from, next); err != nil { + return nil, nil, err + } + + // Attached even when empty. A task that saw nothing still has to record + // that it saw nothing, and the slice is what the completion reads. + slicesOut = append(slicesOut, &streampb.StreamSlice{ + StreamId: cursor.StreamID(), + RunId: ownerRunID, + FromOffset: from, + ToOffset: next, + Records: records, + }) + addresses[cursor.StreamID()] = streamOrigin{ + external: cursor.IsExternal(), + name: name, + start: cursor.StartOffset(), + committed: cursor.Offset(), + } + } + return slicesOut, addresses, nil +} + +// Bounds on one cold replay's re-supply. History holds offsets and not payloads, +// so replaying a consumer means re-reading every range its completed tasks +// recorded, and that grows with the workflow's whole life rather than with the +// task being started. A consumer past these bounds cannot be replayed by this +// path; its task is failed with a cause that says so rather than retried. +const ( + maxReplayRecords = 100_000 + maxReplayBytes = 64 << 20 + // Pages of history walked to find the recorded ranges. Empty ranges cost + // nothing to attach but each page is a store read under a request deadline. + maxReplayPages = 256 +) + +// ownedRange names a range of a stream the consumer owns. +type ownedRange struct { + name string + req stream.WindowRequest +} + +// readRecordedRange re-supplies a range a completed task recorded. +// +// It runs after the execution lock is released, so the consumer's own component +// is read back through the engine. Standalone sources use the routed service +// client, since their shards can belong to a different history host. +func readRecordedRange( + ctx context.Context, + consumer definition.WorkflowKey, + origin streamOrigin, + streamID string, + from, to int64, +) (stream.Window, error) { + req := stream.WindowRequest{From: from, MaxMessages: int32(to - from)} + if origin.external { + return readExternalWindow(ctx, consumer.NamespaceID, streamID, from, to) + } + return chasm.ReadComponent(ctx, + chasm.NewComponentRef[*chasmworkflow.Workflow](chasm.ExecutionKey{ + NamespaceID: consumer.NamespaceID, + BusinessID: consumer.WorkflowID, + RunID: consumer.RunID, + }), + func(wf *chasmworkflow.Workflow, cctx chasm.Context, r ownedRange) (stream.Window, error) { + s := wf.OwnedStream(cctx, r.name) + if s == nil { + return stream.Window{To: r.req.From}, nil + } + return s.ReadWindow(cctx, r.req) + }, + ownedRange{name: origin.name, req: req}) +} + +// replaySupply collects what one cold replay owes the worker: the ranges every +// completed task recorded, re-read from their streams, within one response's +// budget. +type replaySupply struct { + ctx context.Context + consumer definition.WorkflowKey + addresses map[string]streamOrigin + + records int + bytes int + // How far the recorded ranges reach, per stream, so the coverage check + // can tell a complete re-supply from a short one. + reached map[string]int64 + slices []*streampb.StreamSlice +} + +// attachReplaySlices re-supplies the payloads for ranges that earlier workflow +// tasks recorded, keyed by the event that recorded each one. +// +// History holds offsets and never payloads, which is the property the whole +// design rests on. The cost lands here: a worker replaying from History has to +// be handed the same bytes those tasks were given, and the only place they +// exist is the stream itself. The response field alone cannot carry this, +// because it is built once per delivery while a cache miss replays every prior +// task, so each range travels with the id of the event that recorded it. +// +// The response carries one page of history. The recording events of a consumer +// that has lived longer than a page are on the pages after it, so every page is +// read here. Empty ranges are recorded too and have to travel with their +// events, which is why the walk cannot stop once the committed offset is found. +func attachReplaySlices( + ctx context.Context, + shardContext historyi.ShardContext, + consumer definition.WorkflowKey, + addresses map[string]streamOrigin, + pageSize int32, + resp *historyservice.RecordWorkflowTaskStartedResponseWithRawHistory, +) error { + // Only a workflow with a live subscription has anything to re-supply, and + // that is exactly when delivery attached a slice for the current task. So + // this costs nothing for every other workflow. + if len(addresses) == 0 { + return nil + } + + // A sticky task means the worker still holds the execution, so it has + // nothing to replay. Its history begins at the previous task's completion, + // and that event carries the range that task already consumed, so + // re-supplying it here would hand the workflow the same records twice. + if resp.GetStickyExecutionEnabled() { + return nil + } + + events, err := eventsOfResponse(resp) + if err != nil { + return err + } + supply := &replaySupply{ + ctx: ctx, + consumer: consumer, + addresses: addresses, + reached: make(map[string]int64, len(addresses)), + } + if err := supply.collect(events); err != nil { + return err + } + + pages := 1 + token := resp.GetNextPageToken() + for len(token) > 0 { + pages++ + if pages > maxReplayPages { + return unavailablef( + "replaying workflow %q needs more than %d pages of history to find the stream "+ + "ranges its tasks consumed", consumer.GetWorkflowID(), maxReplayPages) + } + continuation, err := api.DeserializeHistoryToken(token) + if err != nil { + return err + } + // Read raw and decode here. The first page may have been read either + // way, and only the raw reader accepts the token both produce. + blobs, _, next, err := persistence.ReadFullPageRawEvents( + ctx, shardContext.GetExecutionManager(), &persistence.ReadHistoryBranchRequest{ + BranchToken: continuation.GetBranchToken(), + MinEventID: continuation.GetFirstEventId(), + MaxEventID: continuation.GetNextEventId(), + PageSize: int(pageSize), + NextPageToken: continuation.GetPersistenceToken(), + ShardID: shardContext.GetShardID(), + }) + if err != nil { + return err + } + pageEvents, err := decodeEventBlobs(blobs) + if err != nil { + return err + } + if err := supply.collect(pageEvents); err != nil { + return err + } + if len(next) == 0 { + break + } + continuation.PersistenceToken = next + if token, err = api.SerializeHistoryToken(continuation); err != nil { + return err + } + } + + if err := supply.checkCoverage(); err != nil { + return err + } + resp.StreamSlices = append(resp.StreamSlices, supply.slices...) + return nil +} + +// ReplaySlicesForQuery re-supplies the recorded ranges for a query dispatched +// straight through matching. +// +// Such a query carries the workflow's whole history to a worker that may never +// have seen the execution, exactly like a task after a cache miss, but it is +// built without RecordWorkflowTaskStarted and so never passes through the +// delivery above. The history is read from the branch rather than from a +// response, which is the only difference from the task path. +// +// The lease is held only long enough to read the cursors and the branch, and +// released before any page or stream is read, as on the task path. A range the +// stream can no longer serve is a failed precondition here rather than a failed +// task, because there is no task to fail: the query is refused and the +// workflow's next real task will fail with the cause. +func ReplaySlicesForQuery( + ctx context.Context, + shardContext historyi.ShardContext, + workflowConsistencyChecker api.WorkflowConsistencyChecker, + workflowKey definition.WorkflowKey, + pageSize int32, +) ([]*streampb.StreamSlice, error) { + lease, err := workflowConsistencyChecker.GetWorkflowLease( + ctx, nil, workflowKey, locks.PriorityHigh) + if err != nil { + return nil, err + } + ms := lease.GetMutableState() + addresses, err := streamOrigins(ctx, ms) + if err != nil || len(addresses) == 0 { + lease.GetReleaseFn()(nil) + return nil, err + } + branchToken, err := ms.GetCurrentBranchToken() + if err != nil { + lease.GetReleaseFn()(nil) + return nil, err + } + nextEventID := ms.GetNextEventID() + consumer := ms.GetWorkflowKey() + lease.GetReleaseFn()(nil) + + supply := &replaySupply{ + ctx: ctx, + consumer: consumer, + addresses: addresses, + reached: make(map[string]int64, len(addresses)), + } + var token []byte + for pages := 1; ; pages++ { + if pages > maxReplayPages { + return nil, unavailablef( + "replaying workflow %q needs more than %d pages of history to find the stream "+ + "ranges its tasks consumed", consumer.GetWorkflowID(), maxReplayPages) + } + blobs, _, next, err := persistence.ReadFullPageRawEvents( + ctx, shardContext.GetExecutionManager(), &persistence.ReadHistoryBranchRequest{ + BranchToken: branchToken, + MinEventID: common.FirstEventID, + MaxEventID: nextEventID, + PageSize: int(pageSize), + NextPageToken: token, + ShardID: shardContext.GetShardID(), + }) + if err != nil { + return nil, err + } + events, err := decodeEventBlobs(blobs) + if err != nil { + return nil, err + } + if err := supply.collect(events); err != nil { + return nil, err + } + if len(next) == 0 { + break + } + token = next + } + if err := supply.checkCoverage(); err != nil { + return nil, err + } + return supply.slices, nil +} + +// AsRefusal turns a range that cannot be served into the error a caller with +// no task to fail should return. Any other error is handed back unchanged. +func AsRefusal(err error) error { + var unavailable *rangeUnavailable + if errors.As(err, &unavailable) { + return serviceerror.NewFailedPrecondition(unavailable.Error()) + } + return err +} + +// collect re-reads every range the events on one page recorded. +func (s *replaySupply) collect(events []*historypb.HistoryEvent) error { + for _, event := range events { + for _, recorded := range event.GetWorkflowTaskCompletedEventAttributes().GetConsumedStreamRanges() { + address, ok := s.addresses[recorded.GetStreamId()] + if !ok { + // A subscription the workflow has since dropped. The range is + // still part of its history, but nothing is consuming it now. + continue + } + + records, ownerRunID, err := s.recordsFor(address, recorded) + if err != nil { + return err + } + + if to := recorded.GetToOffset(); to > s.reached[recorded.GetStreamId()] { + s.reached[recorded.GetStreamId()] = to + } + + // Attached even when empty: the task observed nothing, and replay + // has to reproduce that rather than infer it from an absence. + s.slices = append(s.slices, &streampb.StreamSlice{ + StreamId: recorded.GetStreamId(), + RunId: ownerRunID, + FromOffset: recorded.GetFromOffset(), + ToOffset: recorded.GetToOffset(), + Records: records, + WorkflowTaskCompletedEventId: event.GetEventId(), + }) + } + } + return nil +} + +// recordsFor re-reads one recorded range, or returns nothing for a range that +// recorded an empty observation. The run id is the execution holding the +// stream, which for an owned stream is the consumer itself. +func (s *replaySupply) recordsFor( + address streamOrigin, + recorded *streampb.StreamRange, +) ([]*streampb.StreamRecord, string, error) { + ownerRunID := s.consumer.RunID + if recorded.GetToOffset() <= recorded.GetFromOffset() { + if address.external { + ownerRunID = "" + } + return nil, ownerRunID, nil + } + + w, err := readRecordedRange(s.ctx, s.consumer, address, + recorded.GetStreamId(), recorded.GetFromOffset(), recorded.GetToOffset()) + if err != nil { + // Truncation and deletion are the reachable causes, and neither is + // recoverable for this workflow: without the bytes it can never + // replay, and without replaying it can never start another task. + return nil, "", unavailableIfGone(err, + "workflow %q cannot replay: stream %q no longer holds offsets [%d,%d) that one "+ + "of its completed tasks consumed", + s.consumer.GetWorkflowID(), recorded.GetStreamId(), + recorded.GetFromOffset(), recorded.GetToOffset()) + } + if address.external { + ownerRunID = w.RunID + } + collected, _, err := stream.CollectRecords( + w.Blobs, w.Starts, + recorded.GetFromOffset(), recorded.GetToOffset(), + int(recorded.GetToOffset()-recorded.GetFromOffset()), nil) + if err != nil { + return nil, "", err + } + records := stream.ToAPIRecords(collected) + + s.records += len(records) + for _, m := range records { + s.bytes += proto.Size(m) + } + // Bounded because every prior task's range is re-read into one response, so + // a long-lived consumer's cold replay grows with its whole history. Refused + // rather than trimmed: a short re-supply is what replay cannot survive. + if s.records > maxReplayRecords || s.bytes > maxReplayBytes { + return nil, "", unavailablef( + "replaying workflow %q needs more than %d records or %d bytes of stream history "+ + "to re-supply; the consumed ranges cannot be re-delivered in one response", + s.consumer.GetWorkflowID(), maxReplayRecords, maxReplayBytes) + } + return records, ownerRunID, nil +} + +// checkCoverage refuses a re-supply that stops short of what the cursor says +// the consumer consumed. With every page read, a shortfall means History and +// the cursor disagree, and handing the worker less than the first run saw is +// the one outcome replay cannot survive. +func (s *replaySupply) checkCoverage() error { + for streamID, address := range s.addresses { + got, ok := s.reached[streamID] + if !ok { + got = address.start + } + if got < address.committed { + return unavailablef( + "workflow %q consumed stream %q through offset %d but its history only records "+ + "through %d", s.consumer.GetWorkflowID(), streamID, address.committed, got) + } + } + return nil +} + +// eventsOfResponse reads the events the response is carrying, whichever of the +// three representations it happens to be using. +func eventsOfResponse( + resp *historyservice.RecordWorkflowTaskStartedResponseWithRawHistory, +) ([]*historypb.HistoryEvent, error) { + if resp.GetHistory() != nil { + return resp.GetHistory().GetEvents(), nil + } + + raw := resp.GetRawHistoryBytes() + if len(raw) == 0 { + //nolint:staticcheck // SA1019: still populated while the newer field rolls out. + raw = resp.GetRawHistory() + } + blobs := make([]*commonpb.DataBlob, 0, len(raw)) + for _, batch := range raw { + blobs = append(blobs, &commonpb.DataBlob{ + EncodingType: enumspb.ENCODING_TYPE_PROTO3, + Data: batch, + }) + } + return decodeEventBlobs(blobs) +} + +func decodeEventBlobs(blobs []*commonpb.DataBlob) ([]*historypb.HistoryEvent, error) { + serializer := serialization.NewSerializer() + var events []*historypb.HistoryEvent + for _, blob := range blobs { + batchEvents, err := serializer.DeserializeEvents(blob) + if err != nil { + return nil, err + } + events = append(events, batchEvents...) + } + return events, nil +} diff --git a/service/history/api/respondworkflowtaskcompleted/api.go b/service/history/api/respondworkflowtaskcompleted/api.go index db69fdfe58e..46386b602d6 100644 --- a/service/history/api/respondworkflowtaskcompleted/api.go +++ b/service/history/api/respondworkflowtaskcompleted/api.go @@ -833,6 +833,14 @@ func (handler *WorkflowTaskCompletedHandler) Invoke( // sticky is always enabled when worker request for new workflow task from RespondWorkflowTaskCompleted resp.StartedResponse.StickyExecutionEnabled = true + // The poll path delivers from its own handler, so this one has to ask + // as well or a subscribed workflow gets an inline task with no data. + resp.StartedResponse.StreamSlices, err = recordworkflowtaskstarted.DeliverStreamSlices( + ctx, handler.shardContext, ms) + if err != nil { + return nil, err + } + resp.NewWorkflowTask, err = handler.withNewWorkflowTask(ctx, namespaceEntry.Name(), req, resp.StartedResponse) if err != nil { return nil, err @@ -1005,6 +1013,7 @@ func (handler *WorkflowTaskCompletedHandler) createPollWorkflowTaskQueueResponse StartedTime: matchingResp.StartedTime, Queries: matchingResp.Queries, Messages: matchingResp.Messages, + StreamSlices: matchingResp.StreamSlices, } return resp, nil diff --git a/service/history/handler.go b/service/history/handler.go index c4aa4ea9f3b..f63609d89f9 100644 --- a/service/history/handler.go +++ b/service/history/handler.go @@ -880,6 +880,33 @@ func (h *Handler) GetMutableState(ctx context.Context, request *historyservice.G return resp, nil } +// GetStreamReplaySlices re-supplies the stream ranges a workflow's completed tasks recorded. +func (h *Handler) GetStreamReplaySlices( + ctx context.Context, + request *historyservice.GetStreamReplaySlicesRequest, +) (*historyservice.GetStreamReplaySlicesResponse, error) { + namespaceID := namespace.ID(request.GetNamespaceId()) + if namespaceID == "" { + return nil, h.convertError(errNamespaceNotSet) + } + + workflowID := request.GetExecution().GetWorkflowId() + shardContext, err := h.controller.GetShardByNamespaceWorkflow(namespaceID, workflowID) + if err != nil { + return nil, h.convertError(err) + } + engine, err := shardContext.GetEngine(ctx) + if err != nil { + return nil, h.convertError(err) + } + + resp, err := engine.GetStreamReplaySlices(ctx, request) + if err != nil { + return nil, h.convertError(err) + } + return resp, nil +} + // PollMutableState - returns the id of the next event in the execution's history func (h *Handler) PollMutableState(ctx context.Context, request *historyservice.PollMutableStateRequest) (*historyservice.PollMutableStateResponse, error) { namespaceID := namespace.ID(request.GetNamespaceId()) diff --git a/service/history/history_engine.go b/service/history/history_engine.go index c561e8efc2f..43407e3c359 100644 --- a/service/history/history_engine.go +++ b/service/history/history_engine.go @@ -23,6 +23,7 @@ import ( "go.temporal.io/server/common/collection" "go.temporal.io/server/common/definition" "go.temporal.io/server/common/headers" + "go.temporal.io/server/common/locks" "go.temporal.io/server/common/log" "go.temporal.io/server/common/log/tag" "go.temporal.io/server/common/metrics" @@ -538,6 +539,43 @@ func (e *historyEngineImpl) PollMutableState( }, nil } +// GetStreamReplaySlices re-supplies the stream ranges the workflow's completed +// tasks recorded, for a query task built outside RecordWorkflowTaskStarted. +func (e *historyEngineImpl) GetStreamReplaySlices( + ctx context.Context, + request *historyservice.GetStreamReplaySlicesRequest, +) (*historyservice.GetStreamReplaySlicesResponse, error) { + namespaceID := namespace.ID(request.GetNamespaceId()) + if err := api.ValidateNamespaceUUID(namespaceID); err != nil { + return nil, err + } + nsEntry, err := e.shardContext.GetNamespaceRegistry().GetNamespaceByID(namespaceID) + if err != nil { + return nil, err + } + runID := request.GetExecution().GetRunId() + if runID == "" { + runID, err = e.workflowConsistencyChecker.GetCurrentWorkflowRunID( + ctx, request.GetNamespaceId(), request.GetExecution().GetWorkflowId(), locks.PriorityHigh) + if err != nil { + return nil, err + } + } + workflowKey := definition.NewWorkflowKey( + request.GetNamespaceId(), request.GetExecution().GetWorkflowId(), runID) + slices, err := recordworkflowtaskstarted.ReplaySlicesForQuery( + ctx, + e.shardContext, + e.workflowConsistencyChecker, + workflowKey, + int32(e.config.HistoryMaxPageSize(nsEntry.Name().String())), + ) + if err != nil { + return nil, recordworkflowtaskstarted.AsRefusal(err) + } + return &historyservice.GetStreamReplaySlicesResponse{StreamSlices: slices}, nil +} + func (e *historyEngineImpl) QueryWorkflow( ctx context.Context, request *historyservice.QueryWorkflowRequest, diff --git a/service/history/historybuilder/event_factory.go b/service/history/historybuilder/event_factory.go index 058cb55b4ed..a40bac21f26 100644 --- a/service/history/historybuilder/event_factory.go +++ b/service/history/historybuilder/event_factory.go @@ -10,6 +10,7 @@ import ( failurepb "go.temporal.io/api/failure/v1" historypb "go.temporal.io/api/history/v1" sdkpb "go.temporal.io/api/sdk/v1" + streampb "go.temporal.io/api/stream/v1" taskqueuepb "go.temporal.io/api/taskqueue/v1" updatepb "go.temporal.io/api/update/v1" workflowpb "go.temporal.io/api/workflow/v1" @@ -162,6 +163,7 @@ func (b *EventFactory) CreateWorkflowTaskCompletedEvent( deploymentName string, deployment *deploymentpb.Deployment, behavior enumspb.VersioningBehavior, + streamCursors []*streampb.StreamRange, ) *historypb.HistoryEvent { event := b.createHistoryEvent(enumspb.EVENT_TYPE_WORKFLOW_TASK_COMPLETED, b.timeSource.Now()) event.Attributes = &historypb.HistoryEvent_WorkflowTaskCompletedEventAttributes{ @@ -176,6 +178,9 @@ func (b *EventFactory) CreateWorkflowTaskCompletedEvent( WorkerDeploymentName: deploymentName, DeploymentVersion: worker_versioning.ExternalWorkerDeploymentVersionFromDeployment(deployment), VersioningBehavior: behavior, + // Offsets only. The payloads the task consumed rode the task + // response, so History grows with tasks rather than with messages. + ConsumedStreamRanges: streamCursors, }, } diff --git a/service/history/historybuilder/history_builder.go b/service/history/historybuilder/history_builder.go index 4690a0e92b1..c24e00f3c20 100644 --- a/service/history/historybuilder/history_builder.go +++ b/service/history/historybuilder/history_builder.go @@ -10,6 +10,7 @@ import ( failurepb "go.temporal.io/api/failure/v1" historypb "go.temporal.io/api/history/v1" sdkpb "go.temporal.io/api/sdk/v1" + streampb "go.temporal.io/api/stream/v1" taskqueuepb "go.temporal.io/api/taskqueue/v1" updatepb "go.temporal.io/api/update/v1" workflowpb "go.temporal.io/api/workflow/v1" @@ -236,6 +237,7 @@ func (b *HistoryBuilder) AddWorkflowTaskCompletedEvent( deploymentName string, deployment *deploymentpb.Deployment, behavior enumspb.VersioningBehavior, + streamCursors []*streampb.StreamRange, ) *historypb.HistoryEvent { event := b.CreateWorkflowTaskCompletedEvent( scheduledEventID, @@ -248,6 +250,7 @@ func (b *HistoryBuilder) AddWorkflowTaskCompletedEvent( deploymentName, deployment, behavior, + streamCursors, ) event, _ = b.add(event) return event diff --git a/service/history/historybuilder/history_builder_categorization_test.go b/service/history/historybuilder/history_builder_categorization_test.go index 228824a50e5..43b6aed58e0 100644 --- a/service/history/historybuilder/history_builder_categorization_test.go +++ b/service/history/historybuilder/history_builder_categorization_test.go @@ -1277,6 +1277,7 @@ func (s *sutTestingAdapter) AddWorkflowTaskCompletedEvent(_ ...eventConfig) *his "", nil, enumspb.VERSIONING_BEHAVIOR_UNSPECIFIED, + nil, ) } diff --git a/service/history/historybuilder/history_builder_test.go b/service/history/historybuilder/history_builder_test.go index d86163397f3..d9f47866976 100644 --- a/service/history/historybuilder/history_builder_test.go +++ b/service/history/historybuilder/history_builder_test.go @@ -704,6 +704,7 @@ func (s *historyBuilderSuite) TestWorkflowTaskCompleted() { "", nil, enumspb.VERSIONING_BEHAVIOR_UNSPECIFIED, + nil, ) s.Equal(event, s.flush()) protorequire.ProtoEqual(s.T(), &historypb.HistoryEvent{ diff --git a/service/history/interfaces/engine.go b/service/history/interfaces/engine.go index 1c03f0e583f..669595c3098 100644 --- a/service/history/interfaces/engine.go +++ b/service/history/interfaces/engine.go @@ -29,6 +29,7 @@ type ( StartWorkflowExecution(ctx context.Context, request *historyservice.StartWorkflowExecutionRequest) (*historyservice.StartWorkflowExecutionResponse, error) GetMutableState(ctx context.Context, request *historyservice.GetMutableStateRequest) (*historyservice.GetMutableStateResponse, error) PollMutableState(ctx context.Context, request *historyservice.PollMutableStateRequest) (*historyservice.PollMutableStateResponse, error) + GetStreamReplaySlices(ctx context.Context, request *historyservice.GetStreamReplaySlicesRequest) (*historyservice.GetStreamReplaySlicesResponse, error) DescribeMutableState(ctx context.Context, request *historyservice.DescribeMutableStateRequest) (*historyservice.DescribeMutableStateResponse, error) ResetStickyTaskQueue(ctx context.Context, resetRequest *historyservice.ResetStickyTaskQueueRequest) (*historyservice.ResetStickyTaskQueueResponse, error) DescribeWorkflowExecution(ctx context.Context, request *historyservice.DescribeWorkflowExecutionRequest) (*historyservice.DescribeWorkflowExecutionResponse, error) diff --git a/service/history/interfaces/engine_mock.go b/service/history/interfaces/engine_mock.go index b2ca488f358..5936e91939b 100644 --- a/service/history/interfaces/engine_mock.go +++ b/service/history/interfaces/engine_mock.go @@ -280,6 +280,21 @@ func (mr *MockEngineMockRecorder) GetReplicationTasksIter(ctx, pollingCluster, m return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetReplicationTasksIter", reflect.TypeOf((*MockEngine)(nil).GetReplicationTasksIter), ctx, pollingCluster, minInclusiveTaskID, maxExclusiveTaskID) } +// GetStreamReplaySlices mocks base method. +func (m *MockEngine) GetStreamReplaySlices(ctx context.Context, request *historyservice.GetStreamReplaySlicesRequest) (*historyservice.GetStreamReplaySlicesResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetStreamReplaySlices", ctx, request) + ret0, _ := ret[0].(*historyservice.GetStreamReplaySlicesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetStreamReplaySlices indicates an expected call of GetStreamReplaySlices. +func (mr *MockEngineMockRecorder) GetStreamReplaySlices(ctx, request any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetStreamReplaySlices", reflect.TypeOf((*MockEngine)(nil).GetStreamReplaySlices), ctx, request) +} + // GetWorkflowExecutionHistory mocks base method. func (m *MockEngine) GetWorkflowExecutionHistory(ctx context.Context, request *historyservice.GetWorkflowExecutionHistoryRequest) (*historyservice.GetWorkflowExecutionHistoryResponseWithRaw, error) { m.ctrl.T.Helper() diff --git a/service/history/interfaces/mutable_state.go b/service/history/interfaces/mutable_state.go index 632c0fbfb38..b806c4097d0 100644 --- a/service/history/interfaces/mutable_state.go +++ b/service/history/interfaces/mutable_state.go @@ -366,6 +366,15 @@ type ( ChasmEnabled() bool ChasmSignalBacklinksEnabled() bool ChasmWorkflowComponent(ctx context.Context) (*chasmworkflow.Workflow, chasm.MutableContext, error) + // HasChasmWorkflowComponent reports whether a workflow component is + // actually reachable. Archetype alone does not answer this: a workflow + // predating CHASM reports the workflow archetype while carrying a tree + // that holds no components. + HasChasmWorkflowComponent() bool + // HasPendingStreamData reports whether a stream subscription still has + // offsets to deliver, which is the only case where stream traffic + // schedules a workflow task. + HasPendingStreamData() bool ChasmWorkflowComponentReadOnly(ctx context.Context) (*chasmworkflow.Workflow, chasm.Context, error) // Ensures that the chasm workflow component is installed in the mutable state CHASM tree. // Must be called before adding any components to the tree. diff --git a/service/history/interfaces/mutable_state_mock.go b/service/history/interfaces/mutable_state_mock.go index 15a5b7221da..4cf77df6e5d 100644 --- a/service/history/interfaces/mutable_state_mock.go +++ b/service/history/interfaces/mutable_state_mock.go @@ -3052,6 +3052,20 @@ func (mr *MockMutableStateMockRecorder) HasBufferedEvents() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HasBufferedEvents", reflect.TypeOf((*MockMutableState)(nil).HasBufferedEvents)) } +// HasChasmWorkflowComponent mocks base method. +func (m *MockMutableState) HasChasmWorkflowComponent() bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "HasChasmWorkflowComponent") + ret0, _ := ret[0].(bool) + return ret0 +} + +// HasChasmWorkflowComponent indicates an expected call of HasChasmWorkflowComponent. +func (mr *MockMutableStateMockRecorder) HasChasmWorkflowComponent() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HasChasmWorkflowComponent", reflect.TypeOf((*MockMutableState)(nil).HasChasmWorkflowComponent)) +} + // HasCompletedAnyWorkflowTask mocks base method. func (m *MockMutableState) HasCompletedAnyWorkflowTask() bool { m.ctrl.T.Helper() @@ -3080,6 +3094,20 @@ func (mr *MockMutableStateMockRecorder) HasParentExecution() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HasParentExecution", reflect.TypeOf((*MockMutableState)(nil).HasParentExecution)) } +// HasPendingStreamData mocks base method. +func (m *MockMutableState) HasPendingStreamData() bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "HasPendingStreamData") + ret0, _ := ret[0].(bool) + return ret0 +} + +// HasPendingStreamData indicates an expected call of HasPendingStreamData. +func (mr *MockMutableStateMockRecorder) HasPendingStreamData() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HasPendingStreamData", reflect.TypeOf((*MockMutableState)(nil).HasPendingStreamData)) +} + // HasPendingWorkflowTask mocks base method. func (m *MockMutableState) HasPendingWorkflowTask() bool { m.ctrl.T.Helper() diff --git a/service/history/workflow/mutable_state_impl.go b/service/history/workflow/mutable_state_impl.go index 90702e7f02d..e297187ad89 100644 --- a/service/history/workflow/mutable_state_impl.go +++ b/service/history/workflow/mutable_state_impl.go @@ -22,6 +22,7 @@ import ( historypb "go.temporal.io/api/history/v1" rulespb "go.temporal.io/api/rules/v1" "go.temporal.io/api/serviceerror" + streampb "go.temporal.io/api/stream/v1" taskqueuepb "go.temporal.io/api/taskqueue/v1" updatepb "go.temporal.io/api/update/v1" workerpb "go.temporal.io/api/worker/v1" @@ -672,6 +673,37 @@ func (ms *MutableStateImpl) mustInitHSM() { ms.stateMachineNode = stateMachineNode } +// commitStreamCursors folds each staged range into its cursor and returns the +// ranges to record. Called as the completed event is built, so the advance and +// the event carrying the range are in one transaction: split apart, a crash +// between them would either redeliver a range or skip it with nothing in +// History to say so. +func (ms *MutableStateImpl) commitStreamCursors() ([]*streampb.StreamRange, error) { + if !ms.HasChasmWorkflowComponent() { + return nil, nil + } + // Reaching the component through a mutable context marks it dirty, which + // would add a node to the transaction of every workflow that has no + // subscription at all. Ask read-only first, and take the write path only + // when there is something to fold in. + // + // The background context matches EnsureChasmWorkflowComponent: it only + // reaches components already in memory. + wf, _, err := ms.ChasmWorkflowComponentReadOnly(context.Background()) + if err != nil { + return nil, err + } + if len(wf.StreamCursors) == 0 { + return nil, nil + } + + wf, chasmCtx, err := ms.ChasmWorkflowComponent(context.Background()) + if err != nil { + return nil, err + } + return wf.CommitStreamCursors(chasmCtx), nil +} + // carryStreamSubscriptionsTo hands this run's subscriptions to the run that // continues it. // @@ -700,6 +732,30 @@ func (ms *MutableStateImpl) carryStreamSubscriptionsTo(newMutableState *MutableS return newWorkflow.ImportStreamSubscriptions(newChasmCtx, subscriptions) } +// HasPendingStreamData reports whether a subscription of this workflow has +// offsets left to deliver, which is the one condition under which stream +// traffic schedules a workflow task. +// +// Called on every transaction close for every workflow, almost none of which +// have a subscription, so it resolves the root component once rather than +// asking whether it exists and then asking for it. +func (ms *MutableStateImpl) HasPendingStreamData() bool { + node, ok := ms.chasmTree.(*chasm.Node) + if !ok { + return false + } + chasmCtx := chasm.NewContext(context.Background(), node) + rootComponent, err := node.ComponentByPath(chasmCtx, nil) + if err != nil { + return false + } + wf, ok := rootComponent.(*chasmworkflow.Workflow) + if !ok { + return false + } + return wf.StreamCursorsBehind(chasmCtx) +} + func (ms *MutableStateImpl) HasChasmWorkflowComponent() bool { node, ok := ms.chasmTree.(*chasm.Node) if !ok { @@ -7980,6 +8036,25 @@ func (ms *MutableStateImpl) closeTransactionHandleWorkflowTaskScheduling( } } + // A stream subscription with offsets left to deliver. Handled here rather + // than at workflow task completion so it also covers the transaction that + // registers a subscription against a stream that already has data, which + // completes no workflow task of its own. + // + // The pending-task check comes first because it is cheap: a workflow that + // already owes a task needs no further reason to run, so the subscription + // state is only consulted when the answer could change something. + if !ms.HasPendingWorkflowTask() && + !ms.IsWorkflowExecutionStatusPaused() && + ms.HasPendingStreamData() { + if _, err := ms.AddWorkflowTaskScheduledEvent( + false, + enumsspb.WORKFLOW_TASK_TYPE_NORMAL, + ); err != nil { + return err + } + } + return nil } diff --git a/service/history/workflow/workflow_task_state_machine.go b/service/history/workflow/workflow_task_state_machine.go index 72123c71bfa..9ecc63b75ae 100644 --- a/service/history/workflow/workflow_task_state_machine.go +++ b/service/history/workflow/workflow_task_state_machine.go @@ -826,6 +826,11 @@ func (m *workflowTaskStateMachine) AddWorkflowTaskCompletedEvent( //nolint:staticcheck // SA1019 deprecated Deployment will clean up later wftDeployment := worker_versioning.DeploymentOrVersion(request.Deployment, wftDeploymentVersion) + streamCursors, err := m.ms.commitStreamCursors() + if err != nil { + return nil, err + } + // Now write the completed event event := m.ms.hBuilder.AddWorkflowTaskCompletedEvent( workflowTask.ScheduledEventID, @@ -838,6 +843,7 @@ func (m *workflowTaskStateMachine) AddWorkflowTaskCompletedEvent( deploymentName, wftDeployment, vb, + streamCursors, ) override := m.ms.GetExecutionInfo().GetVersioningInfo().GetVersioningOverride() @@ -849,7 +855,7 @@ func (m *workflowTaskStateMachine) AddWorkflowTaskCompletedEvent( } wftScheduleToClose := event.GetEventTime().AsTime().Sub(workflowTask.ScheduledTime) - err := m.afterAddWorkflowTaskCompletedEvent(event, limits, wftScheduleToClose) + err = m.afterAddWorkflowTaskCompletedEvent(event, limits, wftScheduleToClose) if err != nil { return nil, err } diff --git a/service/matching/matching_engine.go b/service/matching/matching_engine.go index 049da260866..b67e036559b 100644 --- a/service/matching/matching_engine.go +++ b/service/matching/matching_engine.go @@ -19,6 +19,7 @@ import ( enumspb "go.temporal.io/api/enums/v1" historypb "go.temporal.io/api/history/v1" "go.temporal.io/api/serviceerror" + streampb "go.temporal.io/api/stream/v1" taskqueuepb "go.temporal.io/api/taskqueue/v1" "go.temporal.io/api/workflowservice/v1" deploymentspb "go.temporal.io/server/api/deployment/v1" @@ -754,6 +755,16 @@ pollLoop: return emptyPollWorkflowTaskQueueResponse, nil } + // After the history, so every range the history records is + // re-supplied. Read the other way round a task could complete in + // between and the worker would see a recorded range with no bytes. + streamSlices, err := e.getStreamSlicesForQueryTask( + ctx, req.GetNamespaceId(), task, isStickyEnabled) + if err != nil { + _ = e.deliverQueryResult(task.query.taskID, &queryResult{internalError: err}) + return emptyPollWorkflowTaskQueueResponse, nil + } + resp := &historyservice.RecordWorkflowTaskStartedResponse{ PreviousStartedEventId: mutableStateResp.PreviousStartedEventId, NextEventId: mutableStateResp.NextEventId, @@ -765,6 +776,7 @@ pollLoop: Attempt: 1, History: hist, NextPageToken: nextPageToken, + StreamSlices: streamSlices, } // Local query match. Emit the dispatch latency metric. This metric does not include the query response time. @@ -863,6 +875,33 @@ pollLoop: } } +// getStreamSlicesForQueryTask asks History for the stream ranges the +// workflow's history records, re-read from their streams. +// +// A query task is built here without RecordWorkflowTaskStarted, so the +// delivery that attaches those ranges to an ordinary task never runs for it. +// Only a non-sticky query needs them: a sticky one goes to a worker that still +// holds the execution and has nothing to replay. +func (e *matchingEngineImpl) getStreamSlicesForQueryTask( + ctx context.Context, + namespaceID string, + task *internalTask, + isStickyEnabled bool, +) ([]*streampb.StreamSlice, error) { + if isStickyEnabled { + return nil, nil + } + resp, err := e.historyClient.GetStreamReplaySlices(ctx, + &historyservice.GetStreamReplaySlicesRequest{ + NamespaceId: namespaceID, + Execution: task.workflowExecution(), + }) + if err != nil { + return nil, err + } + return resp.GetStreamSlices(), nil +} + func (e *matchingEngineImpl) getHistoryForQueryTask( ctx context.Context, nsID namespace.ID, @@ -3367,6 +3406,7 @@ func (e *matchingEngineImpl) convertPollWorkflowTaskQueueResponse( StartedTime: resp.StartedTime, Queries: resp.Queries, Messages: resp.Messages, + StreamSlices: resp.StreamSlices, History: history, NextPageToken: resp.NextPageToken, PollerScalingDecision: resp.PollerScalingDecision, diff --git a/service/matching/matching_engine_test.go b/service/matching/matching_engine_test.go index 62cce1c554c..69163759c38 100644 --- a/service/matching/matching_engine_test.go +++ b/service/matching/matching_engine_test.go @@ -28,6 +28,7 @@ import ( nexuspb "go.temporal.io/api/nexus/v1" querypb "go.temporal.io/api/query/v1" "go.temporal.io/api/serviceerror" + streampb "go.temporal.io/api/stream/v1" taskqueuepb "go.temporal.io/api/taskqueue/v1" "go.temporal.io/api/workflowservice/v1" clockspb "go.temporal.io/server/api/clock/v1" @@ -6166,6 +6167,72 @@ func TestConvertPollWorkflowTaskQueueResponse_FieldMapping(t *testing.T) { assert.Equal(t, inputResp.History.Events[0].EventId, result.History.Events[0].EventId) } +// A non-sticky query task asks History for the recorded stream ranges; a +// sticky one does not, since its worker still holds the execution. +func TestGetStreamSlicesForQueryTask(t *testing.T) { + t.Parallel() + + nsID := namespace.ID("test-namespace-id") + task := &internalTask{ + namespace: namespace.Name("test-namespace"), + event: &genericTaskInfo{ + AllocatedTaskInfo: &persistencespb.AllocatedTaskInfo{ + Data: &persistencespb.TaskInfo{ + NamespaceId: nsID.String(), + WorkflowId: "test-workflow-id", + RunId: "test-run-id", + }, + }, + }, + } + resupplied := []*streampb.StreamSlice{{ + StreamId: "output", RunId: "test-run-id", FromOffset: 0, ToOffset: 2, + WorkflowTaskCompletedEventId: 4, + }} + + t.Run("sticky asks nothing", func(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + mockHistoryClient := historyservicemock.NewMockHistoryServiceClient(ctrl) + engine := &matchingEngineImpl{historyClient: mockHistoryClient, logger: log.NewNoopLogger()} + + slices, err := engine.getStreamSlicesForQueryTask(context.Background(), nsID.String(), task, true) + require.NoError(t, err) + require.Empty(t, slices) + }) + + t.Run("non-sticky carries what History re-supplies", func(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + mockHistoryClient := historyservicemock.NewMockHistoryServiceClient(ctrl) + mockHistoryClient.EXPECT().GetStreamReplaySlices(gomock.Any(), + &historyservice.GetStreamReplaySlicesRequest{ + NamespaceId: nsID.String(), + Execution: task.workflowExecution(), + }).Return(&historyservice.GetStreamReplaySlicesResponse{StreamSlices: resupplied}, nil). + Times(1) + engine := &matchingEngineImpl{historyClient: mockHistoryClient, logger: log.NewNoopLogger()} + + slices, err := engine.getStreamSlicesForQueryTask( + context.Background(), nsID.String(), task, false) + require.NoError(t, err) + require.Len(t, slices, 1) + require.Equal(t, int64(4), slices[0].GetWorkflowTaskCompletedEventId()) + }) + + t.Run("a refusal fails the query", func(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + mockHistoryClient := historyservicemock.NewMockHistoryServiceClient(ctrl) + mockHistoryClient.EXPECT().GetStreamReplaySlices(gomock.Any(), gomock.Any()).Return( + nil, serviceerror.NewFailedPrecondition("stream no longer holds the range")).Times(1) + engine := &matchingEngineImpl{historyClient: mockHistoryClient, logger: log.NewNoopLogger()} + + _, err := engine.getStreamSlicesForQueryTask(context.Background(), nsID.String(), task, false) + require.ErrorContains(t, err, "no longer holds") + }) +} + func TestGetHistoryForQueryTask(t *testing.T) { t.Parallel() diff --git a/service/matching/wire_compat_test.go b/service/matching/wire_compat_test.go new file mode 100644 index 00000000000..f55255343e4 --- /dev/null +++ b/service/matching/wire_compat_test.go @@ -0,0 +1,178 @@ +package matching + +import ( + "fmt" + "slices" + "testing" + + "github.com/stretchr/testify/require" + "go.temporal.io/server/api/historyservice/v1" + "go.temporal.io/server/api/matchingservice/v1" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// Each started-task response exists twice, once carrying History and once +// carrying raw bytes, so matching can forward a task without deserializing it. +// The two are only interchangeable while every field number means the same +// thing on both sides. That invariant is stated in a proto comment, which is +// easy to satisfy on one copy and forget on the other, and a mismatch stays +// invisible until history.sendRawHistoryBetweenInternalServices is enabled. +func TestStartedResponsePairsStayWireCompatible(t *testing.T) { + t.Run("history service", func(t *testing.T) { + // raw_history is a History on one side and repeated bytes on the other, + // which is the whole point of keeping two messages. + require.Empty(t, wireCompatDiff( + &historyservice.RecordWorkflowTaskStartedResponse{}, + &historyservice.RecordWorkflowTaskStartedResponseWithRawHistory{}, + 20, + )) + }) + + t.Run("matching service", func(t *testing.T) { + require.Empty(t, wireCompatDiff( + &matchingservice.PollWorkflowTaskQueueResponse{}, + &matchingservice.PollWorkflowTaskQueueResponseWithRawHistory{}, + 22, + )) + }) +} + +// Without a negative control the check above passes just as happily when it has +// stopped inspecting anything. Drop the exemption and the one field the pair is +// allowed to disagree on has to be reported. +func TestWireCompatDiffDetectsAMismatch(t *testing.T) { + diff := wireCompatDiff( + &historyservice.RecordWorkflowTaskStartedResponse{}, + &historyservice.RecordWorkflowTaskStartedResponseWithRawHistory{}, + ) + require.Len(t, diff, 1) + require.Contains(t, diff[0], "field 20") + require.Contains(t, diff[0], "raw_history") +} + +// wireCompatDiff reports every way the two messages would disagree on the wire, +// ignoring the field numbers named in typeMayDiffer. +func wireCompatDiff( + a proto.Message, + b proto.Message, + typeMayDiffer ...protoreflect.FieldNumber, +) []string { + exempt := make(map[protoreflect.FieldNumber]struct{}, len(typeMayDiffer)) + for _, number := range typeMayDiffer { + exempt[number] = struct{}{} + } + + aName := a.ProtoReflect().Descriptor().Name() + bName := b.ProtoReflect().Descriptor().Name() + aFields := fieldsByNumber(a) + bFields := fieldsByNumber(b) + + var problems []string + report := func(format string, args ...any) { + problems = append(problems, fmt.Sprintf(format, args...)) + } + + for _, number := range sortedFieldNumbers(aFields) { + aField := aFields[number] + bField, ok := bFields[number] + if !ok { + report("field %d (%s) is on %s but missing from %s", number, aField.Name(), aName, bName) + continue + } + if aField.Name() != bField.Name() { + report("field %d is %s on %s and %s on %s", number, aField.Name(), aName, bField.Name(), bName) + continue + } + if _, ok := exempt[number]; ok { + continue + } + + // A map field's value type is a synthesized entry message nested in its + // parent, so its full name always differs across the pair. Compare what + // actually goes on the wire instead. + if aField.IsMap() { + if !bField.IsMap() { + report("field %d (%s) is a map on %s only", number, aField.Name(), aName) + continue + } + if aField.MapKey().Kind() != bField.MapKey().Kind() { + report("field %d (%s) has a different map key type on each side", number, aField.Name()) + } + problem := valueTypeDiff(aField.MapValue(), bField.MapValue(), number, aField.Name()) + if problem != "" { + report("%s", problem) + } + continue + } + + if aField.Cardinality() != bField.Cardinality() { + report("field %d (%s) is %s on %s and %s on %s", + number, aField.Name(), aField.Cardinality(), aName, bField.Cardinality(), bName) + continue + } + if problem := valueTypeDiff(aField, bField, number, aField.Name()); problem != "" { + report("%s", problem) + } + } + + for _, number := range sortedFieldNumbers(bFields) { + if _, ok := aFields[number]; !ok { + report("field %d (%s) is on %s but missing from %s", + number, bFields[number].Name(), bName, aName) + } + } + + return problems +} + +func valueTypeDiff( + a protoreflect.FieldDescriptor, + b protoreflect.FieldDescriptor, + number protoreflect.FieldNumber, + name protoreflect.Name, +) string { + if a.Kind() != b.Kind() { + return fmt.Sprintf("field %d (%s) is %s on one side and %s on the other", + number, name, a.Kind(), b.Kind()) + } + + switch a.Kind() { + case protoreflect.MessageKind, protoreflect.GroupKind: + if a.Message().FullName() != b.Message().FullName() { + return fmt.Sprintf("field %d (%s) refers to %s on one side and %s on the other", + number, name, a.Message().FullName(), b.Message().FullName()) + } + case protoreflect.EnumKind: + if a.Enum().FullName() != b.Enum().FullName() { + return fmt.Sprintf("field %d (%s) refers to %s on one side and %s on the other", + number, name, a.Enum().FullName(), b.Enum().FullName()) + } + default: + // Scalars are fully described by the kind equality checked above. + } + return "" +} + +func fieldsByNumber(m proto.Message) map[protoreflect.FieldNumber]protoreflect.FieldDescriptor { + fields := m.ProtoReflect().Descriptor().Fields() + byNumber := make(map[protoreflect.FieldNumber]protoreflect.FieldDescriptor, fields.Len()) + for i := range fields.Len() { + field := fields.Get(i) + byNumber[field.Number()] = field + } + return byNumber +} + +// Field order drives the order of reported problems, which keeps a failure +// message stable between runs. +func sortedFieldNumbers( + fields map[protoreflect.FieldNumber]protoreflect.FieldDescriptor, +) []protoreflect.FieldNumber { + numbers := make([]protoreflect.FieldNumber, 0, len(fields)) + for number := range fields { + numbers = append(numbers, number) + } + slices.Sort(numbers) + return numbers +} diff --git a/tests/sdk_server_host_test.go b/tests/sdk_server_host_test.go new file mode 100644 index 00000000000..2278f350960 --- /dev/null +++ b/tests/sdk_server_host_test.go @@ -0,0 +1,81 @@ +package tests + +import ( + "context" + "encoding/json" + "errors" + "os" + "testing" + "time" + + "github.com/stretchr/testify/require" + enumspb "go.temporal.io/api/enums/v1" + "go.temporal.io/server/common/namespace" + "go.temporal.io/server/tests/testcore" +) + +// TestSDKValidationServerHost is not a test. It keeps a dedicated cluster up so +// an SDK's own test suite can run against a server built from this tree, and +// tears it down when the caller writes the shutdown file. Opt-in like the +// other measurement tooling; nothing in a normal run should start a cluster +// and hold it for hours. +func TestSDKValidationServerHost(t *testing.T) { + if os.Getenv("TEMPORAL_STREAM_BENCH") != "1" { + t.Skip("set TEMPORAL_STREAM_BENCH=1 to run") + } + readyPath := os.Getenv("AI198_SDK_SERVER_READY_FILE") + stopPath := os.Getenv("AI198_SDK_SERVER_STOP_FILE") + if readyPath == "" || stopPath == "" { + t.Skip("SDK validation host needs explicit ready and shutdown paths") + } + _, err := os.Stat(stopPath) + require.ErrorIs(t, err, os.ErrNotExist, "a stale shutdown file must not silently stop this host") + env := testcore.NewEnv(t, testcore.WithDedicatedCluster()) + ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + defer cancel() + _, err = env.RegisterNamespace( + ctx, namespace.Name("default"), 1, enumspb.ARCHIVAL_STATE_DISABLED, "", "") + require.NoError(t, err) + config := env.GetTestClusterConfig() + metadata := map[string]any{ + "status": "running", "pid": os.Getpid(), "target": env.FrontendGRPCAddress(), + "namespace": "default", + "persistence": "SQLite", + "history_hosts": config.HistoryConfig.NumHistoryHosts, + "history_shards": config.HistoryConfig.NumHistoryShards, + "started_utc": time.Now().UTC().Format(time.RFC3339), + "shutdown_file": stopPath, + "source_provenance": "../server-source-provenance.json", + "configuration": "tests/testcore dedicated test-cluster defaults; " + + "namespace default added for SDK clients", + } + writeMetadata := func() { + data, marshalErr := json.MarshalIndent(metadata, "", " ") + require.NoError(t, marshalErr) + require.NoError(t, os.WriteFile(readyPath, append(data, '\n'), 0o644)) + } + writeMetadata() + t.Logf("SDK validation server ready at %s in namespace default; shutdown file %s", + env.FrontendGRPCAddress(), stopPath) + ticker := time.NewTicker(500 * time.Millisecond) + defer ticker.Stop() + deadline := time.NewTimer(2 * time.Hour) + defer deadline.Stop() + for { + select { + case <-ticker.C: + if _, statErr := os.Stat(stopPath); statErr == nil { + metadata["status"] = "stopping" + metadata["stopped_utc"] = time.Now().UTC().Format(time.RFC3339) + writeMetadata() + return + } else if !errors.Is(statErr, os.ErrNotExist) { + require.NoError(t, statErr) + } + case <-deadline.C: + metadata["status"] = "maximum-runtime-reached" + writeMetadata() + return + } + } +} diff --git a/tests/stream_consume_test.go b/tests/stream_consume_test.go index 13db3915c18..4b372a0bbc4 100644 --- a/tests/stream_consume_test.go +++ b/tests/stream_consume_test.go @@ -1,14 +1,170 @@ package tests import ( + "context" "testing" + "time" "github.com/google/uuid" "github.com/stretchr/testify/require" + commandpb "go.temporal.io/api/command/v1" commonpb "go.temporal.io/api/common/v1" + enumspb "go.temporal.io/api/enums/v1" + historypb "go.temporal.io/api/history/v1" + streampb "go.temporal.io/api/stream/v1" + taskqueuepb "go.temporal.io/api/taskqueue/v1" "go.temporal.io/api/workflowservice/v1" + streamlib "go.temporal.io/server/chasm/lib/stream/gen/streampb/v1" + chasmworkflow "go.temporal.io/server/chasm/lib/workflow" + "go.temporal.io/server/common/testing/await" + "go.temporal.io/server/tests/testcore" + "google.golang.org/protobuf/types/known/durationpb" ) +// Path C: a workflow consuming a stream. The slice rides the workflow task and +// only the offsets it covered are written to History, so consumption costs no +// event of its own no matter how many messages it carried. +func TestStreamWorkflowConsumesWithoutHistoryPayloads(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + id := "stream-wf-consume-" + uuid.NewString() + tq := &taskqueuepb.TaskQueue{Name: id + "-tq", Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + + we, err := env.FrontendClient().StartWorkflowExecution( + s.ctx(), + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: s.ns, + WorkflowId: id, + WorkflowType: &commonpb.WorkflowType{Name: "stream-consumer"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + Identity: "tester", + }, + ) + require.NoError(t, err) + + // What each task was handed, in the order the tasks ran. + var delivered [][]*streampb.StreamSlice + task := 0 + + //nolint:staticcheck // SA1019: only the deprecated poller can emit this command type. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + delivered = append(delivered, resp.GetStreamSlices()) + task++ + if task > 1 { + return nil, nil + } + // First task publishes; nothing is subscribed yet, so it consumes + // nothing. + return []*commandpb.Command{{ + CommandType: enumspb.COMMAND_TYPE_APPEND_STREAM_RECORDS, + Attributes: &commandpb.Command_AppendStreamRecordsCommandAttributes{ + AppendStreamRecordsCommandAttributes: &commandpb.AppendStreamRecordsCommandAttributes{ + Records: []*streampb.StreamRecord{ + {Body: &commonpb.Payload{Data: []byte("first-token")}, Topic: "tokens"}, + {Body: &commonpb.Payload{Data: []byte("second-token")}, Topic: "tokens"}, + {Body: &commonpb.Payload{Data: []byte("third-token")}, Topic: "tokens"}, + }, + }, + }, + }}, nil + }, + Logger: env.Logger, + T: t, + } + + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + require.Empty(t, delivered[0], "nothing is subscribed on the first task") + + // Subscribe from the start of the stream. + sub, err := s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, + WorkflowId: id, + StreamName: chasmworkflow.DefaultStreamName, + StartOffset: 0, + }, + }) + require.NoError(t, err) + require.Equal(t, int64(0), sub.GetFrontendResponse().GetStartOffset()) + + // Resubscribing must not rewind. Ranges below the cursor are already in + // History, and moving back would replay them as if they were new. + sub2, err := s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: id, + StreamName: chasmworkflow.DefaultStreamName, StartOffset: 2, + }, + }) + require.NoError(t, err) + require.Equal(t, int64(0), sub2.GetFrontendResponse().GetStartOffset(), + "a second subscribe must report the cursor already registered") + + // Second task: the published range should arrive on the task itself. + signalWorkflow(t, s, id, we.GetRunId()) + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + slice := currentSlice(t, delivered[1]) + require.Equal(t, int64(0), slice.GetFromOffset()) + require.Equal(t, int64(3), slice.GetToOffset()) + require.Len(t, slice.GetRecords(), 3) + require.Equal(t, "first-token", string(slice.GetRecords()[0].GetBody().GetData())) + require.Equal(t, "third-token", string(slice.GetRecords()[2].GetBody().GetData())) + + // Third task: the cursor is caught up, so the range is empty. An empty + // range is still delivered and still recorded, because a task that saw + // nothing is a fact replay has to reproduce. + signalWorkflow(t, s, id, we.GetRunId()) + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + idleSlice := currentSlice(t, delivered[2]) + require.Equal(t, int64(3), idleSlice.GetFromOffset(), "a caught-up subscription is still attached") + require.Equal(t, int64(3), idleSlice.GetToOffset()) + require.Empty(t, idleSlice.GetRecords()) + + events := env.GetHistory(s.ns, &commonpb.WorkflowExecution{WorkflowId: id, RunId: we.GetRunId()}) + recorded := recordedCursors(events) + + // One record per completed task from the subscription onward, including the + // one that consumed nothing. + require.Len(t, recorded, 2) + require.Equal(t, int64(0), recorded[0].GetFromOffset()) + require.Equal(t, int64(3), recorded[0].GetToOffset()) + require.Equal(t, int64(3), recorded[1].GetFromOffset()) + require.Equal(t, int64(3), recorded[1].GetToOffset(), + "the idle task must record the empty range rather than omit it") + + // The point of the design: offsets are in History, payloads are not. + for _, e := range events { + require.NotContains(t, e.String(), "first-token", + "a consumed payload must never reach History, found in %v", e.GetEventType()) + require.NotContains(t, e.String(), "third-token", + "a consumed payload must never reach History, found in %v", e.GetEventType()) + } +} + +func recordedCursors(events []*historypb.HistoryEvent) []*streampb.StreamRange { + var out []*streampb.StreamRange + for _, e := range events { + attrs := e.GetWorkflowTaskCompletedEventAttributes() + out = append(out, attrs.GetConsumedStreamRanges()...) + } + return out +} + func signalWorkflow(t *testing.T, s *streamTestEnv, workflowID, runID string) { t.Helper() _, err := s.env.FrontendClient().SignalWorkflowExecution( @@ -23,3 +179,935 @@ func signalWorkflow(t *testing.T, s *streamTestEnv, workflowID, runID string) { ) require.NoError(t, err) } + +// Publishing never wakes a workflow, but an active subscription does. Without +// this the rest of a stream arrives only when something unrelated happens to +// schedule a task. +func TestStreamSubscriptionSchedulesItsOwnWorkflowTask(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + id := "stream-wf-wake-" + uuid.NewString() + tq := &taskqueuepb.TaskQueue{Name: id + "-tq", Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + + _, err := env.FrontendClient().StartWorkflowExecution( + s.ctx(), + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: s.ns, + WorkflowId: id, + WorkflowType: &commonpb.WorkflowType{Name: "stream-consumer"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + Identity: "tester", + }, + ) + require.NoError(t, err) + + publish := func(bodies ...string) []*commandpb.Command { + messages := make([]*streampb.StreamRecord, len(bodies)) + for i, b := range bodies { + messages[i] = &streampb.StreamRecord{Body: &commonpb.Payload{Data: []byte(b)}, Topic: "tokens"} + } + return []*commandpb.Command{{ + CommandType: enumspb.COMMAND_TYPE_APPEND_STREAM_RECORDS, + Attributes: &commandpb.Command_AppendStreamRecordsCommandAttributes{ + AppendStreamRecordsCommandAttributes: &commandpb.AppendStreamRecordsCommandAttributes{ + Records: messages, + }, + }, + }} + } + + var delivered [][]*streampb.StreamSlice + task := 0 + + //nolint:staticcheck // SA1019: only the deprecated poller can emit this command type. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + delivered = append(delivered, resp.GetStreamSlices()) + task++ + switch task { + case 1: + return publish("warmup"), nil + case 2: + // Published while subscribed and caught up, so completing this + // task leaves the cursor behind head. + return publish("alpha", "beta"), nil + default: + return nil, nil + } + }, + Logger: env.Logger, + T: t, + } + + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + // Subscribe at the tail, so nothing is owed yet. + sub, err := s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: id, + StreamName: chasmworkflow.DefaultStreamName, StartOffset: -1, + }, + }) + require.NoError(t, err) + require.Equal(t, int64(1), sub.GetFrontendResponse().GetStartOffset()) + + signalWorkflow(t, s, id, "") + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + require.Equal(t, int64(1), currentSlice(t, delivered[1]).GetToOffset(), + "nothing new at the tail yet") + + // No signal this time. The subscription owes two offsets, so completing the + // previous task has to have scheduled this one. + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + require.Len(t, delivered, 3) + woken := currentSlice(t, delivered[2]) + require.Equal(t, int64(1), woken.GetFromOffset()) + require.Equal(t, int64(3), woken.GetToOffset()) + require.Len(t, woken.GetRecords(), 2) + require.Equal(t, "alpha", string(woken.GetRecords()[0].GetBody().GetData())) + + // And it has to stop. A wake condition that stayed true would spin the + // workflow on empty tasks forever. + pollCtx, cancel := context.WithTimeout(context.Background(), 3*time.Second) + defer cancel() + idle, err := env.FrontendClient().PollWorkflowTaskQueue( + pollCtx, + &workflowservice.PollWorkflowTaskQueueRequest{ + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + }, + ) + if err == nil { + require.Empty(t, idle.GetTaskToken(), + "a caught-up subscription must not keep scheduling tasks") + } +} + +// Subscribing to a stream that already has data is the other case where the +// workflow is owed a task it did not ask for by any other means. +func TestSubscribingToABacklogSchedulesAWorkflowTask(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + id := "stream-wf-backlog-" + uuid.NewString() + tq := &taskqueuepb.TaskQueue{Name: id + "-tq", Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + + _, err := env.FrontendClient().StartWorkflowExecution( + s.ctx(), + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: s.ns, + WorkflowId: id, + WorkflowType: &commonpb.WorkflowType{Name: "stream-consumer"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + Identity: "tester", + }, + ) + require.NoError(t, err) + + var delivered [][]*streampb.StreamSlice + task := 0 + + //nolint:staticcheck // SA1019: only the deprecated poller can emit this command type. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + delivered = append(delivered, resp.GetStreamSlices()) + task++ + if task > 1 { + return nil, nil + } + return []*commandpb.Command{{ + CommandType: enumspb.COMMAND_TYPE_APPEND_STREAM_RECORDS, + Attributes: &commandpb.Command_AppendStreamRecordsCommandAttributes{ + AppendStreamRecordsCommandAttributes: &commandpb.AppendStreamRecordsCommandAttributes{ + Records: []*streampb.StreamRecord{ + {Body: &commonpb.Payload{Data: []byte("backlog-1")}, Topic: "tokens"}, + {Body: &commonpb.Payload{Data: []byte("backlog-2")}, Topic: "tokens"}, + }, + }, + }, + }}, nil + }, + Logger: env.Logger, + T: t, + } + + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: id, + StreamName: chasmworkflow.DefaultStreamName, StartOffset: 0, + }, + }) + require.NoError(t, err) + + // No signal. Subscribing behind the head is itself a reason to run. + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + require.Len(t, delivered, 2) + backlog := currentSlice(t, delivered[1]) + require.Equal(t, int64(0), backlog.GetFromOffset()) + require.Equal(t, int64(2), backlog.GetToOffset()) +} + +// History records the offsets a task consumed and never the payloads, so a +// worker replaying that task has to be handed the bytes again. The response +// field alone cannot do it: it is built once per delivery while a cache miss +// replays every prior task, so each re-supplied range travels with the id of +// the event that recorded it. +func TestReplayGetsTheConsumedRangesBackFromTheStream(t *testing.T) { + // Dedicated, because forcing the replay path means evicting the cached + // workflow context, and CloseShard is not allowed on a shared cluster. + env := testcore.NewEnv(t, testcore.WithDedicatedCluster()) + s := newStreamTestEnvFrom(t, env) + + id := "stream-wf-replay-" + uuid.NewString() + tq := &taskqueuepb.TaskQueue{Name: id + "-tq", Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + + we, err := env.FrontendClient().StartWorkflowExecution( + s.ctx(), + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: s.ns, + WorkflowId: id, + WorkflowType: &commonpb.WorkflowType{Name: "stream-consumer"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + Identity: "tester", + }, + ) + require.NoError(t, err) + + var delivered [][]*streampb.StreamSlice + task := 0 + + //nolint:staticcheck // SA1019: only the deprecated poller can emit this command type. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + delivered = append(delivered, resp.GetStreamSlices()) + task++ + if task > 1 { + return nil, nil + } + return []*commandpb.Command{{ + CommandType: enumspb.COMMAND_TYPE_APPEND_STREAM_RECORDS, + Attributes: &commandpb.Command_AppendStreamRecordsCommandAttributes{ + AppendStreamRecordsCommandAttributes: &commandpb.AppendStreamRecordsCommandAttributes{ + Records: []*streampb.StreamRecord{ + {Body: &commonpb.Payload{Data: []byte("replay-me-1")}, Topic: "tokens"}, + {Body: &commonpb.Payload{Data: []byte("replay-me-2")}, Topic: "tokens"}, + }, + }, + }, + }}, nil + }, + Logger: env.Logger, + T: t, + } + + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: id, + StreamName: chasmworkflow.DefaultStreamName, StartOffset: 0, + }, + }) + require.NoError(t, err) + + // Consume the range. This is the task replay will have to reproduce. + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + require.Len(t, currentSlice(t, delivered[1]).GetRecords(), 2) + + consumedAt := completedEventWithCursors(t, env.GetHistory(s.ns, + &commonpb.WorkflowExecution{WorkflowId: id, RunId: we.GetRunId()})) + + // Drop the cached context so the next task is served with full history, + // which is the replay path. + env.CloseShard(env.NamespaceID().String(), id) + + signalWorkflow(t, s, id, we.GetRunId()) + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + replayed := sliceForEvent(delivered[2], consumedAt) + require.NotNil(t, replayed, + "the replayed task must carry the range recorded at event %d", consumedAt) + require.Equal(t, int64(0), replayed.GetFromOffset()) + require.Equal(t, int64(2), replayed.GetToOffset()) + require.Len(t, replayed.GetRecords(), 2, "the payloads have to come back from the stream") + require.Equal(t, "replay-me-1", string(replayed.GetRecords()[0].GetBody().GetData())) + require.Equal(t, "replay-me-2", string(replayed.GetRecords()[1].GetBody().GetData())) +} + +// completedEventWithCursors returns the id of the first WorkflowTaskCompleted +// event that recorded a non-empty consumed range. +func completedEventWithCursors(t *testing.T, events []*historypb.HistoryEvent) int64 { + t.Helper() + for _, e := range events { + for _, c := range e.GetWorkflowTaskCompletedEventAttributes().GetConsumedStreamRanges() { + if c.GetToOffset() > c.GetFromOffset() { + return e.GetEventId() + } + } + } + t.Fatal("no completed event recorded a consumed range") + return 0 +} + +// currentSlice picks the slice for the task about to run. Slices carrying an +// event id belong to tasks being replayed, and a response can hold both. +func currentSlice(t *testing.T, slices []*streampb.StreamSlice) *streampb.StreamSlice { + t.Helper() + for _, s := range slices { + if s.GetWorkflowTaskCompletedEventId() == 0 { + return s + } + } + t.Fatal("no slice for the current task") + return nil +} + +func sliceForEvent(slices []*streampb.StreamSlice, eventID int64) *streampb.StreamSlice { + for _, s := range slices { + if s.GetWorkflowTaskCompletedEventId() == eventID { + return s + } + } + return nil +} + +// The shape the feature exists for: a producer writing off-shard and a workflow +// consuming it, with no relationship between them beyond the stream. +// +// A consuming workflow cannot read another execution's frontier while closing +// its own transaction, so the stream pushes it. The push dirties the consumer, +// whose transaction close then sees it is behind and schedules a workflow task. +// +// The payload is read from the stream's own execution, which can live on +// another shard, so delivery has to route the read rather than resolve the +// stream locally. +func TestWorkflowConsumesAStreamItDoesNotOwn(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + streamID := "external-stream-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + + id := "stream-wf-external-" + uuid.NewString() + tq := &taskqueuepb.TaskQueue{Name: id + "-tq", Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + + we, err := env.FrontendClient().StartWorkflowExecution( + s.ctx(), + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: s.ns, + WorkflowId: id, + WorkflowType: &commonpb.WorkflowType{Name: "stream-consumer"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + Identity: "tester", + }, + ) + require.NoError(t, err) + + var delivered [][]*streampb.StreamSlice + + //nolint:staticcheck // SA1019: consistent with the other stream tests. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + delivered = append(delivered, resp.GetStreamSlices()) + return nil, nil + }, + Logger: env.Logger, + T: t, + } + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: id, + StreamId: streamID, StartOffset: 0, + }, + }) + require.NoError(t, err) + + // The subscription has to reach the stream, or truncation could take a + // range the cursor still points at. + desc, err := s.client.DescribeStream(s.ctx(), &streamlib.DescribeStreamRequest{ + FrontendRequest: &streamlib.DescribeStreamInput{Namespace: s.ns, StreamId: streamID}, + }) + require.NoError(t, err) + consumers := desc.GetFrontendResponse().GetState().GetConsumers() + require.Len(t, consumers, 1) + for _, c := range consumers { + require.True(t, c.GetExternal()) + require.True(t, c.GetActive()) + require.Equal(t, id, c.GetWorkflowId()) + } + + // An off-shard producer, unrelated to the workflow. + _, err = s.client.AddMessages(s.ctx(), &streamlib.AddMessagesRequest{ + FrontendRequest: &streamlib.AddMessagesInput{ + Namespace: s.ns, StreamId: streamID, + Records: []*streamlib.StreamRecord{ + { + Body: &commonpb.Payload{Data: []byte("from-outside-1")}, + Kind: streampb.STREAM_RECORD_KIND_DATA, + }, + { + Body: &commonpb.Payload{Data: []byte("from-outside-2")}, + Kind: streampb.STREAM_RECORD_KIND_DATA, + }, + }, + }, + }) + require.NoError(t, err) + + // The append alone has to produce a workflow task, with no signal and no + // other traffic against the workflow. + await.RequireTruef(t, func() bool { + events := env.GetHistory(s.ns, &commonpb.WorkflowExecution{WorkflowId: id, RunId: we.GetRunId()}) + scheduled := 0 + for _, e := range events { + if e.GetEventType() == enumspb.EVENT_TYPE_WORKFLOW_TASK_SCHEDULED { + scheduled++ + } + } + return scheduled >= 2 + }, 20*time.Second, 200*time.Millisecond, "the append must schedule a workflow task on its own") + + // And it must reach a worker. + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + got := currentSlice(t, delivered[1]) + require.Equal(t, streamID, got.GetStreamId()) + require.Equal(t, int64(0), got.GetFromOffset()) + require.Equal(t, int64(2), got.GetToOffset()) + require.Len(t, got.GetRecords(), 2) + require.Equal(t, "from-outside-1", string(got.GetRecords()[0].GetBody().GetData())) +} + +// A cursor is workflow state, so a continue-as-new has to carry it. Without +// that the subscription ends silently: the stream keeps its consumer pin and +// keeps pushing to the workflow id, and the successor run has nowhere to put +// what arrives. +func TestSubscriptionSurvivesContinueAsNew(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + streamID := "carried-stream-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + + id := "stream-wf-can-" + uuid.NewString() + tq := &taskqueuepb.TaskQueue{Name: id + "-tq", Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + + _, err := env.FrontendClient().StartWorkflowExecution( + s.ctx(), + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: s.ns, + WorkflowId: id, + WorkflowType: &commonpb.WorkflowType{Name: "stream-consumer"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + Identity: "tester", + }, + ) + require.NoError(t, err) + + var delivered [][]*streampb.StreamSlice + task := 0 + + //nolint:staticcheck // SA1019: consistent with the other stream tests. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + delivered = append(delivered, resp.GetStreamSlices()) + task++ + if task == 2 { + // Continue as new, carrying nothing of its own. + return []*commandpb.Command{{ + CommandType: enumspb.COMMAND_TYPE_CONTINUE_AS_NEW_WORKFLOW_EXECUTION, + Attributes: &commandpb.Command_ContinueAsNewWorkflowExecutionCommandAttributes{ + ContinueAsNewWorkflowExecutionCommandAttributes: &commandpb. + ContinueAsNewWorkflowExecutionCommandAttributes{ + WorkflowType: &commonpb.WorkflowType{Name: "stream-consumer"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + }, + }, + }}, nil + } + return nil, nil + }, + Logger: env.Logger, + T: t, + } + + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: id, StreamId: streamID, StartOffset: 0, + }, + }) + require.NoError(t, err) + + // First append, consumed by the original run. + _, err = s.client.AddMessages(s.ctx(), &streamlib.AddMessagesRequest{ + FrontendRequest: &streamlib.AddMessagesInput{ + Namespace: s.ns, StreamId: streamID, + Records: []*streamlib.StreamRecord{ + {Body: &commonpb.Payload{Data: []byte("before-can")}, Kind: streampb.STREAM_RECORD_KIND_DATA}, + }, + }, + }) + require.NoError(t, err) + + // Task 2 receives it and continues as new. + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + consumed := currentSlice(t, delivered[1]) + require.Equal(t, int64(1), consumed.GetToOffset()) + require.Len(t, consumed.GetRecords(), 1) + + // Drain the successor's first task, which carries nothing new. + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + // Append again. Only a carried subscription can deliver this, and it must + // resume at offset 1 rather than replaying from the start. + _, err = s.client.AddMessages(s.ctx(), &streamlib.AddMessagesRequest{ + FrontendRequest: &streamlib.AddMessagesInput{ + Namespace: s.ns, StreamId: streamID, + Records: []*streamlib.StreamRecord{ + {Body: &commonpb.Payload{Data: []byte("after-can")}, Kind: streampb.STREAM_RECORD_KIND_DATA}, + }, + }, + }) + require.NoError(t, err) + + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + afterCAN := currentSlice(t, delivered[len(delivered)-1]) + require.Equal(t, int64(1), afterCAN.GetFromOffset(), + "the successor resumes where its predecessor stopped") + require.Equal(t, int64(2), afterCAN.GetToOffset()) + require.Len(t, afterCAN.GetRecords(), 1) + require.Equal(t, "after-can", string(afterCAN.GetRecords()[0].GetBody().GetData())) + + // The pin followed the subscription to the new run, with the floor where + // that run's cursor began. The predecessor's ranges are in a closed history + // that never replays, so nothing holds offset 0 any more. + described, err := env.FrontendClient().DescribeWorkflowExecution(s.ctx(), + &workflowservice.DescribeWorkflowExecutionRequest{ + Namespace: s.ns, Execution: &commonpb.WorkflowExecution{WorkflowId: id}, + }) + require.NoError(t, err) + successor := described.GetWorkflowExecutionInfo().GetExecution().GetRunId() + state := describeStream(t, s, streamID) + require.Len(t, state.GetConsumers(), 1, "one pin, keyed to the run that consumes") + for _, consumer := range state.GetConsumers() { + require.Equal(t, successor, consumer.GetRunId()) + require.Equal(t, int64(1), consumer.GetReplayFloor()) + } +} + +// A workflow subscribing itself, rather than being subscribed out of band. +// +// The command carries only the stream id and a start offset. The server +// resolves the offset against the stream's frontier: a workflow cannot read +// another execution's frontier without doing I/O, and a value it carried would +// be a reading rather than a fact, so it could differ on replay. +func TestWorkflowSubscribesToAStreamItself(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + streamID := "self-sub-stream-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + + id := "stream-wf-selfsub-" + uuid.NewString() + tq := &taskqueuepb.TaskQueue{Name: id + "-tq", Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + + _, err := env.FrontendClient().StartWorkflowExecution( + s.ctx(), + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: s.ns, + WorkflowId: id, + WorkflowType: &commonpb.WorkflowType{Name: "stream-consumer"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + Identity: "tester", + }, + ) + require.NoError(t, err) + + var delivered [][]*streampb.StreamSlice + task := 0 + + //nolint:staticcheck // SA1019: only the deprecated poller can emit this command type. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + delivered = append(delivered, resp.GetStreamSlices()) + task++ + if task > 1 { + return nil, nil + } + // The workflow subscribes itself on its first task. + return []*commandpb.Command{{ + CommandType: enumspb.COMMAND_TYPE_SUBSCRIBE_STREAM, + Attributes: &commandpb.Command_SubscribeStreamCommandAttributes{ + SubscribeStreamCommandAttributes: &commandpb.SubscribeStreamCommandAttributes{ + StreamId: streamID, + StartOffset: 0, + }, + }, + }}, nil + }, + Logger: env.Logger, + T: t, + } + + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + require.Empty(t, delivered[0], "nothing is subscribed until this task completes") + + // The subscription has to have reached the stream, or truncation could take + // a range the cursor still points at. + desc, err := s.client.DescribeStream(s.ctx(), &streamlib.DescribeStreamRequest{ + FrontendRequest: &streamlib.DescribeStreamInput{Namespace: s.ns, StreamId: streamID}, + }) + require.NoError(t, err) + require.Len(t, desc.GetFrontendResponse().GetState().GetConsumers(), 1, + "the command must have registered a consumer on the stream") + + // The subscription is recorded once, with the offset the server resolved. + // Without it nothing in History explains why this workflow starts receiving + // stream data, and a command that writes no event desynchronises the + // command-to-event matching every SDK's replay depends on. + subscribed := subscribedEvents(env.GetHistory(s.ns, + &commonpb.WorkflowExecution{WorkflowId: id})) + require.Len(t, subscribed, 1) + require.Equal(t, streamID, subscribed[0].GetStreamId()) + require.Equal(t, int64(0), subscribed[0].GetStartOffset()) + + // An off-shard producer, with no signal to the workflow. + _, err = s.client.AddMessages(s.ctx(), &streamlib.AddMessagesRequest{ + FrontendRequest: &streamlib.AddMessagesInput{ + Namespace: s.ns, StreamId: streamID, + Records: []*streamlib.StreamRecord{ + {Body: &commonpb.Payload{Data: []byte("self-1")}, Kind: streampb.STREAM_RECORD_KIND_DATA}, + {Body: &commonpb.Payload{Data: []byte("self-2")}, Kind: streampb.STREAM_RECORD_KIND_DATA}, + }, + }, + }) + require.NoError(t, err) + + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + got := currentSlice(t, delivered[1]) + require.Equal(t, streamID, got.GetStreamId()) + require.Equal(t, int64(0), got.GetFromOffset()) + require.Equal(t, int64(2), got.GetToOffset()) + require.Len(t, got.GetRecords(), 2) + require.Equal(t, "self-1", string(got.GetRecords()[0].GetBody().GetData())) +} + +func subscribedEvents( + events []*historypb.HistoryEvent, +) []*historypb.WorkflowStreamSubscribedEventAttributes { + var out []*historypb.WorkflowStreamSubscribedEventAttributes + for _, e := range events { + if attrs := e.GetWorkflowStreamSubscribedEventAttributes(); attrs != nil { + out = append(out, attrs) + } + } + return out +} + +// A second subscribe to a stream the workflow already holds registers nothing, +// but it still has to write an event. Every SDK matches issued commands against +// command-generated events by position, so a command producing no event leaves +// the machine that issued it unmatched and puts every later command out of step. +func TestResubscribingStillWritesItsEvent(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + streamID := "resub-stream-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + + id := "stream-wf-resub-" + uuid.NewString() + tq := &taskqueuepb.TaskQueue{Name: id + "-tq", Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + + we, err := env.FrontendClient().StartWorkflowExecution( + s.ctx(), + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: s.ns, + WorkflowId: id, + WorkflowType: &commonpb.WorkflowType{Name: "stream-consumer"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + Identity: "tester", + }, + ) + require.NoError(t, err) + + subscribe := []*commandpb.Command{{ + CommandType: enumspb.COMMAND_TYPE_SUBSCRIBE_STREAM, + Attributes: &commandpb.Command_SubscribeStreamCommandAttributes{ + SubscribeStreamCommandAttributes: &commandpb.SubscribeStreamCommandAttributes{ + StreamId: streamID, StartOffset: 0, + }, + }, + }} + + task := 0 + //nolint:staticcheck // SA1019: only the deprecated poller can emit this command type. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + task++ + if task > 2 { + return nil, nil + } + return subscribe, nil + }, + Logger: env.Logger, + T: t, + } + + // Two tasks, each issuing the same subscribe. The second registers nothing. + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + _, err = env.FrontendClient().SignalWorkflowExecution( + s.ctx(), + &workflowservice.SignalWorkflowExecutionRequest{ + Namespace: s.ns, + WorkflowExecution: &commonpb.WorkflowExecution{WorkflowId: id}, + SignalName: "wake", + Identity: "tester", + RequestId: uuid.NewString(), + }, + ) + require.NoError(t, err) + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + events := env.GetHistory(s.ns, &commonpb.WorkflowExecution{WorkflowId: id, RunId: we.GetRunId()}) + var subscribed []*historypb.WorkflowStreamSubscribedEventAttributes + for _, e := range events { + if a := e.GetWorkflowStreamSubscribedEventAttributes(); a != nil { + subscribed = append(subscribed, a) + } + } + require.Len(t, subscribed, 2, "each subscribe command owes an event, even a repeat") + require.Equal(t, streamID, subscribed[1].GetStreamId()) + // The repeat reports where the cursor actually is, not the offset it asked + // for, so a replaying worker reads a fact rather than a request. + require.Equal(t, int64(0), subscribed[1].GetStartOffset()) +} + +// A subscribe followed by another command in the same Workflow Task. Every SDK +// matches issued commands against the events they produced by position, so the +// subscription's event has to sit where its command did, even though its start +// offset is only resolved after every command has run. +func TestStreamSubscribeEventKeepsCommandOrder(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + streamID := "order-src-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + + id := "stream-order-" + uuid.NewString() + tq := &taskqueuepb.TaskQueue{Name: id + "-tq", Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + + _, err := env.FrontendClient().StartWorkflowExecution( + s.ctx(), + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: s.ns, + WorkflowId: id, + WorkflowType: &commonpb.WorkflowType{Name: "stream-order"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + Identity: "tester", + }, + ) + require.NoError(t, err) + + //nolint:staticcheck // SA1019: deprecated poller is the only one that can emit the command. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + // Subscribe first, then publish. The publish event must come second. + return []*commandpb.Command{ + { + CommandType: enumspb.COMMAND_TYPE_SUBSCRIBE_STREAM, + Attributes: &commandpb.Command_SubscribeStreamCommandAttributes{ + SubscribeStreamCommandAttributes: &commandpb.SubscribeStreamCommandAttributes{ + StreamId: streamID, StartOffset: 0, + }, + }, + }, + { + CommandType: enumspb.COMMAND_TYPE_APPEND_STREAM_RECORDS, + Attributes: &commandpb.Command_AppendStreamRecordsCommandAttributes{ + AppendStreamRecordsCommandAttributes: &commandpb.AppendStreamRecordsCommandAttributes{ + Records: []*streampb.StreamRecord{ + {Body: &commonpb.Payload{Data: []byte("after subscribe")}}, + }, + }, + }, + }, + }, nil + }, + Logger: env.Logger, + T: t, + } + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + var order []enumspb.EventType + for _, e := range env.GetHistory(s.ns, &commonpb.WorkflowExecution{WorkflowId: id}) { + switch e.GetEventType() { + case enumspb.EVENT_TYPE_WORKFLOW_STREAM_SUBSCRIBED, + enumspb.EVENT_TYPE_WORKFLOW_STREAM_RECORDS_APPENDED: + order = append(order, e.GetEventType()) + default: + // Every other event is noise for this assertion. + } + } + require.Equal(t, []enumspb.EventType{ + enumspb.EVENT_TYPE_WORKFLOW_STREAM_SUBSCRIBED, + enumspb.EVENT_TYPE_WORKFLOW_STREAM_RECORDS_APPENDED, + }, order, "the events must be in the order their commands were issued") +} + +// An activity streaming tokens over the RPC has no reason to know about message +// kinds. A message appended with the kind left unset has to reach a subscribed +// workflow like any other, rather than take an offset and vanish. +func TestMessagesAppendedWithoutAKindReachTheWorkflow(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + streamID := "kindless-stream-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + execution, tq := startConsumer(t, s, "stream-wf-kindless-") + + var delivered [][]*streampb.StreamSlice + //nolint:staticcheck // SA1019: consistent with the other stream tests. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + delivered = append(delivered, resp.GetStreamSlices()) + return nil, nil + }, + Logger: env.Logger, + T: t, + } + _, err := poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: execution.GetWorkflowId(), StreamId: streamID, StartOffset: 0, + }, + }) + require.NoError(t, err) + + _, err = s.client.AddMessages(s.ctx(), &streamlib.AddMessagesRequest{ + FrontendRequest: &streamlib.AddMessagesInput{ + Namespace: s.ns, StreamId: streamID, + Records: []*streamlib.StreamRecord{ + {Body: &commonpb.Payload{Data: []byte("no-kind-1")}}, + {Body: &commonpb.Payload{Data: []byte("no-kind-2")}}, + }, + }, + }) + require.NoError(t, err) + + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + got := currentSlice(t, delivered[1]) + require.Equal(t, int64(2), got.GetToOffset()) + require.Equal(t, []string{"no-kind-1", "no-kind-2"}, apiBodies(got.GetRecords()), + "the slice must carry the messages, not just advance past them") +} diff --git a/tests/stream_consumer_lifecycle_test.go b/tests/stream_consumer_lifecycle_test.go index 9f14115b45c..aa7a27704e0 100644 --- a/tests/stream_consumer_lifecycle_test.go +++ b/tests/stream_consumer_lifecycle_test.go @@ -1,8 +1,20 @@ package tests import ( + "testing" + "time" + + "github.com/google/uuid" + "github.com/stretchr/testify/require" commandpb "go.temporal.io/api/command/v1" + commonpb "go.temporal.io/api/common/v1" enumspb "go.temporal.io/api/enums/v1" + taskqueuepb "go.temporal.io/api/taskqueue/v1" + "go.temporal.io/api/workflowservice/v1" + streamlib "go.temporal.io/server/chasm/lib/stream/gen/streampb/v1" + "go.temporal.io/server/common/testing/await" + "go.temporal.io/server/tests/testcore" + "google.golang.org/protobuf/types/known/durationpb" ) func completeWorkflowCommand() []*commandpb.Command { @@ -14,3 +26,157 @@ func completeWorkflowCommand() []*commandpb.Command { }, }} } + +func describeStream(t *testing.T, s *streamTestEnv, streamID string) *streamlib.StreamState { + t.Helper() + desc, err := s.client.DescribeStream(s.ctx(), &streamlib.DescribeStreamRequest{ + FrontendRequest: &streamlib.DescribeStreamInput{Namespace: s.ns, StreamId: streamID}, + }) + require.NoError(t, err) + return desc.GetFrontendResponse().GetState() +} + +// subscribeConsumeAndComplete runs a consumer through one delivered range and +// then completes it, leaving its pin on the stream. +func subscribeConsumeAndComplete( + t *testing.T, s *streamTestEnv, streamID string, prefix string, +) *commonpb.WorkflowExecution { + t.Helper() + execution, tq := startConsumer(t, s, prefix) + task := 0 + //nolint:staticcheck // SA1019: consistent with the other stream tests. + poller := &testcore.TaskPoller{ + Client: s.env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + task++ + if task == 3 { + return completeWorkflowCommand(), nil + } + return nil, nil + }, + Logger: s.env.Logger, + T: t, + } + _, err := poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: execution.GetWorkflowId(), StreamId: streamID, StartOffset: 0, + }, + }) + require.NoError(t, err) + _, err = s.client.AddMessages(s.ctx(), &streamlib.AddMessagesRequest{ + FrontendRequest: &streamlib.AddMessagesInput{ + Namespace: s.ns, StreamId: streamID, Records: streamMsgs("tokens", "one", "two"), + }, + }) + require.NoError(t, err) + + // Consumes the range, then completes on the task after. + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + signalWorkflow(t, s, execution.GetWorkflowId(), execution.GetRunId()) + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + state := describeStream(t, s, streamID) + require.Len(t, state.GetConsumers(), 1, "the completed run still holds its pin for now") + return execution +} + +// A consumer that completed can never replay, so the floor it held is a leak. +// The stream learns a consumer is gone when it next tries to tell it the +// frontier moved, and releases the pin then. +func TestACompletedConsumerReleasesItsFloor(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + streamID := "released-stream-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + + subscribeConsumeAndComplete(t, s, streamID, "stream-wf-released-") + + _, err := s.client.TruncateStream(s.ctx(), &streamlib.TruncateStreamRequest{ + FrontendRequest: &streamlib.TruncateStreamInput{ + Namespace: s.ns, StreamId: streamID, NewBaseOffset: 2, + }, + }) + require.ErrorContains(t, err, "still depends on offset 0", + "the pin holds until the stream finds out") + + // The append is what makes the stream go and ask. + _, err = s.client.AddMessages(s.ctx(), &streamlib.AddMessagesRequest{ + FrontendRequest: &streamlib.AddMessagesInput{ + Namespace: s.ns, StreamId: streamID, Records: streamMsgs("tokens", "three"), + }, + }) + require.NoError(t, err) + await.RequireTrue(t, func() bool { + return len(describeStream(t, s, streamID).GetConsumers()) == 0 + }, 20*time.Second, 100*time.Millisecond) + + _, err = s.client.TruncateStream(s.ctx(), &streamlib.TruncateStreamRequest{ + FrontendRequest: &streamlib.TruncateStreamInput{ + Namespace: s.ns, StreamId: streamID, NewBaseOffset: 2, + }, + }) + require.NoError(t, err, "nothing holds the floor once the consumer is gone") +} + +// A new run of the same workflow id is a new consumer. It subscribes at its +// own offset and takes over the pin, rather than inheriting a floor from a run +// that finished, which could be below the stream's base and refuse it. +func TestANewRunSubscribesFreshAfterThePreviousCompleted(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + streamID := "rerun-stream-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + + first := subscribeConsumeAndComplete(t, s, streamID, "stream-wf-rerun-") + + // The same workflow id, started again after the first run completed. + second, err := env.FrontendClient().StartWorkflowExecution( + s.ctx(), + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: s.ns, + WorkflowId: first.GetWorkflowId(), + WorkflowType: &commonpb.WorkflowType{Name: "stream-consumer"}, + TaskQueue: &taskqueuepb.TaskQueue{Name: first.GetWorkflowId() + "-tq2"}, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + Identity: "tester", + }, + ) + require.NoError(t, err) + require.NotEqual(t, first.GetRunId(), second.GetRunId()) + + sub, err := s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: first.GetWorkflowId(), StreamId: streamID, StartOffset: 2, + }, + }) + require.NoError(t, err) + require.Equal(t, int64(2), sub.GetFrontendResponse().GetStartOffset(), + "the new run starts where it asked, not where the old run did") + + state := describeStream(t, s, streamID) + require.Len(t, state.GetConsumers(), 1, + "the old run's pin is replaced, not kept beside the new one") + for _, consumer := range state.GetConsumers() { + require.Equal(t, second.GetRunId(), consumer.GetRunId()) + require.Equal(t, int64(2), consumer.GetReplayFloor()) + } + + _, err = s.client.TruncateStream(s.ctx(), &streamlib.TruncateStreamRequest{ + FrontendRequest: &streamlib.TruncateStreamInput{ + Namespace: s.ns, StreamId: streamID, NewBaseOffset: 2, + }, + }) + require.NoError(t, err, "only the new run's floor holds") +} diff --git a/tests/stream_publish_cost_test.go b/tests/stream_publish_cost_test.go new file mode 100644 index 00000000000..7195c575fbf --- /dev/null +++ b/tests/stream_publish_cost_test.go @@ -0,0 +1,307 @@ +package tests + +import ( + "fmt" + "os" + "strings" + "testing" + "time" + + "github.com/google/uuid" + "github.com/stretchr/testify/require" + commandpb "go.temporal.io/api/command/v1" + commonpb "go.temporal.io/api/common/v1" + enumspb "go.temporal.io/api/enums/v1" + streampb "go.temporal.io/api/stream/v1" + taskqueuepb "go.temporal.io/api/taskqueue/v1" + "go.temporal.io/api/workflowservice/v1" + "go.temporal.io/server/tests/testcore" + "google.golang.org/protobuf/types/known/durationpb" +) + +// What the history event per publish costs. +// +// Every SDK matches commands to events positionally, so the publish command +// has to produce one. The objection is that unlike subscribing, which happens +// once, publishing happens per batch. This measures the per-batch price so the +// trade is decided on a number. +// +// The method is a marginal one. Each arm runs a workflow whose single workflow +// task carries N publish commands and then completes, so history holds the +// fixed opening and closing events plus exactly N publishes. Differencing +// against the N=0 arm cancels the fixed part and leaves the cost of one +// publish. Message size is varied against a fixed batch count to show whether +// payload bytes reach History at all. + +type publishCostArm struct { + name string + batches int + messagesPerBatch int + messageSize int + // Sends the same bytes as Signals instead, which is what a workflow + // streaming today has to do. The comparison is the point of the exercise. + viaSignal bool +} + +type publishCostResult struct { + arm publishCostArm + historyEvents int64 + historyBytes int64 +} + +func (r publishCostResult) messages() int { + return r.arm.batches * r.arm.messagesPerBatch +} + +// The published limits a per-batch event has to be judged against. +const ( + historyCountLimitError = 50 * 1024 + historySizeLimitError = 50 * 1024 * 1024 +) + +func TestStreamPublishHistoryCost(t *testing.T) { + if testing.Short() { + t.Skip("measurement, not a correctness check") + } + // Each arm holds a cluster of its own until the whole test returns, so ten + // arms outlast the dedicated pool. Opt in like the other measurements. + if os.Getenv("TEMPORAL_STREAM_BENCH") != "1" { + t.Skip("set TEMPORAL_STREAM_BENCH=1 to run") + } + + arms := []publishCostArm{ + // The control. Everything is differenced against this. + {name: "control", batches: 0}, + + // Batch count at a fixed message shape: is the cost linear, and what + // is the slope. + {name: "stream-b1", batches: 1, messagesPerBatch: 1, messageSize: 20}, + {name: "stream-b10", batches: 10, messagesPerBatch: 1, messageSize: 20}, + {name: "stream-b100", batches: 100, messagesPerBatch: 1, messageSize: 20}, + {name: "stream-b500", batches: 500, messagesPerBatch: 1, messageSize: 20}, + + // Same batch count, more messages inside each: the per-batch event + // should not notice. + {name: "stream-b100-m10", batches: 100, messagesPerBatch: 10, messageSize: 20}, + + // Same batch count, bigger messages: this is the claim that payloads + // never enter History, stated as a measurement. + {name: "stream-b100-s200", batches: 100, messagesPerBatch: 1, messageSize: 200}, + {name: "stream-b100-s2000", batches: 100, messagesPerBatch: 1, messageSize: 2000}, + + // What the same traffic costs through Signals today. + {name: "signal-b100-s20", batches: 100, messagesPerBatch: 1, messageSize: 20, viaSignal: true}, + { + name: "signal-b100-s2000", batches: 100, messagesPerBatch: 1, messageSize: 2000, + viaSignal: true, + }, + } + + results := make([]publishCostResult, 0, len(arms)) + byName := map[string]publishCostResult{} + for _, arm := range arms { + r := runPublishCostArm(t, arm) + results = append(results, r) + byName[arm.name] = r + } + reportPublishCost(t, results) + assertPublishCost(t, byName) +} + +// The report is the deliverable, but the properties it shows are the ones the +// design rests on, so they are asserted rather than left to be eyeballed. +func assertPublishCost(t *testing.T, byName map[string]publishCostResult) { + control := byName["control"] + marginalBytes := func(name string) int64 { + return byName[name].historyBytes - control.historyBytes + } + marginalEvents := func(name string) int64 { + return byName[name].historyEvents - control.historyEvents + } + + // One event per batch, not per message. b100-m10 publishes ten times the + // messages of b100 through the same hundred commands. + require.Equal(t, int64(100), marginalEvents("stream-b100")) + require.Equal(t, int64(100), marginalEvents("stream-b100-m10")) + require.Equal(t, int64(500), marginalEvents("stream-b500")) + + // Ten times the payload must not move History, which is the claim that + // bodies never enter it. Judged against what a leak would cost rather than + // against zero: event sizes wobble by a byte or two on varint widths, while + // 1800 extra bytes per message across a hundred batches would be six + // figures. + sizeDrift := marginalBytes("stream-b100-s2000") - marginalBytes("stream-b100-s200") + require.Less(t, max(sizeDrift, -sizeDrift), int64(2000), + "10x the payload moved the history cost, so payload is reaching History") + + // Ten times the messages through the same batches, within a byte or two of + // noise from varint widths. + require.InDelta(t, marginalBytes("stream-b100"), marginalBytes("stream-b100-m10"), 200, + "cost tracked message count rather than batch count") + + // The comparison that justifies the feature. Same traffic, and Signals are + // the only way to do this today. + require.Less(t, marginalBytes("stream-b100-s2000"), marginalBytes("signal-b100-s2000")/20, + "a stream publish should be far cheaper than the Signal it replaces") +} + +func runPublishCostArm(t *testing.T, arm publishCostArm) publishCostResult { + t.Helper() + env := testcore.NewEnv(t, testcore.WithDisableTestloggerFailure()) + + // Fixed-width regardless of the arm, because the workflow id and the task + // queue name derived from it are both carried in the opening events. Naming + // the arms in there would put ten bytes of arm-name difference into the very + // figure being differenced. + id := "publish-cost-" + uuid.NewString() + tq := &taskqueuepb.TaskQueue{Name: id + "-tq", Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + ctx := testcore.NewContext() + + _, err := env.FrontendClient().StartWorkflowExecution( + ctx, + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: env.Namespace().String(), + WorkflowId: id, + WorkflowType: &commonpb.WorkflowType{Name: "publish-cost"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(60 * time.Second), + Identity: "tester", + }, + ) + require.NoError(t, err) + + body := []byte(strings.Repeat("x", arm.messageSize)) + + // Sent before the first workflow task is polled, so they land in history + // ahead of it and the single task still closes the workflow. + if arm.viaSignal { + for range arm.batches { + payloads := make([]*commonpb.Payload, 0, arm.messagesPerBatch) + for range arm.messagesPerBatch { + payloads = append(payloads, &commonpb.Payload{Data: body}) + } + _, err := env.FrontendClient().SignalWorkflowExecution( + ctx, + &workflowservice.SignalWorkflowExecutionRequest{ + Namespace: env.Namespace().String(), + WorkflowExecution: &commonpb.WorkflowExecution{WorkflowId: id}, + SignalName: "stream-item", + Input: &commonpb.Payloads{Payloads: payloads}, + Identity: "tester", + RequestId: uuid.NewString(), + }, + ) + require.NoError(t, err) + } + } + + //nolint:staticcheck // SA1019: only the deprecated poller emits raw commands. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: env.Namespace().String(), + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + commands := make([]*commandpb.Command, 0, arm.batches+1) + if !arm.viaSignal { + for range arm.batches { + messages := make([]*streampb.StreamRecord, 0, arm.messagesPerBatch) + for range arm.messagesPerBatch { + messages = append(messages, &streampb.StreamRecord{ + Body: &commonpb.Payload{Data: body}, + Topic: "progress", + }) + } + commands = append(commands, &commandpb.Command{ + CommandType: enumspb.COMMAND_TYPE_APPEND_STREAM_RECORDS, + Attributes: &commandpb.Command_AppendStreamRecordsCommandAttributes{ + AppendStreamRecordsCommandAttributes: &commandpb.AppendStreamRecordsCommandAttributes{ + Records: messages, + }, + }, + }) + } + } + return append(commands, completeWorkflowCommand()...), nil + }, + Logger: env.Logger, + T: t, + } + + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + desc, err := env.FrontendClient().DescribeWorkflowExecution( + ctx, + &workflowservice.DescribeWorkflowExecutionRequest{ + Namespace: env.Namespace().String(), + Execution: &commonpb.WorkflowExecution{WorkflowId: id}, + }, + ) + require.NoError(t, err) + + return publishCostResult{ + arm: arm, + historyEvents: desc.GetWorkflowExecutionInfo().GetHistoryLength(), + historyBytes: desc.GetWorkflowExecutionInfo().GetHistorySizeBytes(), + } +} + +func reportPublishCost(t *testing.T, results []publishCostResult) { + var control publishCostResult + for _, r := range results { + if r.arm.name == "control" { + control = r + } + } + + t.Log("Cost of one history event per publish, measured by differencing against an empty run.") + t.Logf("Control: %d events, %d bytes.", control.historyEvents, control.historyBytes) + t.Log("") + t.Log("| arm | batches | msgs | msg size | events | bytes " + + "| events/batch | bytes/batch | bytes/msg |") + t.Log("|---|---|---|---|---|---|---|---|---|") + for _, r := range results { + if r.arm.batches == 0 { + continue + } + marginalEvents := r.historyEvents - control.historyEvents + marginalBytes := r.historyBytes - control.historyBytes + perMsg := "n/a" + if r.messages() > 0 { + perMsg = fmt.Sprintf("%.1f", float64(marginalBytes)/float64(r.messages())) + } + t.Logf("| %s | %d | %d | %d | %d | %d | %.2f | %.1f | %s |", + r.arm.name, r.arm.batches, r.messages(), r.arm.messageSize, + r.historyEvents, r.historyBytes, + float64(marginalEvents)/float64(r.arm.batches), + float64(marginalBytes)/float64(r.arm.batches), + perMsg) + } + t.Log("") + + // The ceilings the number has to be read against. An event per batch makes + // the event-count limit the binding one long before the size limit. + for _, r := range results { + if r.arm.batches == 0 || r.arm.viaSignal { + continue + } + marginalBytes := r.historyBytes - control.historyBytes + marginalEvents := r.historyEvents - control.historyEvents + if marginalEvents == 0 { + continue + } + bytesPerEvent := float64(marginalBytes) / float64(marginalEvents) + t.Logf("%s: %.0f bytes/event implies %d batches before the %d-event limit, "+ + "%d before the %dMB size limit", + r.arm.name, bytesPerEvent, + historyCountLimitError, + historyCountLimitError, + int(float64(historySizeLimitError)/bytesPerEvent), + historySizeLimitError/(1024*1024)) + } +} diff --git a/tests/stream_query_test.go b/tests/stream_query_test.go new file mode 100644 index 00000000000..20052370f49 --- /dev/null +++ b/tests/stream_query_test.go @@ -0,0 +1,137 @@ +package tests + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/require" + commandpb "go.temporal.io/api/command/v1" + commonpb "go.temporal.io/api/common/v1" + querypb "go.temporal.io/api/query/v1" + "go.temporal.io/api/workflowservice/v1" + streamlib "go.temporal.io/server/chasm/lib/stream/gen/streampb/v1" + chasmworkflow "go.temporal.io/server/chasm/lib/workflow" + "go.temporal.io/server/common/payloads" + "go.temporal.io/server/tests/testcore" +) + +// A query with no workflow task in flight is dispatched straight through +// matching, on a task built without RecordWorkflowTaskStarted. That task +// carries the whole history to whichever worker polls it, which may never have +// seen the execution, so it has to carry the recorded ranges too or the worker +// cannot replay a consuming workflow far enough to answer. +// +// The query is answered by a second poller that took part in none of the +// earlier tasks, from the slices on the query task alone. +func TestQueryTaskCarriesTheConsumedRanges(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + execution, tq := startConsumer(t, s, "stream-wf-query-") + + task := 0 + //nolint:staticcheck // SA1019: only the deprecated poller can emit this command type. + worker := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "worker", + WorkflowTaskHandler: func( + *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + task++ + if task == 1 { + return publishCommand("answer-1", "answer-2"), nil + } + return nil, nil + }, + Logger: env.Logger, + T: t, + } + + _, err := worker.PollAndProcessWorkflowTask() + require.NoError(t, err) + + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: execution.GetWorkflowId(), + StreamName: chasmworkflow.DefaultStreamName, StartOffset: 0, + }, + }) + require.NoError(t, err) + + // The subscription schedules the task that consumes the backlog. + _, err = worker.PollAndProcessWorkflowTask() + require.NoError(t, err) + consumedAt := completedEventWithCursors(t, env.GetHistory(s.ns, execution)) + + var queryTask *workflowservice.PollWorkflowTaskQueueResponse + //nolint:staticcheck // SA1019: consistent with the worker above. + coldWorker := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "cold-worker", + WorkflowTaskHandler: func( + *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + t.Fatal("the query must arrive as a query task, not a workflow task") + return nil, nil + }, + QueryHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) (*commonpb.Payloads, error) { + queryTask = resp + // Answer from the task alone, which is all a replaying worker has. + var seen []string + for _, slice := range resp.GetStreamSlices() { + for _, record := range slice.GetRecords() { + seen = append(seen, string(record.GetBody().GetData())) + } + } + return payloads.EncodeString(strings.Join(seen, ",")), nil + }, + Logger: env.Logger, + T: t, + } + + type answer struct { + resp *workflowservice.QueryWorkflowResponse + err error + } + answered := make(chan answer, 1) + go func() { + resp, err := env.FrontendClient().QueryWorkflow(s.ctx(), &workflowservice.QueryWorkflowRequest{ + Namespace: s.ns, + Execution: execution, + Query: &querypb.WorkflowQuery{QueryType: "consumed"}, + }) + answered <- answer{resp: resp, err: err} + }() + + res, err := coldWorker.PollAndProcessWorkflowTask() + require.NoError(t, err) + require.True(t, res.IsQueryTask, "the query is dispatched on its own task") + require.NotNil(t, queryTask.GetQuery()) + require.NotEmpty(t, queryTask.GetHistory().GetEvents(), "a non-sticky query carries full history") + + replayed := sliceForEvent(queryTask.GetStreamSlices(), consumedAt) + require.NotNil(t, replayed, "the query task carries the range recorded at event %d", consumedAt) + require.Equal(t, int64(0), replayed.GetFromOffset()) + require.Equal(t, int64(2), replayed.GetToOffset()) + require.Equal(t, execution.GetRunId(), replayed.GetRunId(), "the slice names the run holding the stream") + require.Equal(t, []string{"answer-1", "answer-2"}, apiBodies(replayed.GetRecords())) + + // Nothing on a query task is about to be consumed, so every slice is a + // re-supply for a completion the history already holds. + for _, slice := range queryTask.GetStreamSlices() { + require.NotZero(t, slice.GetWorkflowTaskCompletedEventId(), + "a query task must not carry an untagged slice, it starts no task") + } + + got := <-answered + require.NoError(t, got.err) + var result string + require.NoError(t, payloads.Decode(got.resp.GetQueryResult(), &result)) + require.Equal(t, "answer-1,answer-2", result, + "the query answer is computed from the re-supplied records") +} diff --git a/tests/stream_rejection_test.go b/tests/stream_rejection_test.go index e4bc60fab74..be463629351 100644 --- a/tests/stream_rejection_test.go +++ b/tests/stream_rejection_test.go @@ -3,10 +3,12 @@ package tests import ( "testing" + "github.com/google/uuid" "github.com/stretchr/testify/require" commandpb "go.temporal.io/api/command/v1" commonpb "go.temporal.io/api/common/v1" enumspb "go.temporal.io/api/enums/v1" + streampb "go.temporal.io/api/stream/v1" "go.temporal.io/api/workflowservice/v1" chasmstream "go.temporal.io/server/chasm/lib/stream" streamlib "go.temporal.io/server/chasm/lib/stream/gen/streampb/v1" @@ -79,6 +81,84 @@ func TestOverLimitPublishFailsTheWorkflowTask(t *testing.T) { require.Equal(t, []int64{0}, offsets(poll.GetFrontendResponse().GetRecords())) } +// A workflow reads a topic by name before anything has been written to it, so +// the subscribe has to bring the owned stream into being rather than fail the +// task. An outside producer that arrives later appends to that same stream, +// and its records reach the workflow carrying the identity it wrote. +func TestSubscribeToAnUnwrittenNameCreatesTheOwnedStream(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + execution, tq := startConsumer(t, s, "stream-wf-subscribe-first-") + + name := "inputs-" + uuid.NewString() + var delivered [][]*streampb.StreamSlice + //nolint:staticcheck // SA1019: only the deprecated poller can emit this command type. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + delivered = append(delivered, resp.GetStreamSlices()) + if len(delivered) == 1 { + return subscribeCommand(name), nil + } + return nil, nil + }, + Logger: env.Logger, + T: t, + } + + _, err := poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + events := env.GetHistory(s.ns, execution) + require.Nil(t, workflowTaskFailedWith(events, + enumspb.WORKFLOW_TASK_FAILED_CAUSE_BAD_SUBSCRIBE_STREAM_ATTRIBUTES)) + subscribed := subscribedEvents(events) + require.Len(t, subscribed, 1) + require.Equal(t, name, subscribed[0].GetStreamId()) + require.Equal(t, int64(0), subscribed[0].GetStartOffset(), "the new stream starts empty") + + _, err = s.client.AddWorkflowMessages(s.ctx(), &streamlib.AddWorkflowMessagesRequest{ + FrontendRequest: &streamlib.AddWorkflowMessagesInput{ + Namespace: s.ns, WorkflowId: execution.GetWorkflowId(), StreamName: name, + Records: []*streamlib.StreamRecord{ + { + Body: &commonpb.Payload{Data: []byte("hello")}, Topic: name, + ProducerId: "model", Attempt: 2, Sequence: 0, + }, + { + Kind: streampb.STREAM_RECORD_KIND_FINISH, Topic: name, + ProducerId: "model", Attempt: 2, Sequence: -1, + }, + }, + }, + }) + require.NoError(t, err) + + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + got := currentSlice(t, delivered[1]) + require.Equal(t, name, got.GetStreamId()) + require.Equal(t, int64(2), got.GetToOffset()) + + records := got.GetRecords() + require.Len(t, records, 2) + require.Equal(t, "hello", string(records[0].GetBody().GetData())) + require.Equal(t, streampb.STREAM_RECORD_KIND_DATA, records[0].GetKind(), + "a record with no kind is data") + require.Equal(t, "model", records[0].GetProducerId()) + require.Equal(t, int64(2), records[0].GetAttempt()) + require.Equal(t, int64(0), records[0].GetSequence()) + require.Equal(t, streampb.STREAM_RECORD_KIND_FINISH, records[1].GetKind(), + "a finish record is delivered like any other") + require.Equal(t, "model", records[1].GetProducerId()) + require.Equal(t, int64(-1), records[1].GetSequence()) +} + // The guarantee the design is sold on: a publish commits with the workflow // task, so a task that fails after publishing publishes nothing. func TestPublishOnAFailedTaskLeavesNoTrace(t *testing.T) { diff --git a/tests/stream_replay_test.go b/tests/stream_replay_test.go index 442b75a9164..fbd8952e0a8 100644 --- a/tests/stream_replay_test.go +++ b/tests/stream_replay_test.go @@ -1,6 +1,7 @@ package tests import ( + "context" "testing" "time" @@ -13,6 +14,11 @@ import ( streampb "go.temporal.io/api/stream/v1" taskqueuepb "go.temporal.io/api/taskqueue/v1" "go.temporal.io/api/workflowservice/v1" + streamlib "go.temporal.io/server/chasm/lib/stream/gen/streampb/v1" + chasmworkflow "go.temporal.io/server/chasm/lib/workflow" + "go.temporal.io/server/common/dynamicconfig" + "go.temporal.io/server/common/testing/await" + "go.temporal.io/server/tests/testcore" "google.golang.org/protobuf/types/known/durationpb" ) @@ -56,6 +62,129 @@ func publishCommand(bodies ...string) []*commandpb.Command { }} } +func apiBodies(msgs []*streampb.StreamRecord) []string { + out := make([]string, len(msgs)) + for i, m := range msgs { + out[i] = string(m.GetBody().GetData()) + } + return out +} + +// completedEventsWithCursors returns the ids of every WorkflowTaskCompleted +// event that recorded a consumed range, empty ones included. +func completedEventsWithCursors(events []*historypb.HistoryEvent) []int64 { + var out []int64 + for _, e := range events { + if len(e.GetWorkflowTaskCompletedEventAttributes().GetConsumedStreamRanges()) > 0 { + out = append(out, e.GetEventId()) + } + } + return out +} + +// The response to a started task carries one page of history. A consumer that +// has run longer than a page recorded its ranges on the pages after it, and a +// cold replay has to find every one of them or the worker replays against less +// than the first run saw. +func TestReplayFollowsHistoryPastTheFirstPage(t *testing.T) { + env := testcore.NewEnv(t, + testcore.WithDedicatedCluster(), + testcore.WithDynamicConfig(dynamicconfig.HistoryMaxPageSize, 4), + ) + s := newStreamTestEnvFrom(t, env) + execution, tq := startConsumer(t, s, "stream-wf-paged-replay-") + + var delivered [][]*streampb.StreamSlice + //nolint:staticcheck // SA1019: only the deprecated poller can emit this command type. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + delivered = append(delivered, resp.GetStreamSlices()) + if len(delivered) == 1 { + return publishCommand("page-1", "page-2"), nil + } + return nil, nil + }, + Logger: env.Logger, + T: t, + } + _, err := poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: execution.GetWorkflowId(), + StreamName: chasmworkflow.DefaultStreamName, StartOffset: 0, + }, + }) + require.NoError(t, err) + + // One task consumes the range, then several idle tasks push the event that + // recorded it well behind the first page of history. + for range 4 { + signalWorkflow(t, s, execution.GetWorkflowId(), execution.GetRunId()) + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + } + require.Len(t, currentSlice(t, delivered[1]).GetRecords(), 2) + + events := env.GetHistory(s.ns, execution) + recordedAt := completedEventsWithCursors(events) + require.Len(t, recordedAt, 4, "every task since the subscription recorded a range") + consumedAt := completedEventWithCursors(t, events) + require.Greater(t, len(events), 8, + "the history has to span more than one page for this to mean anything") + + env.CloseShard(env.NamespaceID().String(), execution.GetWorkflowId()) + signalWorkflow(t, s, execution.GetWorkflowId(), execution.GetRunId()) + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + replay := delivered[len(delivered)-1] + replayed := sliceForEvent(replay, consumedAt) + require.NotNil(t, replayed, "the range recorded on a later page must be re-supplied") + require.Equal(t, []string{"page-1", "page-2"}, apiBodies(replayed.GetRecords())) + require.Equal(t, execution.GetRunId(), replayed.GetRunId(), + "an owned stream's slice names the run that holds it") + for _, eventID := range recordedAt { + require.NotNil(t, sliceForEvent(replay, eventID), + "every recorded range, empty ones included, has to travel with its event") + } +} + +// pollInBackground keeps a poller on the queue until the returned stop +// function is called. Used where a task is expected never to reach the worker, +// because matching only asks history to start a task while someone polls. +func pollInBackground( + t *testing.T, env *testcore.TestEnv, ns string, tq *taskqueuepb.TaskQueue, +) func() { + t.Helper() + ctx, cancel := context.WithCancel(context.Background()) + done := make(chan struct{}) + go func() { + defer close(done) + for ctx.Err() == nil { + pollCtx, pollCancel := context.WithTimeout(ctx, 5*time.Second) + _, _ = env.FrontendClient().PollWorkflowTaskQueue( + pollCtx, + &workflowservice.PollWorkflowTaskQueueRequest{ + Namespace: ns, TaskQueue: tq, Identity: "tester", + }, + ) + pollCancel() + } + }() + return func() { + cancel() + <-done + } +} + func workflowTaskFailedWith( events []*historypb.HistoryEvent, cause enumspb.WorkflowTaskFailedCause, @@ -67,3 +196,154 @@ func workflowTaskFailedWith( } return nil } + +// deleteStreamAndWait removes a standalone stream and waits until reads of it +// fail, since deletion completes in a task after the call returns. +func deleteStreamAndWait(t *testing.T, s *streamTestEnv, streamID string) { + t.Helper() + _, err := s.client.DeleteStream(s.ctx(), &streamlib.DeleteStreamRequest{ + FrontendRequest: &streamlib.DeleteStreamInput{ + Namespace: s.ns, StreamId: streamID, Force: true, + }, + }) + require.NoError(t, err) + await.RequireTrue(t, func() bool { + _, err := s.client.DescribeStream(s.ctx(), &streamlib.DescribeStreamRequest{ + FrontendRequest: &streamlib.DescribeStreamInput{Namespace: s.ns, StreamId: streamID}, + }) + return err != nil + }, 20*time.Second, 100*time.Millisecond) +} + +// A consumer whose stream is gone before its next task starts cannot be handed +// the range it is due. That has to land in History as a failed task with a +// cause, not as a request matching retries forever. +func TestConsumerOfADeletedStreamFailsItsTaskLoudly(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + streamID := "gone-live-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + execution, tq := startConsumer(t, s, "stream-wf-gone-live-") + + //nolint:staticcheck // SA1019: consistent with the other stream tests. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + return nil, nil + }, + Logger: env.Logger, + T: t, + } + _, err := poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: execution.GetWorkflowId(), StreamId: streamID, StartOffset: 0, + }, + }) + require.NoError(t, err) + + // The append schedules the task that is owed the range. + _, err = s.client.AddMessages(s.ctx(), &streamlib.AddMessagesRequest{ + FrontendRequest: &streamlib.AddMessagesInput{ + Namespace: s.ns, StreamId: streamID, Records: streamMsgs("tokens", "never-delivered"), + }, + }) + require.NoError(t, err) + await.RequireTrue(t, func() bool { + scheduled := 0 + for _, e := range env.GetHistory(s.ns, execution) { + if e.GetEventType() == enumspb.EVENT_TYPE_WORKFLOW_TASK_SCHEDULED { + scheduled++ + } + } + return scheduled >= 2 + }, 20*time.Second, 100*time.Millisecond) + + deleteStreamAndWait(t, s, streamID) + + stop := pollInBackground(t, env, s.ns, tq) + defer stop() + await.RequireTrue(t, func() bool { + return workflowTaskFailedWith(env.GetHistory(s.ns, execution), + enumspb.WORKFLOW_TASK_FAILED_CAUSE_STREAM_RANGE_UNAVAILABLE) != nil + }, 30*time.Second, 200*time.Millisecond) + + failed := workflowTaskFailedWith(env.GetHistory(s.ns, execution), + enumspb.WORKFLOW_TASK_FAILED_CAUSE_STREAM_RANGE_UNAVAILABLE) + require.Contains(t, failed.GetFailure().GetMessage(), streamID, + "the failure names the stream so an operator knows where to look") +} + +// A consumer whose recorded range can no longer be re-read cannot replay. The +// replay runs after the task started, so the failure is a transaction of its +// own, and it still has to end up in History with the cause. +func TestReplayOfADeletedStreamFailsTheTaskLoudly(t *testing.T) { + env := testcore.NewEnv(t, testcore.WithDedicatedCluster()) + s := newStreamTestEnvFrom(t, env) + + streamID := "gone-replay-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + execution, tq := startConsumer(t, s, "stream-wf-gone-replay-") + + var delivered [][]*streampb.StreamSlice + //nolint:staticcheck // SA1019: consistent with the other stream tests. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + delivered = append(delivered, resp.GetStreamSlices()) + return nil, nil + }, + Logger: env.Logger, + T: t, + } + _, err := poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: execution.GetWorkflowId(), StreamId: streamID, StartOffset: 0, + }, + }) + require.NoError(t, err) + _, err = s.client.AddMessages(s.ctx(), &streamlib.AddMessagesRequest{ + FrontendRequest: &streamlib.AddMessagesInput{ + Namespace: s.ns, StreamId: streamID, Records: streamMsgs("tokens", "consumed-once"), + }, + }) + require.NoError(t, err) + + // Consumed and recorded, which is what a replay will have to reproduce. + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + require.Len(t, currentSlice(t, delivered[1]).GetRecords(), 1) + + deleteStreamAndWait(t, s, streamID) + + env.CloseShard(env.NamespaceID().String(), execution.GetWorkflowId()) + signalWorkflow(t, s, execution.GetWorkflowId(), execution.GetRunId()) + + stop := pollInBackground(t, env, s.ns, tq) + defer stop() + await.RequireTrue(t, func() bool { + return workflowTaskFailedWith(env.GetHistory(s.ns, execution), + enumspb.WORKFLOW_TASK_FAILED_CAUSE_STREAM_RANGE_UNAVAILABLE) != nil + }, 30*time.Second, 200*time.Millisecond) + + failed := workflowTaskFailedWith(env.GetHistory(s.ns, execution), + enumspb.WORKFLOW_TASK_FAILED_CAUSE_STREAM_RANGE_UNAVAILABLE) + require.Contains(t, failed.GetFailure().GetMessage(), "cannot replay") + require.Contains(t, failed.GetFailure().GetMessage(), streamID) +} diff --git a/tests/stream_retention_test.go b/tests/stream_retention_test.go new file mode 100644 index 00000000000..1d4bb3d9c5e --- /dev/null +++ b/tests/stream_retention_test.go @@ -0,0 +1,272 @@ +package tests + +import ( + "testing" + "time" + + "github.com/google/uuid" + "github.com/stretchr/testify/require" + commandpb "go.temporal.io/api/command/v1" + commonpb "go.temporal.io/api/common/v1" + enumspb "go.temporal.io/api/enums/v1" + streampb "go.temporal.io/api/stream/v1" + taskqueuepb "go.temporal.io/api/taskqueue/v1" + "go.temporal.io/api/workflowservice/v1" + chasmstream "go.temporal.io/server/chasm/lib/stream" + streamlib "go.temporal.io/server/chasm/lib/stream/gen/streampb/v1" + "go.temporal.io/server/common/testing/await" + "go.temporal.io/server/tests/testcore" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/types/known/durationpb" +) + +// A range a workflow consumed is part of that workflow's recovery: the offsets +// are in its History and a replay is asked to reproduce them from the stream. +// Deleting those messages succeeds immediately and fails much later, during a +// replay nobody is watching, so the stream refuses instead. +func TestTruncationRefusesToDropWhatAConsumerNeedsToReplay(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + streamID := "retained-stream-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + _, err := s.client.AddMessages(s.ctx(), &streamlib.AddMessagesRequest{ + FrontendRequest: &streamlib.AddMessagesInput{ + Namespace: s.ns, StreamId: streamID, + Records: []*streamlib.StreamRecord{ + {Body: &commonpb.Payload{Data: []byte("one")}, Kind: streampb.STREAM_RECORD_KIND_DATA}, + {Body: &commonpb.Payload{Data: []byte("two")}, Kind: streampb.STREAM_RECORD_KIND_DATA}, + {Body: &commonpb.Payload{Data: []byte("three")}, Kind: streampb.STREAM_RECORD_KIND_DATA}, + }, + }, + }) + require.NoError(t, err) + + id := "stream-retention-wf-" + uuid.NewString() + tq := &taskqueuepb.TaskQueue{Name: id + "-tq", Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + _, err = env.FrontendClient().StartWorkflowExecution( + s.ctx(), + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: s.ns, + WorkflowId: id, + WorkflowType: &commonpb.WorkflowType{Name: "stream-consumer"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + Identity: "tester", + }, + ) + require.NoError(t, err) + + //nolint:staticcheck // SA1019: consistent with the other stream tests. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + _ *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + return nil, nil + }, + Logger: env.Logger, + T: t, + } + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: id, StreamId: streamID, StartOffset: 0, + }, + }) + require.NoError(t, err) + + // The floor is where the subscription started. It holds from the moment of + // subscribing, before anything has been delivered, because the first range + // the workflow will record begins there. + truncate := func() error { + _, err := s.client.TruncateStream(s.ctx(), &streamlib.TruncateStreamRequest{ + FrontendRequest: &streamlib.TruncateStreamInput{ + Namespace: s.ns, StreamId: streamID, NewBaseOffset: 2, + }, + }) + return err + } + require.ErrorContains(t, truncate(), "still depends on offset 0") + + // Delivering and recording the range does not move the floor either. + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + require.ErrorContains(t, truncate(), "still depends on offset 0") + + desc, err := s.client.DescribeStream(s.ctx(), &streamlib.DescribeStreamRequest{ + FrontendRequest: &streamlib.DescribeStreamInput{Namespace: s.ns, StreamId: streamID}, + }) + require.NoError(t, err) + state := desc.GetFrontendResponse().GetState() + require.Equal(t, int64(0), state.GetBaseOffset(), "the messages must still be there") + for _, consumer := range state.GetConsumers() { + require.Equal(t, int64(0), consumer.GetReplayFloor(), + "the floor is where the subscription started, not where it has read to") + } +} + +// The refusal is about a consumer's recovery, so a stream nobody is consuming +// truncates exactly as before. Without this, the fix would be a storage leak +// wearing a correctness argument. +func TestTruncationStillWorksWithNoConsumer(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + streamID := "unwatched-stream-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + _, err := s.client.AddMessages(s.ctx(), &streamlib.AddMessagesRequest{ + FrontendRequest: &streamlib.AddMessagesInput{ + Namespace: s.ns, StreamId: streamID, + Records: []*streamlib.StreamRecord{ + {Body: &commonpb.Payload{Data: []byte("one")}, Kind: streampb.STREAM_RECORD_KIND_DATA}, + {Body: &commonpb.Payload{Data: []byte("two")}, Kind: streampb.STREAM_RECORD_KIND_DATA}, + }, + }, + }) + require.NoError(t, err) + + _, err = s.client.TruncateStream(s.ctx(), &streamlib.TruncateStreamRequest{ + FrontendRequest: &streamlib.TruncateStreamInput{ + Namespace: s.ns, StreamId: streamID, NewBaseOffset: 2, + }, + }) + require.NoError(t, err) + + desc, err := s.client.DescribeStream(s.ctx(), &streamlib.DescribeStreamRequest{ + FrontendRequest: &streamlib.DescribeStreamInput{Namespace: s.ns, StreamId: streamID}, + }) + require.NoError(t, err) + require.Equal(t, int64(2), desc.GetFrontendResponse().GetState().GetBaseOffset()) +} + +// A closed stream past its retention is still held by a consumer that is +// running: its History depends on the ranges it consumed. Deletion waits and +// asks again, and goes through once the consumer is gone. +func TestRetentionWaitsForAnActiveConsumer(t *testing.T) { + env := testcore.NewEnv(t, + testcore.WithDynamicConfig(chasmstream.RetentionRecheckIntervalSetting, time.Second), + ) + s := newStreamTestEnvFrom(t, env) + + streamID := "retained-until-read-" + uuid.NewString() + _, err := s.client.CreateStream(s.ctx(), &streamlib.CreateStreamRequest{ + FrontendRequest: &streamlib.CreateStreamInput{ + Namespace: s.ns, StreamId: streamID, + Lifecycle: &streamlib.StreamLifecycle{Retention: durationpb.New(time.Second)}, + }, + }) + require.NoError(t, err) + + execution, tq := startConsumer(t, s, "stream-wf-retained-") + task := 0 + //nolint:staticcheck // SA1019: consistent with the other stream tests. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + task++ + if task == 2 { + return completeWorkflowCommand(), nil + } + return nil, nil + }, + Logger: env.Logger, + T: t, + } + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: execution.GetWorkflowId(), StreamId: streamID, StartOffset: 0, + }, + }) + require.NoError(t, err) + + _, err = s.client.CloseStream(s.ctx(), &streamlib.CloseStreamRequest{ + FrontendRequest: &streamlib.CloseStreamInput{Namespace: s.ns, StreamId: streamID}, + }) + require.NoError(t, err) + + // Well past retention, and the stream is still there because the consumer + // is still running. The assertion is that nothing happens, which only the + // deadline passing can show. + time.Sleep(3 * time.Second) //nolint:forbidigo // waiting for retention to elapse is the test. + state := describeStream(t, s, streamID) + require.True(t, state.GetClosed()) + require.Len(t, state.GetConsumers(), 1) + + signalWorkflow(t, s, execution.GetWorkflowId(), execution.GetRunId()) + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + // The next recheck finds the consumer gone and lets retention through. + await.RequireTrue(t, func() bool { + _, err := s.client.DescribeStream(s.ctx(), &streamlib.DescribeStreamRequest{ + FrontendRequest: &streamlib.DescribeStreamInput{Namespace: s.ns, StreamId: streamID}, + }) + return err != nil + }, 20*time.Second, 200*time.Millisecond) +} + +// Deleting a stream a running workflow consumes succeeds now and fails that +// workflow at its next replay, so the caller has to say it means it. +func TestDeleteStreamRefusesWhileAConsumerIsActive(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + streamID := "guarded-stream-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + execution, tq := startConsumer(t, s, "stream-wf-guarded-") + //nolint:staticcheck // SA1019: consistent with the other stream tests. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + return nil, nil + }, + Logger: env.Logger, + T: t, + } + _, err := poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: execution.GetWorkflowId(), StreamId: streamID, StartOffset: 0, + }, + }) + require.NoError(t, err) + + _, err = s.client.DeleteStream(s.ctx(), &streamlib.DeleteStreamRequest{ + FrontendRequest: &streamlib.DeleteStreamInput{Namespace: s.ns, StreamId: streamID}, + }) + require.Equal(t, codes.FailedPrecondition, status.Code(err)) + require.ErrorContains(t, err, execution.GetWorkflowId(), "the refusal names the consumer") + + _, err = s.client.DeleteStream(s.ctx(), &streamlib.DeleteStreamRequest{ + FrontendRequest: &streamlib.DeleteStreamInput{Namespace: s.ns, StreamId: streamID, Force: true}, + }) + require.NoError(t, err) + await.RequireTrue(t, func() bool { + _, err := s.client.DescribeStream(s.ctx(), &streamlib.DescribeStreamRequest{ + FrontendRequest: &streamlib.DescribeStreamInput{Namespace: s.ns, StreamId: streamID}, + }) + return err != nil + }, 20*time.Second, 100*time.Millisecond) +} diff --git a/tests/stream_routing_cross_host_test.go b/tests/stream_routing_cross_host_test.go new file mode 100644 index 00000000000..f2bf31a3ee4 --- /dev/null +++ b/tests/stream_routing_cross_host_test.go @@ -0,0 +1,384 @@ +package tests + +import ( + "context" + "encoding/json" + "fmt" + "os" + "path/filepath" + "testing" + "time" + + "github.com/google/uuid" + "github.com/stretchr/testify/require" + commandpb "go.temporal.io/api/command/v1" + commonpb "go.temporal.io/api/common/v1" + enumspb "go.temporal.io/api/enums/v1" + historypb "go.temporal.io/api/history/v1" + streampb "go.temporal.io/api/stream/v1" + taskqueuepb "go.temporal.io/api/taskqueue/v1" + "go.temporal.io/api/workflowservice/v1" + "go.temporal.io/server/api/adminservice/v1" + "go.temporal.io/server/api/historyservice/v1" + streamlib "go.temporal.io/server/chasm/lib/stream/gen/streampb/v1" + "go.temporal.io/server/common" + "go.temporal.io/server/common/testing/await" + "go.temporal.io/server/common/testing/testlogger" + "go.temporal.io/server/tests/testcore" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/durationpb" +) + +// crossHostTopology is a two-host History cluster with the shards it was +// confirmed to split, plus the consumer and source shards each case uses. +type crossHostTopology struct { + cluster *testcore.TestCluster + config *testcore.TestClusterConfig + ns string + nsID string + consumerHost string + remoteHost string + consumerShard int32 + localSource int32 + remoteSource int32 +} + +// A consumer on one History host reading a stream that lives on another. Every +// step that spans the two executions has to route rather than resolve the far +// shard locally: registering the pin, being told the frontier moved, reading +// the payload for the live task, and re-reading it for a cold replay. +// +// The subscription is made two ways, over the RPC and from the workflow's own +// command, because they take different paths to the stream's shard. +func TestStreamRoutedCrossHostDeliveryAndReplay(t *testing.T) { + logger := testlogger.NewTestLogger(t, testlogger.FailOnExpectedErrorOnly) + topo := newCrossHostTopology(t, logger) + artifacts := newRoutingArtifacts(t) + + ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) + defer cancel() + artifacts.writeJSON("topology", topo.shardsByHost(ctx, t)) + + frontend := topo.cluster.FrontendClient() + conn, err := grpc.NewClient(topo.cluster.Host().FrontendGRPCAddress(), + grpc.WithTransportCredentials(insecure.NewCredentials())) + require.NoError(t, err) + t.Cleanup(func() { require.NoError(t, conn.Close()) }) + streams := streamlib.NewStreamServiceClient(conn) + + ownerConn, err := grpc.NewClient(topo.consumerHost, + grpc.WithTransportCredentials(insecure.NewCredentials())) + require.NoError(t, err) + t.Cleanup(func() { require.NoError(t, ownerConn.Close()) }) + owner := historyservice.NewHistoryServiceClient(ownerConn) + + cases := []struct { + name string + crossHost bool + viaCommand bool + }{ + {name: "same-host", crossHost: false}, + {name: "cross-host", crossHost: true}, + {name: "cross-host-command", crossHost: true, viaCommand: true}, + } + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + id := topo.idOnShard(t, tc.name+"-consumer", topo.consumerShard) + source := topo.idOnShard(t, tc.name+"-source", topo.sourceShard(tc.crossHost)) + _, err := streams.CreateStream(ctx, &streamlib.CreateStreamRequest{ + FrontendRequest: &streamlib.CreateStreamInput{Namespace: topo.ns, StreamId: source}, + }) + require.NoError(t, err) + + tq := &taskqueuepb.TaskQueue{Name: id + "-tq", Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + started, err := frontend.StartWorkflowExecution( + ctx, + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: topo.ns, + WorkflowId: id, + WorkflowType: &commonpb.WorkflowType{Name: "cross-host-consumer"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(2 * time.Minute), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + }, + ) + require.NoError(t, err) + execution := &commonpb.WorkflowExecution{WorkflowId: id, RunId: started.GetRunId()} + + var delivered [][]*streampb.StreamSlice + //nolint:staticcheck // SA1019: this test isolates the server response from SDK replay. + poller := &testcore.TaskPoller{ + Client: frontend, + Namespace: topo.ns, + TaskQueue: tq, + Identity: "cross-host-validation", + Logger: logger, + T: t, + WorkflowTaskHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + delivered = append(delivered, resp.GetStreamSlices()) + if tc.viaCommand && len(delivered) == 1 { + return subscribeCommand(source), nil + } + return nil, nil + }, + } + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + topo.requireOwner(ctx, t, id, topo.consumerHost) + topo.requireOwner(ctx, t, source, topo.hostFor(tc.crossHost)) + + if !tc.viaCommand { + _, err = streams.SubscribeWorkflow(ctx, &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: topo.ns, WorkflowId: id, StreamId: source, + }, + }) + require.NoError(t, err) + } + // Either way the pin has to have landed on the stream's own shard. + desc, err := streams.DescribeStream(ctx, &streamlib.DescribeStreamRequest{ + FrontendRequest: &streamlib.DescribeStreamInput{Namespace: topo.ns, StreamId: source}, + }) + require.NoError(t, err) + require.Len(t, desc.GetFrontendResponse().GetState().GetConsumers(), 1) + + _, err = streams.AddMessages(ctx, &streamlib.AddMessagesRequest{ + FrontendRequest: &streamlib.AddMessagesInput{ + Namespace: topo.ns, StreamId: source, + Records: streamMsgs("tokens", "retained-input"), + }, + }) + require.NoError(t, err) + + history := func() []*historypb.HistoryEvent { + return topo.history(ctx, t, execution) + } + latestScheduled := func() int64 { + var scheduled int64 + for _, event := range history() { + if event.GetEventType() == enumspb.EVENT_TYPE_WORKFLOW_TASK_SCHEDULED { + scheduled = event.GetEventId() + } + } + return scheduled + } + // The append alone has to produce the task, through the routed push. + await.RequireTrue(t, func() bool { return latestScheduled() > 2 }, + 10*time.Second, 20*time.Millisecond) + + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + live := currentSlice(t, delivered[1]) + require.Equal(t, "retained-input", string(live.GetRecords()[0].GetBody().GetData())) + artifacts.writeProto(tc.name+"-live-slice", live) + artifacts.writeProto(tc.name+"-committed-history", &historypb.History{Events: history()}) + consumedAt := completedEventWithCursors(t, history()) + + // Evict the consumer, then start its next task by hand so the cold + // response can be inspected before matching hands it to a poller. + _, err = owner.CloseShard(ctx, &historyservice.CloseShardRequest{ShardId: topo.consumerShard}) + require.NoError(t, err) + _, err = frontend.SignalWorkflowExecution(ctx, &workflowservice.SignalWorkflowExecutionRequest{ + Namespace: topo.ns, + WorkflowExecution: execution, + SignalName: "cold-replay-boundary", + RequestId: uuid.NewString(), + }) + require.NoError(t, err) + response, err := owner.RecordWorkflowTaskStarted( + ctx, + &historyservice.RecordWorkflowTaskStartedRequest{ + NamespaceId: topo.nsID, + WorkflowExecution: execution, + ScheduledEventId: latestScheduled(), + RequestId: uuid.NewString(), + PollRequest: &workflowservice.PollWorkflowTaskQueueRequest{ + Namespace: topo.ns, TaskQueue: tq, Identity: "cross-host-validation", + }, + }, + ) + require.NoError(t, err) + artifacts.writeProto(tc.name+"-cold-response", response) + + replayed := sliceForEvent(response.GetStreamSlices(), consumedAt) + require.NotNil(t, replayed, "cold replay must re-supply the committed input range") + require.Equal(t, "retained-input", string(replayed.GetRecords()[0].GetBody().GetData())) + }) + } +} + +func subscribeCommand(streamID string) []*commandpb.Command { + return []*commandpb.Command{{ + CommandType: enumspb.COMMAND_TYPE_SUBSCRIBE_STREAM, + Attributes: &commandpb.Command_SubscribeStreamCommandAttributes{ + SubscribeStreamCommandAttributes: &commandpb.SubscribeStreamCommandAttributes{ + StreamId: streamID, StartOffset: 0, + }, + }, + }} +} + +func newCrossHostTopology(t *testing.T, logger *testlogger.TestLogger) *crossHostTopology { + t.Helper() + config := &testcore.TestClusterConfig{ + HistoryConfig: testcore.HistoryConfig{NumHistoryHosts: 2, NumHistoryShards: 32}, + Persistence: testcore.GetPersistenceTestDefaults(), + WorkerConfig: testcore.WorkerConfig{DisableWorker: true}, + } + cluster, err := testcore.NewTestClusterFactory().NewCluster(t, config, logger) + require.NoError(t, err) + t.Cleanup(func() { require.NoError(t, cluster.TearDownCluster()) }) + + ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) + defer cancel() + frontend := cluster.FrontendClient() + ns := "validation-cross-host-" + uuid.NewString() + _, err = frontend.RegisterNamespace(ctx, &workflowservice.RegisterNamespaceRequest{ + Namespace: ns, WorkflowExecutionRetentionPeriod: durationpb.New(24 * time.Hour), + }) + require.NoError(t, err) + described, err := frontend.DescribeNamespace(ctx, &workflowservice.DescribeNamespaceRequest{ + Namespace: ns, + }) + require.NoError(t, err) + + topo := &crossHostTopology{ + cluster: cluster, + config: config, + ns: ns, + nsID: described.GetNamespaceInfo().GetId(), + } + hosts := topo.shardsByHost(ctx, t) + require.Len(t, hosts, 2, "must verify two actual owners, not merely configure two services") + for host, shards := range hosts { + if topo.consumerHost == "" && len(shards) >= 2 { + topo.consumerHost, topo.consumerShard, topo.localSource = host, shards[0], shards[1] + } + } + require.NotEmpty(t, topo.consumerHost) + for host, shards := range hosts { + if host != topo.consumerHost { + topo.remoteHost, topo.remoteSource = host, shards[0] + } + } + t.Logf("consumer shard %d on %s, local source shard %d, remote source shard %d on %s", + topo.consumerShard, topo.consumerHost, topo.localSource, topo.remoteSource, topo.remoteHost) + return topo +} + +// shardsByHost asks the admin service who owns every shard. +func (topo *crossHostTopology) shardsByHost(ctx context.Context, t *testing.T) map[string][]int32 { + t.Helper() + hosts := map[string][]int32{} + for shard := int32(1); shard <= topo.config.HistoryConfig.NumHistoryShards; shard++ { + host, err := topo.cluster.AdminClient().DescribeHistoryHost(ctx, + &adminservice.DescribeHistoryHostRequest{ShardId: shard}) + require.NoError(t, err) + require.NotEmpty(t, host.GetAddress()) + hosts[host.GetAddress()] = append(hosts[host.GetAddress()], shard) + } + return hosts +} + +func (topo *crossHostTopology) hostFor(crossHost bool) string { + if crossHost { + return topo.remoteHost + } + return topo.consumerHost +} + +func (topo *crossHostTopology) sourceShard(crossHost bool) int32 { + if crossHost { + return topo.remoteSource + } + return topo.localSource +} + +// idOnShard finds a business id that hashes to the wanted shard. +func (topo *crossHostTopology) idOnShard(t *testing.T, prefix string, target int32) string { + t.Helper() + shards := topo.config.HistoryConfig.NumHistoryShards + for i := range 10000 { + id := fmt.Sprintf("%s-%d", prefix, i) + if common.WorkflowIDToHistoryShard(topo.nsID, id, shards) == target { + return id + } + } + t.Fatal("could not select an id on the target shard") + return "" +} + +func (topo *crossHostTopology) requireOwner( + ctx context.Context, t *testing.T, businessID string, host string, +) { + t.Helper() + desc, err := topo.cluster.AdminClient().DescribeHistoryHost( + ctx, + &adminservice.DescribeHistoryHostRequest{ + Namespace: topo.ns, + WorkflowExecution: &commonpb.WorkflowExecution{WorkflowId: businessID}, + }, + ) + require.NoError(t, err) + require.Equal(t, host, desc.GetAddress()) +} + +func (topo *crossHostTopology) history( + ctx context.Context, t *testing.T, execution *commonpb.WorkflowExecution, +) []*historypb.HistoryEvent { + t.Helper() + resp, err := topo.cluster.FrontendClient().GetWorkflowExecutionHistory(ctx, + &workflowservice.GetWorkflowExecutionHistoryRequest{Namespace: topo.ns, Execution: execution}) + require.NoError(t, err) + require.Empty(t, resp.GetNextPageToken()) + return resp.GetHistory().GetEvents() +} + +// routingArtifacts writes the responses this test observed to a directory, for +// the SDK validation runs that compare them against what a worker receives. Off +// unless the measurement switch is set, like the other evidence collectors. +type routingArtifacts struct { + t *testing.T + dir string +} + +func newRoutingArtifacts(t *testing.T) *routingArtifacts { + t.Helper() + if os.Getenv("TEMPORAL_STREAM_BENCH") != "1" { + return &routingArtifacts{t: t} + } + dir := os.Getenv("AI198_ROUTING_RESULT_DIR") + if dir == "" { + dir = t.TempDir() + } + require.NoError(t, os.MkdirAll(dir, 0o755)) + return &routingArtifacts{t: t, dir: dir} +} + +func (a *routingArtifacts) writeJSON(name string, value any) { + if a.dir == "" { + return + } + encoded, err := json.MarshalIndent(value, "", " ") + require.NoError(a.t, err) + require.NoError(a.t, os.WriteFile(filepath.Join(a.dir, name+".json"), encoded, 0o644)) +} + +func (a *routingArtifacts) writeProto(name string, message proto.Message) { + if a.dir == "" { + return + } + encoded, err := protojson.MarshalOptions{Indent: " "}.Marshal(message) + require.NoError(a.t, err) + require.NoError(a.t, os.WriteFile(filepath.Join(a.dir, name+".json"), encoded, 0o644)) + binary, err := proto.Marshal(message) + require.NoError(a.t, err) + require.NoError(a.t, os.WriteFile(filepath.Join(a.dir, name+".pb"), binary, 0o644)) +} diff --git a/tests/streaming_baseline_test.go b/tests/streaming_baseline_test.go new file mode 100644 index 00000000000..cfc36864d8b --- /dev/null +++ b/tests/streaming_baseline_test.go @@ -0,0 +1,470 @@ +package tests + +import ( + "context" + "fmt" + "os" + "slices" + "sync" + "sync/atomic" + "testing" + "time" + + "github.com/stretchr/testify/require" + "go.temporal.io/api/workflowservice/v1" + sdkclient "go.temporal.io/sdk/client" + "go.temporal.io/sdk/workflow" + "go.temporal.io/server/common/metrics" + "go.temporal.io/server/common/metrics/metricstest" + "go.temporal.io/server/tests/testcore" +) + +// Baseline measurements for today's Workflow Streams pattern: an Activity +// batches items into Signals and a consumer long-polls with an Update. AI-198 +// proposes replacing it, and a replacement cannot be justified without knowing +// what the current pattern actually costs. +// +// The two dimensions that matter are the flush interval and the subscriber +// count. The shipped guidance is a ~2s flush; the Native Streams 1-pager asks +// for 100ms to be practical. Running both shows the cost of closing that gap +// under the current design, which is the number the September check-in needs. +// +// The full matrix takes minutes, so it is opt-in via TEMPORAL_STREAM_BENCH=1. +// Without it a short configuration still runs, which keeps the harness honest +// without slowing the suite. + +const ( + streamBatchSignal = "stream_batch" + streamDoneSignal = "stream_done" + streamPollUpdate = "poll_events" + streamMessageSize = 20 +) + +type streamBaselineParams struct { + name string + flushInterval time.Duration + subscribers int + messageRate int // messages per second + duration time.Duration +} + +type streamBaselineResult struct { + params streamBaselineParams + + messagesSent int + messagesReceived int + pollRejections int64 + + historyBytes int64 + historyEvents int64 + // Set when the workload has no workflow at all, so the history columns are + // an absence rather than a measurement. Rendering them as 0.00 next to a + // measured figure reads as a comparison that was never made. + historyNotApplicable bool + + persistenceRequests int64 + persistenceByOp map[string]int64 + + latencyP50 time.Duration + latencyP99 time.Duration + + // Set when the run could not complete, for example because the workflow + // exceeded a history limit. That is itself a result worth reporting. + failure string +} + +// streamBaselineWorkflow mirrors the shipped pattern: Signals carry batches in, +// an Update long-polls them back out, and the workflow holds the buffer. +func streamBaselineWorkflow(ctx workflow.Context) error { + var buffer []string + done := false + + err := workflow.SetUpdateHandler(ctx, streamPollUpdate, + func(ctx workflow.Context, lastSeen int) ([]string, error) { + // The shape that makes this expensive: every poll is a durable + // state transition, even when it returns nothing new. + if err := workflow.Await(ctx, func() bool { + return len(buffer) > lastSeen || done + }); err != nil { + return nil, err + } + if lastSeen >= len(buffer) { + return nil, nil + } + out := make([]string, len(buffer)-lastSeen) + copy(out, buffer[lastSeen:]) + return out, nil + }) + if err != nil { + return err + } + + batches := workflow.GetSignalChannel(ctx, streamBatchSignal) + finish := workflow.GetSignalChannel(ctx, streamDoneSignal) + + for !done { + sel := workflow.NewSelector(ctx) + sel.AddReceive(batches, func(c workflow.ReceiveChannel, _ bool) { + var batch []string + c.Receive(ctx, &batch) + buffer = append(buffer, batch...) + }) + sel.AddReceive(finish, func(c workflow.ReceiveChannel, _ bool) { + c.Receive(ctx, nil) + done = true + }) + sel.Select(ctx) + } + + // Let any parked pollers observe the terminal state before exiting. + return workflow.Await(ctx, func() bool { return true }) +} + +func TestStreamingBaseline(t *testing.T) { + matrix := shortStreamBaselineMatrix() + if os.Getenv("TEMPORAL_STREAM_BENCH") == "1" { + matrix = fullStreamBaselineMatrix() + } + + results := make([]streamBaselineResult, 0, len(matrix)) + for _, p := range matrix { + t.Run(p.name, func(t *testing.T) { + results = append(results, runStreamBaseline(t, p)) + }) + } + reportStreamBaseline(t, results) +} + +func shortStreamBaselineMatrix() []streamBaselineParams { + return []streamBaselineParams{ + { + name: "flush2s_sub1", flushInterval: 2 * time.Second, subscribers: 1, + messageRate: 40, duration: 6 * time.Second, + }, + { + name: "flush100ms_sub1", flushInterval: 100 * time.Millisecond, subscribers: 1, + messageRate: 40, duration: 6 * time.Second, + }, + } +} + +func fullStreamBaselineMatrix() []streamBaselineParams { + var out []streamBaselineParams + for _, flush := range []time.Duration{2 * time.Second, 100 * time.Millisecond} { + for _, subs := range []int{1, 5, 25} { + out = append(out, streamBaselineParams{ + name: fmt.Sprintf("flush%s_sub%d", flush, subs), + flushInterval: flush, + subscribers: subs, + messageRate: 40, + duration: 50 * time.Second, + }) + } + } + return out +} + +func runStreamBaseline(t *testing.T, p streamBaselineParams) streamBaselineResult { + // Dedicated cluster so competing test load does not distort the timings. + // Metric capture is namespace-scoped because persistence_requests carries a + // namespace tag, which also attributes the counts to this workload rather + // than to cluster background traffic. + // + // Testlogger failure is off because a sustained-load run torn down while + // queues are still draining always logs shard-status errors on shutdown. + // The cost is losing the safety net that would catch a genuine server error + // during the run, so treat an anomalous result as a reason to re-run with + // the option removed rather than trusting it. + env := testcore.NewEnv(t, testcore.WithDisableTestloggerFailure()) + res := streamBaselineResult{params: p, persistenceByOp: map[string]int64{}} + + env.SdkWorker().RegisterWorkflow(streamBaselineWorkflow) + + ctx, cancel := context.WithTimeout(context.Background(), p.duration+2*time.Minute) + defer cancel() + + wfID := env.Tv().WorkflowID() + run, err := env.SdkClient().ExecuteWorkflow(ctx, sdkclient.StartWorkflowOptions{ + ID: wfID, + TaskQueue: env.WorkerTaskQueue(), + }, streamBaselineWorkflow) + require.NoError(t, err) + + // Started after workflow creation so cluster, namespace, and start costs do + // not inflate the per-message figures. Both designs pay those equally. + capture := env.StartNamespaceMetricCapture() + + sentAt := &sync.Map{} // message sequence -> generation time + var receivedTotal atomic.Int64 + var pollRejections atomic.Int64 + var consumers sync.WaitGroup + consumerLatencies := make([][]time.Duration, p.subscribers) + consumerCounts := make([]int, p.subscribers) + consumerCtx, stopConsumers := context.WithCancel(ctx) + defer stopConsumers() + + for i := range p.subscribers { + consumers.Add(1) + go func(idx int) { + defer consumers.Done() + lat, n := runStreamConsumer( + consumerCtx, env, wfID, run.GetRunID(), sentAt, &receivedTotal, &pollRejections) + consumerLatencies[idx] = lat + consumerCounts[idx] = n + }(i) + } + + res.messagesSent = runStreamProducer(ctx, t, env, wfID, run.GetRunID(), p, sentAt, &res) + + // Drain, then stop the consumers, and only then let the workflow finish, so + // that no consumer is ever polling an execution that is completing. One that + // is counts its own doomed polls as rejections and its client backoff as + // delivery latency, which measures the harness rather than the pattern. The + // workflow finishes last so the history numbers below are final rather than a + // mid-flight snapshot. A cell that fails to drain is reported rather than + // failed: hitting a limit is a real property of this pattern and is part of + // what the benchmark is measuring. + want := int64(res.messagesSent) * int64(p.subscribers) + if !waitForDrain(ctx, &receivedTotal, want, 15*time.Second) { + t.Logf("drained %d of %d expected deliveries before timeout", receivedTotal.Load(), want) + } + stopConsumers() + consumers.Wait() + require.NoError(t, + env.SdkClient().SignalWorkflow(ctx, wfID, run.GetRunID(), streamDoneSignal, nil)) + if err := run.Get(ctx, nil); err != nil { + t.Logf("workflow did not complete cleanly: %v", err) + } + + var all []time.Duration + for i := range p.subscribers { + all = append(all, consumerLatencies[i]...) + res.messagesReceived += consumerCounts[i] + } + res.pollRejections = pollRejections.Load() + res.latencyP50 = percentile(all, 0.50) + res.latencyP99 = percentile(all, 0.99) + + desc, err := env.FrontendClient().DescribeWorkflowExecution( + ctx, + &workflowservice.DescribeWorkflowExecutionRequest{ + Namespace: env.Namespace().String(), + Execution: env.Tv().WithWorkflowID(wfID).WorkflowExecution(), + }, + ) + if err == nil { + res.historyBytes = desc.GetWorkflowExecutionInfo().GetHistorySizeBytes() + res.historyEvents = desc.GetWorkflowExecutionInfo().GetHistoryLength() + } + + for _, rec := range capture.Metric(metrics.PersistenceRequests.Name()) { + res.persistenceRequests += recordingCount(rec) + if op, ok := rec.Tags["operation"]; ok { + res.persistenceByOp[op] += recordingCount(rec) + } + } + + return res +} + +func runStreamProducer( + ctx context.Context, + t *testing.T, + env *testcore.TestEnv, + wfID, runID string, + p streamBaselineParams, + sentAt *sync.Map, + res *streamBaselineResult, +) int { + payload := make([]byte, streamMessageSize) + for i := range payload { + payload[i] = 'x' + } + + // Messages are generated continuously and flushed on the interval, which is + // what an EventBatcher does. Latency is stamped at generation, not at + // flush: the time an item waits in the batcher is the dominant cost of a + // long flush interval, and stamping at flush would hide it entirely. + genTicker := time.NewTicker(time.Second / time.Duration(p.messageRate)) + defer genTicker.Stop() + flushTicker := time.NewTicker(p.flushInterval) + defer flushTicker.Stop() + deadline := time.Now().Add(p.duration) + + seq := 0 + var pending []string + + flush := func() bool { + if len(pending) == 0 { + return true + } + batch := pending + pending = nil + if err := env.SdkClient().SignalWorkflow(ctx, wfID, runID, streamBatchSignal, batch); err != nil { + // A history or signal limit is a legitimate outcome for this + // pattern, not a broken harness. Record it and stop. + res.failure = err.Error() + t.Logf("producer stopped after %d messages: %v", seq, err) + return false + } + return true + } + + for time.Now().Before(deadline) { + select { + case <-ctx.Done(): + return seq + case <-genTicker.C: + sentAt.Store(seq, time.Now()) + pending = append(pending, fmt.Sprintf("%d:%s", seq, payload)) + seq++ + case <-flushTicker.C: + if !flush() { + return seq + } + } + } + flush() + return seq +} + +func runStreamConsumer( + ctx context.Context, + env *testcore.TestEnv, + wfID, runID string, + sentAt *sync.Map, + receivedTotal *atomic.Int64, + rejections *atomic.Int64, +) ([]time.Duration, int) { + var latencies []time.Duration + var batch []string + lastSeen := 0 + + for ctx.Err() == nil { + handle, err := env.SdkClient().UpdateWorkflow(ctx, sdkclient.UpdateWorkflowOptions{ + WorkflowID: wfID, + RunID: runID, + UpdateName: streamPollUpdate, + Args: []any{lastSeen}, + WaitForStage: sdkclient.WorkflowUpdateStageCompleted, + }) + if err == nil { + err = handle.Get(ctx, &batch) + } + if err != nil { + // A rejected poll is a measurement, not a reason to stop. Killing + // the consumer here would report a server limit as consumer + // slowness, which is a different and much less useful claim. + rejections.Add(1) + select { + case <-ctx.Done(): + return latencies, lastSeen + case <-time.After(50 * time.Millisecond): + } + continue + } + received := time.Now() + for range batch { + if v, ok := sentAt.Load(lastSeen); ok { + latencies = append(latencies, received.Sub(v.(time.Time))) + } + lastSeen++ + receivedTotal.Add(1) + } + } + return latencies, lastSeen +} + +// historyPerMsg renders a per-message history figure, keeping a workload with +// no workflow distinct from one that measured zero. +func (r streamBaselineResult) historyPerMsg(v int64) string { + if r.historyNotApplicable { + return "no workflow" + } + if r.messagesSent == 0 { + return "n/a" + } + return fmt.Sprintf("%.2f", float64(v)/float64(r.messagesSent)) +} + +// waitForDrain polls until every consumer has caught up or the deadline passes. +// It reports rather than asserts, because a cell that cannot drain is a result. +func waitForDrain(ctx context.Context, got *atomic.Int64, want int64, timeout time.Duration) bool { + ticker := time.NewTicker(100 * time.Millisecond) + defer ticker.Stop() + deadline := time.After(timeout) + for { + if got.Load() >= want { + return true + } + select { + case <-ctx.Done(): + return false + case <-deadline: + return false + case <-ticker.C: + } + } +} + +func recordingCount(rec *metricstest.CapturedRecording) int64 { + switch v := rec.Value.(type) { + case int64: + return v + case float64: + return int64(v) + default: + return 0 + } +} + +func percentile(d []time.Duration, q float64) time.Duration { + if len(d) == 0 { + return 0 + } + sorted := make([]time.Duration, len(d)) + copy(sorted, d) + slices.Sort(sorted) + idx := int(float64(len(sorted)-1) * q) + return sorted[idx] +} + +func reportStreamBaseline(t *testing.T, results []streamBaselineResult) { + // Emitted as markdown so the numbers can go straight into the design docs + // without being retyped, which is how transcription errors get in. + t.Log("Workflow Streams baseline: Signals in, polling Update out") + t.Log("") + t.Log("| scenario | msgs | delivered | rejected polls | hist events/msg | hist bytes/msg " + + "| persist ops/msg | p50 | p99 |") + t.Log("|---|---|---|---|---|---|---|---|---|") + for _, r := range results { + perMsg := func(v int64) string { + if r.messagesSent == 0 { + return "n/a" + } + return fmt.Sprintf("%.2f", float64(v)/float64(r.messagesSent)) + } + t.Logf("| %s | %d | %d | %d | %s | %s | %s | %s | %s |", + r.params.name, r.messagesSent, r.messagesReceived, r.pollRejections, + r.historyPerMsg(r.historyEvents), r.historyPerMsg(r.historyBytes), + perMsg(r.persistenceRequests), + r.latencyP50.Round(time.Millisecond), r.latencyP99.Round(time.Millisecond)) + } + t.Log("") + for _, r := range results { + if r.failure != "" { + t.Logf("%s did not complete: %s", r.params.name, r.failure) + } + if r.messagesSent > 0 && r.messagesReceived < r.messagesSent*r.params.subscribers { + t.Logf("%s under-delivered: %d of %d expected", + r.params.name, r.messagesReceived, r.messagesSent*r.params.subscribers) + } + } + t.Log("Totals are absolute, not rates: persist ops exclude cluster and workflow start.") + t.Log("Rejected polls are bounded by history.maxInFlightUpdates (default 10) and") + t.Log("history.maxTotalUpdates (default 2000), both per workflow execution.") + for _, r := range results { + t.Logf("%s raw: events=%d bytes=%d persistOps=%d byOp=%v", + r.params.name, r.historyEvents, r.historyBytes, r.persistenceRequests, r.persistenceByOp) + } +} diff --git a/tests/streaming_native_test.go b/tests/streaming_native_test.go new file mode 100644 index 00000000000..556f9ed6e0f --- /dev/null +++ b/tests/streaming_native_test.go @@ -0,0 +1,262 @@ +package tests + +import ( + "context" + "fmt" + "os" + "sync" + "sync/atomic" + "testing" + "time" + + "github.com/stretchr/testify/require" + commonpb "go.temporal.io/api/common/v1" + streampb "go.temporal.io/api/stream/v1" + streamlib "go.temporal.io/server/chasm/lib/stream/gen/streampb/v1" + "go.temporal.io/server/common/metrics" + "go.temporal.io/server/tests/testcore" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" +) + +// The native-stream half of the comparison. It deliberately shares the workload +// shape, latency stamping, and metric capture with the Signal-and-Update +// baseline in streaming_baseline_test.go, because a benchmark whose two halves +// generate load differently measures the harness rather than the design. + +func runNativeStream(t *testing.T, p streamBaselineParams) streamBaselineResult { + env := testcore.NewEnv(t, testcore.WithDisableTestloggerFailure()) + res := streamBaselineResult{params: p, persistenceByOp: map[string]int64{}} + + conn, err := grpc.NewClient(env.FrontendGRPCAddress(), + grpc.WithTransportCredentials(insecure.NewCredentials())) + require.NoError(t, err) + defer func() { _ = conn.Close() }() + client := streamlib.NewStreamServiceClient(conn) + + ctx, cancel := context.WithTimeout(context.Background(), p.duration+2*time.Minute) + defer cancel() + + ns := env.Namespace().String() + streamID := fmt.Sprintf("bench-%s", p.name) + created, err := client.CreateStream(ctx, &streamlib.CreateStreamRequest{ + FrontendRequest: &streamlib.CreateStreamInput{Namespace: ns, StreamId: streamID}, + }) + require.NoError(t, err) + runID := created.GetFrontendResponse().GetRunId() + + // Started after creation so cluster and namespace setup do not inflate the + // per-message figures, matching the baseline. + capture := env.StartNamespaceMetricCapture() + + sentAt := &sync.Map{} + var receivedTotal atomic.Int64 + var pollRejections atomic.Int64 + + consumerCtx, stopConsumers := context.WithCancel(ctx) + defer stopConsumers() + var consumers sync.WaitGroup + latencies := make([][]time.Duration, p.subscribers) + counts := make([]int, p.subscribers) + + for i := range p.subscribers { + consumers.Add(1) + go func(idx int) { + defer consumers.Done() + latencies[idx], counts[idx] = runNativeConsumer( + consumerCtx, client, ns, streamID, runID, sentAt, &receivedTotal, &pollRejections) + }(i) + } + + res.messagesSent = runNativeProducer(ctx, t, client, ns, streamID, runID, p, sentAt, &res) + + want := int64(res.messagesSent) * int64(p.subscribers) + if !waitForDrain(ctx, &receivedTotal, want, 15*time.Second) { + t.Logf("drained %d of %d expected deliveries before timeout", receivedTotal.Load(), want) + } + stopConsumers() + consumers.Wait() + + var all []time.Duration + for i := range p.subscribers { + all = append(all, latencies[i]...) + res.messagesReceived += counts[i] + } + res.pollRejections = pollRejections.Load() + res.latencyP50 = percentile(all, 0.50) + res.latencyP99 = percentile(all, 0.99) + + // This workload has no workflow: the producer and every consumer are external + // gRPC clients. So there is no execution to describe and no history figure to + // report, which is not the same claim as a measured zero and must not be + // rendered as one. What a publish from workflow code costs in history is + // measured against a control in stream_publish_cost_test.go. + res.historyNotApplicable = true + + for _, rec := range capture.Metric(metrics.PersistenceRequests.Name()) { + res.persistenceRequests += recordingCount(rec) + if op, ok := rec.Tags["operation"]; ok { + res.persistenceByOp[op] += recordingCount(rec) + } + } + return res +} + +func runNativeProducer( + ctx context.Context, + t *testing.T, + client streamlib.StreamServiceClient, + ns, streamID, runID string, + p streamBaselineParams, + sentAt *sync.Map, + res *streamBaselineResult, +) int { + payload := make([]byte, streamMessageSize) + for i := range payload { + payload[i] = 'x' + } + + genTicker := time.NewTicker(time.Second / time.Duration(p.messageRate)) + defer genTicker.Stop() + flushTicker := time.NewTicker(p.flushInterval) + defer flushTicker.Stop() + deadline := time.Now().Add(p.duration) + + seq := 0 + var pending []*streamlib.StreamRecord + sequence := int64(0) + + flush := func() bool { + if len(pending) == 0 { + return true + } + batch := pending + pending = nil + sequence++ + _, err := client.AddMessages(ctx, &streamlib.AddMessagesRequest{ + FrontendRequest: &streamlib.AddMessagesInput{ + Namespace: ns, StreamId: streamID, RunId: runID, Records: batch, + ProducerId: "bench", Sequence: sequence, + }, + }) + if err != nil { + res.failure = err.Error() + t.Logf("producer stopped after %d messages: %v", seq, err) + return false + } + return true + } + + for time.Now().Before(deadline) { + select { + case <-ctx.Done(): + return seq + case <-genTicker.C: + sentAt.Store(seq, time.Now()) + pending = append(pending, &streamlib.StreamRecord{ + Body: &commonpb.Payload{Data: payload}, + Kind: streampb.STREAM_RECORD_KIND_DATA, + }) + seq++ + case <-flushTicker.C: + if !flush() { + return seq + } + } + } + flush() + return seq +} + +func runNativeConsumer( + ctx context.Context, + client streamlib.StreamServiceClient, + ns, streamID, runID string, + sentAt *sync.Map, + receivedTotal *atomic.Int64, + rejections *atomic.Int64, +) ([]time.Duration, int) { + var out []time.Duration + lastSeen := int64(0) + + for ctx.Err() == nil { + resp, err := client.PollMessages(ctx, &streamlib.PollMessagesRequest{ + FrontendRequest: &streamlib.PollMessagesInput{ + Namespace: ns, StreamId: streamID, RunId: runID, + FromOffset: lastSeen, WaitNewMessages: true, + }, + }) + if err != nil { + rejections.Add(1) + select { + case <-ctx.Done(): + return out, int(lastSeen) + case <-time.After(50 * time.Millisecond): + } + continue + } + received := time.Now() + fr := resp.GetFrontendResponse() + for range fr.GetRecords() { + if v, ok := sentAt.Load(int(lastSeen)); ok { + out = append(out, received.Sub(v.(time.Time))) + } + lastSeen++ + receivedTotal.Add(1) + } + if next := fr.GetNextOffset(); next > lastSeen { + lastSeen = next + } + } + return out, int(lastSeen) +} + +// TestStreamingComparison runs both designs over the same workload and reports +// them together. This is the artifact the go/no-go decision needs. +func TestStreamingComparison(t *testing.T) { + matrix := shortStreamBaselineMatrix() + if os.Getenv("TEMPORAL_STREAM_BENCH") == "1" { + matrix = fullStreamBaselineMatrix() + } + + var baseline, native []streamBaselineResult + for _, p := range matrix { + t.Run("baseline/"+p.name, func(t *testing.T) { + baseline = append(baseline, runStreamBaseline(t, p)) + }) + t.Run("native/"+p.name, func(t *testing.T) { + native = append(native, runNativeStream(t, p)) + }) + } + + t.Log("Workflow Streams (Signals in, polling Update out) versus native streams") + t.Log("") + t.Log("| scenario | design | msgs | delivered | rejected | wf hist bytes/msg " + + "| persist ops/msg | p50 | p99 |") + t.Log("|---|---|---|---|---|---|---|---|---|") + for i := range baseline { + logComparisonRow(t, "signals+update", baseline[i]) + logComparisonRow(t, "native", native[i]) + } + + t.Log("") + for i := range baseline { + t.Logf("%s signals+update raw: persistOps=%d byOp=%v", + baseline[i].params.name, baseline[i].persistenceRequests, baseline[i].persistenceByOp) + t.Logf("%s native raw: persistOps=%d byOp=%v", + native[i].params.name, native[i].persistenceRequests, native[i].persistenceByOp) + } +} + +func logComparisonRow(t *testing.T, design string, r streamBaselineResult) { + perMsg := func(v int64) string { + if r.messagesSent == 0 { + return "n/a" + } + return fmt.Sprintf("%.2f", float64(v)/float64(r.messagesSent)) + } + t.Logf("| %s | %s | %d | %d | %d | %s | %s | %s | %s |", + r.params.name, design, r.messagesSent, r.messagesReceived, r.pollRejections, + r.historyPerMsg(r.historyBytes), perMsg(r.persistenceRequests), + r.latencyP50.Round(time.Millisecond), r.latencyP99.Round(time.Millisecond)) +} diff --git a/tests/testcore/onebox.go b/tests/testcore/onebox.go index 908241e475e..7d1c812e0e2 100644 --- a/tests/testcore/onebox.go +++ b/tests/testcore/onebox.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "fmt" + "maps" "math/rand" "net" "os" @@ -42,7 +43,7 @@ import ( type ( temporalImpl struct { clients - server temporal.Server + servers []temporal.Server logger log.Logger serverConfig *config.Config @@ -218,7 +219,7 @@ func newTemporal(t *testing.T, params *temporalParams) *temporalImpl { return impl } -func (c *temporalImpl) Start() error { +func (c *temporalImpl) Start() (retErr error) { // Worker is optional in functional tests; the other services are always // needed for a usable in-process cluster. services := []primitives.ServiceName{ @@ -231,7 +232,7 @@ func (c *temporalImpl) Start() error { } for _, serviceName := range services { numHosts := len(c.hostsByProtocolByService[grpcProtocol][serviceName].All) - if numHosts != 1 { + if numHosts != 1 && serviceName != primitives.HistoryService { return fmt.Errorf("onebox requires exactly one %s service node, got %d", serviceName, numHosts) } } @@ -291,23 +292,56 @@ func (c *temporalImpl) Start() error { ) defer cleanupHooks() - server, err := temporal.NewServer(options...) - if err != nil { - return fmt.Errorf("unable to construct temporal server: %w", err) - } - - if err := server.Start(); err != nil { - return fmt.Errorf("unable to start temporal server: %w", err) + defer func() { + if retErr != nil { + for _, server := range c.servers { + retErr = multierr.Append(retErr, server.Stop()) + } + c.servers = nil + } + }() + for index, address := range hostsByService[primitives.HistoryService].All { + serverOptions := options + if index > 0 { + // Additional History graphs share membership and persistence while + // binding their own RPC address. Never expose an arbitrary graph's + // CHASM engine through ChasmContext in this multi-host configuration. + extraConfig := cfg + extraConfig.Persistence = copyPersistenceConfig(cfg.Persistence) + extraConfig.Services = maps.Clone(cfg.Services) + bindIP, port := mustSplitHostPort(address) + extraConfig.Services[string(primitives.HistoryService)] = config.Service{ + RPC: config.RPC{BindOnIP: bindIP, GRPCPort: int(port)}, + } + extraHosts := maps.Clone(hostsByService) + historyHosts := extraHosts[primitives.HistoryService] + historyHosts.Self = address + extraHosts[primitives.HistoryService] = historyHosts + serverOptions = []temporal.ServerOption{ + temporal.WithConfig(&extraConfig), + temporal.ForServices([]string{string(primitives.HistoryService)}), + temporal.WithStaticHosts(extraHosts), + } + serverOptions = append(serverOptions, c.baseServerOptions...) + } + server, err := temporal.NewServer(serverOptions...) + if err != nil { + return fmt.Errorf("unable to construct temporal server: %w", err) + } + c.servers = append(c.servers, server) + if err := server.Start(); err != nil { + return fmt.Errorf("unable to start temporal server: %w", err) + } } - c.server = server return nil } func (c *temporalImpl) Stop() error { var errs []error - if c.server != nil { - errs = append(errs, c.server.Stop()) + for index := len(c.servers) - 1; index >= 0; index-- { + errs = append(errs, c.servers[index].Stop()) } + c.servers = nil errs = append(errs, c.close()...) return multierr.Combine(errs...) } From 304b199edba2b6e29f0d7ad020edf612353a8f0c Mon Sep 17 00:00:00 2001 From: Moe Dashti Date: Fri, 25 Sep 2026 14:04:30 -0700 Subject: [PATCH 2/7] Kept stream delivery off speculative workflow tasks. A discarded speculative task commits no cursor, so the range it was given came back on the next task while the worker had already consumed it. The replay budget is dynamic config now, a consumer that stays over it is terminated with the cause instead of failing the same task forever, and a query only asks History for ranges when the workflow actually holds a cursor. --- api/historyservice/v1/request_response.pb.go | 21 +- chasm/lib/stream/config.go | 45 +++ chasm/lib/workflow/workflow.go | 6 + .../historyservice/v1/request_response.proto | 5 + service/history/api/get_workflow_util.go | 1 + .../api/recordworkflowtaskstarted/api.go | 7 +- .../stream_slices.go | 91 ++++-- .../api/respondworkflowtaskcompleted/api.go | 2 +- service/history/interfaces/mutable_state.go | 5 + .../history/interfaces/mutable_state_mock.go | 14 + .../history/workflow/mutable_state_impl.go | 25 ++ service/matching/matching_engine.go | 11 +- service/matching/matching_engine_test.go | 23 +- tests/stream_consume_test.go | 280 ++++++++++++++++++ tests/stream_consumer_lifecycle_test.go | 38 ++- 15 files changed, 523 insertions(+), 51 deletions(-) diff --git a/api/historyservice/v1/request_response.pb.go b/api/historyservice/v1/request_response.pb.go index d911cf62654..7ec2d430fdd 100644 --- a/api/historyservice/v1/request_response.pb.go +++ b/api/historyservice/v1/request_response.pb.go @@ -676,8 +676,13 @@ type GetMutableStateResponse struct { // Transient or speculative workflow task events which are not yet persisted in the history. // These events should be appended to the history when it is returned to the worker. TransientOrSpeculativeTasks *v110.TransientWorkflowTaskInfo `protobuf:"bytes,26,opt,name=transient_or_speculative_tasks,json=transientOrSpeculativeTasks,proto3" json:"transient_or_speculative_tasks,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Whether this workflow holds a cursor into any stream. Matching builds a + // query task without RecordWorkflowTaskStarted, so it has to ask History for + // the ranges the history records, and almost no workflow has any. This says + // which ones do, so the extra call is only made for those. + ConsumesStreams bool `protobuf:"varint,27,opt,name=consumes_streams,json=consumesStreams,proto3" json:"consumes_streams,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetMutableStateResponse) Reset() { @@ -857,6 +862,13 @@ func (x *GetMutableStateResponse) GetTransientOrSpeculativeTasks() *v110.Transie return nil } +func (x *GetMutableStateResponse) GetConsumesStreams() bool { + if x != nil { + return x.ConsumesStreams + } + return false +} + type PollMutableStateRequest struct { state protoimpl.MessageState `protogen:"open.v1"` NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` @@ -10885,7 +10897,7 @@ const file_temporal_server_api_historyservice_v1_request_response_proto_rawDesc "\x16expected_next_event_id\x18\x03 \x01(\x03R\x13expectedNextEventId\x120\n" + "\x14current_branch_token\x18\x04 \x01(\fR\x12currentBranchToken\x12d\n" + "\x14version_history_item\x18\x05 \x01(\v22.temporal.server.api.history.v1.VersionHistoryItemR\x12versionHistoryItem\x12j\n" + - "\x14versioned_transition\x18\x06 \x01(\v27.temporal.server.api.persistence.v1.VersionedTransitionR\x13versionedTransition:\x1b\x92\xc4\x03\x17*\x15execution.workflow_id\"\xf3\f\n" + + "\x14versioned_transition\x18\x06 \x01(\v27.temporal.server.api.persistence.v1.VersionedTransitionR\x13versionedTransition:\x1b\x92\xc4\x03\x17*\x15execution.workflow_id\"\x9e\r\n" + "\x17GetMutableStateResponse\x12G\n" + "\texecution\x18\x01 \x01(\v2).temporal.api.common.v1.WorkflowExecutionR\texecution\x12I\n" + "\rworkflow_type\x18\x02 \x01(\v2$.temporal.api.common.v1.WorkflowTypeR\fworkflowType\x12\"\n" + @@ -10908,7 +10920,8 @@ const file_temporal_server_api_historyservice_v1_request_response_proto_rawDesc "\x12inherited_build_id\x18\x17 \x01(\tR\x10inheritedBuildId\x12f\n" + "\x12transition_history\x18\x18 \x03(\v27.temporal.server.api.persistence.v1.VersionedTransitionR\x11transitionHistory\x12b\n" + "\x0fversioning_info\x18\x19 \x01(\v29.temporal.api.workflow.v1.WorkflowExecutionVersioningInfoR\x0eversioningInfo\x12~\n" + - "\x1etransient_or_speculative_tasks\x18\x1a \x01(\v29.temporal.server.api.history.v1.TransientWorkflowTaskInfoR\x1btransientOrSpeculativeTasksJ\x04\b\b\x10\tJ\x04\b\t\x10\n" + + "\x1etransient_or_speculative_tasks\x18\x1a \x01(\v29.temporal.server.api.history.v1.TransientWorkflowTaskInfoR\x1btransientOrSpeculativeTasks\x12)\n" + + "\x10consumes_streams\x18\x1b \x01(\bR\x0fconsumesStreamsJ\x04\b\b\x10\tJ\x04\b\t\x10\n" + "J\x04\b\n" + "\x10\vJ\x04\b\f\x10\rJ\x04\b\x0e\x10\x0f\"\xef\x02\n" + "\x17PollMutableStateRequest\x12!\n" + diff --git a/chasm/lib/stream/config.go b/chasm/lib/stream/config.go index f810743bf4f..b1b4315cac3 100644 --- a/chasm/lib/stream/config.go +++ b/chasm/lib/stream/config.go @@ -102,6 +102,19 @@ const ( // lock held, so the count is what bounds the lock hold. MaxSubscriptionsPerWorkflow = 100 + // A cold replay re-reads every range the consumer's completed tasks + // recorded, because History holds offsets and never payloads. That cost + // grows with the workflow's whole life rather than with the task being + // started, so one response has a bound on records, on bytes, and on the + // pages of history walked to find the ranges. + // + // A consumer past any of them cannot be replayed by this path. There is no + // bounded paged re-supply yet, so it is terminated with the cause rather + // than left failing the same task forever. + ReplayMaxRecords = 100_000 + ReplayMaxBytes = 64 << 20 + ReplayMaxPages = 256 + // OwnedStreamsMaxBytesPerWorkflow bounds every stream one execution owns // taken together. The per-stream budget multiplied by the stream count // comes to far more than limit.mutableStateSize.error, so without this an @@ -169,6 +182,23 @@ under limit.mutableStateSize.error, which would otherwise terminate the workflow OwnedStreamMaxItems, `Message budget of a stream a workflow owns. Appends past it are refused.`, ) + ReplayMaxRecordsSetting = dynamicconfig.NewNamespaceIntSetting( + "stream.replayMaxRecords", + ReplayMaxRecords, + `Most stream records one cold replay re-supplies. A consumer whose recorded ranges +come to more than this cannot be replayed and is terminated with the cause.`, + ) + ReplayMaxBytesSetting = dynamicconfig.NewNamespaceIntSetting( + "stream.replayMaxBytes", + ReplayMaxBytes, + `Most stream record bytes one cold replay re-supplies.`, + ) + ReplayMaxPagesSetting = dynamicconfig.NewNamespaceIntSetting( + "stream.replayMaxPages", + ReplayMaxPages, + `Most pages of history one cold replay walks to find the ranges its completed tasks +consumed.`, + ) MaxSubscriptionsPerWorkflowSetting = dynamicconfig.NewNamespaceIntSetting( "stream.maxSubscriptionsPerWorkflow", MaxSubscriptionsPerWorkflow, @@ -209,6 +239,9 @@ type Config struct { // per-stream budget cannot do. OwnedStreamsMaxBytesPerWorkflow dynamicconfig.IntPropertyFnWithNamespaceFilter MaxSubscriptionsPerWorkflow dynamicconfig.IntPropertyFnWithNamespaceFilter + ReplayMaxRecords dynamicconfig.IntPropertyFnWithNamespaceFilter + ReplayMaxBytes dynamicconfig.IntPropertyFnWithNamespaceFilter + ReplayMaxPages dynamicconfig.IntPropertyFnWithNamespaceFilter } func NewConfig(dc *dynamicconfig.Collection) *Config { @@ -228,6 +261,9 @@ func NewConfig(dc *dynamicconfig.Collection) *Config { OwnedStreamsMaxBytesPerWorkflow: OwnedStreamsMaxBytesPerWorkflowSetting.Get(dc), MaxSubscriptionsPerWorkflow: MaxSubscriptionsPerWorkflowSetting.Get(dc), + ReplayMaxRecords: ReplayMaxRecordsSetting.Get(dc), + ReplayMaxBytes: ReplayMaxBytesSetting.Get(dc), + ReplayMaxPages: ReplayMaxPagesSetting.Get(dc), } } @@ -246,6 +282,9 @@ type Limits struct { OwnedStreamsMaxBytesPerWorkflow int MaxSubscriptionsPerWorkflow int + ReplayMaxRecords int + ReplayMaxBytes int + ReplayMaxPages int } // LimitsFor resolves the limits for a namespace. A nil Config, which is what @@ -267,6 +306,9 @@ func (c *Config) LimitsFor(namespaceName string) Limits { OwnedStreamsMaxBytesPerWorkflow: c.OwnedStreamsMaxBytesPerWorkflow(namespaceName), MaxSubscriptionsPerWorkflow: c.MaxSubscriptionsPerWorkflow(namespaceName), + ReplayMaxRecords: c.ReplayMaxRecords(namespaceName), + ReplayMaxBytes: c.ReplayMaxBytes(namespaceName), + ReplayMaxPages: c.ReplayMaxPages(namespaceName), }.withDefaults() } @@ -312,5 +354,8 @@ func (l Limits) withDefaults() Limits { fill(&l.OwnedStreamMaxItems, OwnedStreamMaxItems) fill(&l.OwnedStreamsMaxBytesPerWorkflow, OwnedStreamsMaxBytesPerWorkflow) fill(&l.MaxSubscriptionsPerWorkflow, MaxSubscriptionsPerWorkflow) + fill(&l.ReplayMaxRecords, ReplayMaxRecords) + fill(&l.ReplayMaxBytes, ReplayMaxBytes) + fill(&l.ReplayMaxPages, ReplayMaxPages) return l } diff --git a/chasm/lib/workflow/workflow.go b/chasm/lib/workflow/workflow.go index 3ece05c685c..b86fae1f843 100644 --- a/chasm/lib/workflow/workflow.go +++ b/chasm/lib/workflow/workflow.go @@ -277,6 +277,12 @@ func (w *Workflow) AdvanceKnownHead(mctx chasm.MutableContext, streamID string, return nil } +// HasStreamCursors reports whether this workflow consumes any stream at all, +// which is a different question from whether one is behind. +func (w *Workflow) HasStreamCursors() bool { + return len(w.StreamCursors) > 0 +} + // StreamCursorsBehind reports whether any subscription still has offsets it has // not been given. // diff --git a/proto/internal/temporal/server/api/historyservice/v1/request_response.proto b/proto/internal/temporal/server/api/historyservice/v1/request_response.proto index 40fe5e92ef7..6dbe5ee372e 100644 --- a/proto/internal/temporal/server/api/historyservice/v1/request_response.proto +++ b/proto/internal/temporal/server/api/historyservice/v1/request_response.proto @@ -185,6 +185,11 @@ message GetMutableStateResponse { // Transient or speculative workflow task events which are not yet persisted in the history. // These events should be appended to the history when it is returned to the worker. temporal.server.api.history.v1.TransientWorkflowTaskInfo transient_or_speculative_tasks = 26; + // Whether this workflow holds a cursor into any stream. Matching builds a + // query task without RecordWorkflowTaskStarted, so it has to ask History for + // the ranges the history records, and almost no workflow has any. This says + // which ones do, so the extra call is only made for those. + bool consumes_streams = 27; } message PollMutableStateRequest { diff --git a/service/history/api/get_workflow_util.go b/service/history/api/get_workflow_util.go index 27060b76a5e..9eebbbfbedb 100644 --- a/service/history/api/get_workflow_util.go +++ b/service/history/api/get_workflow_util.go @@ -415,5 +415,6 @@ func MutableStateToGetResponse( TransitionHistory: transitionhistory.CopyVersionedTransitions(mutableState.GetExecutionInfo().TransitionHistory), VersioningInfo: common.CloneProto(mutableState.GetExecutionInfo().VersioningInfo), TransientOrSpeculativeTasks: transientOrSpeculativeTasks, + ConsumesStreams: mutableState.ConsumesStreams(), }, nil } diff --git a/service/history/api/recordworkflowtaskstarted/api.go b/service/history/api/recordworkflowtaskstarted/api.go index 2c096720dc0..777cf5d94cd 100644 --- a/service/history/api/recordworkflowtaskstarted/api.go +++ b/service/history/api/recordworkflowtaskstarted/api.go @@ -110,7 +110,7 @@ func Invoke( // Redelivers whatever range is already staged, so a // duplicate of the same request hands back the same slice. resp.StreamSlices, streamAddresses, err = deliverStreamSlices( - ctx, shardContext, mutableState) + ctx, shardContext, mutableState, workflowTask) if errors.As(err, &streamFailure) { if err := failTaskForStreams(mutableState, workflowTask, streamFailure); err != nil { return nil, err @@ -257,7 +257,7 @@ func Invoke( } resp.StreamSlices, streamAddresses, err = deliverStreamSlices( - ctx, shardContext, mutableState) + ctx, shardContext, mutableState, workflowTask) if errors.As(err, &streamFailure) { if err := failTaskForStreams(mutableState, workflowTask, streamFailure); err != nil { return nil, err @@ -303,7 +303,8 @@ func Invoke( // After the history is attached, because the ranges to re-supply are read // out of the events being sent. - err = attachReplaySlices(ctx, shardContext, workflowKey, streamAddresses, maxHistoryPageSize, resp) + err = attachReplaySlices(ctx, shardContext, workflowKey, namespaceEntry.Name().String(), + streamAddresses, maxHistoryPageSize, resp) if errors.As(err, &streamFailure) { // The task is already started and its lock released, so failing it is // a transaction of its own. diff --git a/service/history/api/recordworkflowtaskstarted/stream_slices.go b/service/history/api/recordworkflowtaskstarted/stream_slices.go index dd5b16980bf..ba94d850770 100644 --- a/service/history/api/recordworkflowtaskstarted/stream_slices.go +++ b/service/history/api/recordworkflowtaskstarted/stream_slices.go @@ -11,7 +11,9 @@ import ( historypb "go.temporal.io/api/history/v1" "go.temporal.io/api/serviceerror" streampb "go.temporal.io/api/stream/v1" + enumsspb "go.temporal.io/server/api/enums/v1" "go.temporal.io/server/api/historyservice/v1" + persistencespb "go.temporal.io/server/api/persistence/v1" "go.temporal.io/server/chasm" "go.temporal.io/server/chasm/lib/stream" chasmworkflow "go.temporal.io/server/chasm/lib/workflow" @@ -56,14 +58,22 @@ func unavailableIfGone(err error, format string, args ...any) error { return err } -// failTaskForStreams records why the task cannot be started and schedules the -// next attempt. The event is what an operator sees; a bare error to matching -// would only make the task come back. +// failTaskForStreams records why the task cannot be started, and either +// schedules the next attempt or ends the workflow. +// +// The event is what an operator sees; a bare error to matching would only make +// the task come back. One retry is worth having, because a shard that was +// moving can serve the range on the next attempt. A second failure with the +// same cause is not a race: the range is gone or the re-supply is over its +// budget, and every further attempt redoes the whole page walk, fails again, +// and grows History until the size limit terminates the workflow for an +// unrelated reason. Terminating here says what actually happened. func failTaskForStreams( ms historyi.MutableState, workflowTask *historyi.WorkflowTaskInfo, cause *rangeUnavailable, ) error { + repeated := lastFailureWasStreamRange(ms) if _, err := ms.AddWorkflowTaskFailedEvent( workflowTask, enumspb.WORKFLOW_TASK_FAILED_CAUSE_STREAM_RANGE_UNAVAILABLE, @@ -78,9 +88,23 @@ func failTaskForStreams( return err } ms.FlushBufferedEvents() + if repeated { + _, err := ms.AddWorkflowExecutionTerminatedEvent( + cause.Error(), nil, consts.IdentityHistoryService, false, nil) + return err + } return workflow.ScheduleWorkflowTask(ms) } +// lastFailureWasStreamRange reports whether the workflow task before this one +// failed for the same reason, which is what tells a retryable hiccup from a +// range that is not coming back. +func lastFailureWasStreamRange(ms historyi.MutableState) bool { + recorded, ok := ms.GetExecutionInfo().GetLastWorkflowTaskFailure().(*persistencespb.WorkflowExecutionInfo_LastWorkflowTaskFailureCause) + return ok && recorded.LastWorkflowTaskFailureCause == + enumspb.WORKFLOW_TASK_FAILED_CAUSE_STREAM_RANGE_UNAVAILABLE +} + // streamOrigin says where a subscribed stream lives, which decides how its // payload is read: an external stream from its own execution, an owned one // from the consumer's. @@ -143,8 +167,14 @@ func deliveryFrontier( } field, ok := wf.Streams[name] if !ok { - return 0, serviceerror.NewFailedPreconditionf( - "workflow consumes stream %q, which it neither owns nor subscribed to externally", name) + // Reported as an unavailable range rather than a bare error, so the + // task fails once with a cause an operator can read instead of coming + // back from matching forever. A standby rebuilt by event-based + // replication lands here: it applies consumed ranges into owned + // cursors, and the stream itself does not replicate that way. + return 0, unavailablef( + "workflow consumes stream %q, which it neither owns nor subscribed to externally", + name) } state, err := field.Get(chasmCtx).Snapshot(chasmCtx, struct{}{}) if err != nil { @@ -236,8 +266,9 @@ func DeliverStreamSlices( ctx context.Context, shardContext historyi.ShardContext, ms historyi.MutableState, + workflowTask *historyi.WorkflowTaskInfo, ) ([]*streampb.StreamSlice, error) { - live, _, err := deliverStreamSlices(ctx, shardContext, ms) + live, _, err := deliverStreamSlices(ctx, shardContext, ms, workflowTask) return live, err } @@ -253,7 +284,17 @@ func deliverStreamSlices( ctx context.Context, shardContext historyi.ShardContext, ms historyi.MutableState, + workflowTask *historyi.WorkflowTaskInfo, ) ([]*streampb.StreamSlice, map[string]streamOrigin, error) { + // A speculative task may be thrown away, and a discarded one writes no + // completed event, so nothing would commit the cursor. The range would then + // be handed out again on the next task while the worker's in-memory + // workflow had already consumed it, and live execution would see the + // records twice where replay sees them once. A workflow with records + // waiting gets a normal task of its own, which is where they belong. + if workflowTask != nil && workflowTask.Type == enumsspb.WORKFLOW_TASK_TYPE_SPECULATIVE { + return nil, nil, nil + } if !ms.HasChasmWorkflowComponent() { return nil, nil, nil } @@ -347,19 +388,6 @@ func deliverStreamSlices( return slicesOut, addresses, nil } -// Bounds on one cold replay's re-supply. History holds offsets and not payloads, -// so replaying a consumer means re-reading every range its completed tasks -// recorded, and that grows with the workflow's whole life rather than with the -// task being started. A consumer past these bounds cannot be replayed by this -// path; its task is failed with a cause that says so rather than retried. -const ( - maxReplayRecords = 100_000 - maxReplayBytes = 64 << 20 - // Pages of history walked to find the recorded ranges. Empty ranges cost - // nothing to attach but each page is a store read under a request deadline. - maxReplayPages = 256 -) - // ownedRange names a range of a stream the consumer owns. type ownedRange struct { name string @@ -405,6 +433,7 @@ type replaySupply struct { ctx context.Context consumer definition.WorkflowKey addresses map[string]streamOrigin + limits stream.Limits records int bytes int @@ -432,6 +461,7 @@ func attachReplaySlices( ctx context.Context, shardContext historyi.ShardContext, consumer definition.WorkflowKey, + namespaceName string, addresses map[string]streamOrigin, pageSize int32, resp *historyservice.RecordWorkflowTaskStartedResponseWithRawHistory, @@ -447,6 +477,13 @@ func attachReplaySlices( // nothing to replay. Its history begins at the previous task's completion, // and that event carries the range that task already consumed, so // re-supplying it here would hand the workflow the same records twice. + // + // A worker can hold a sticky queue and still have evicted the workflow, and + // the recovery from that is the SDK's: it fails the task so the next one is + // dispatched on the normal queue with full history, which comes back + // through here with the slices attached. An SDK that instead refetches the + // history through GetWorkflowExecutionHistory gets no slices, because that + // RPC has nowhere to carry them. if resp.GetStickyExecutionEnabled() { return nil } @@ -455,10 +492,12 @@ func attachReplaySlices( if err != nil { return err } + limits := shardContext.GetConfig().Stream.LimitsFor(namespaceName) supply := &replaySupply{ ctx: ctx, consumer: consumer, addresses: addresses, + limits: limits, reached: make(map[string]int64, len(addresses)), } if err := supply.collect(events); err != nil { @@ -469,10 +508,10 @@ func attachReplaySlices( token := resp.GetNextPageToken() for len(token) > 0 { pages++ - if pages > maxReplayPages { + if pages > limits.ReplayMaxPages { return unavailablef( "replaying workflow %q needs more than %d pages of history to find the stream "+ - "ranges its tasks consumed", consumer.GetWorkflowID(), maxReplayPages) + "ranges its tasks consumed", consumer.GetWorkflowID(), limits.ReplayMaxPages) } continuation, err := api.DeserializeHistoryToken(token) if err != nil { @@ -554,20 +593,22 @@ func ReplaySlicesForQuery( } nextEventID := ms.GetNextEventID() consumer := ms.GetWorkflowKey() + limits := shardContext.GetConfig().Stream.LimitsFor(ms.GetNamespaceEntry().Name().String()) lease.GetReleaseFn()(nil) supply := &replaySupply{ ctx: ctx, consumer: consumer, addresses: addresses, + limits: limits, reached: make(map[string]int64, len(addresses)), } var token []byte for pages := 1; ; pages++ { - if pages > maxReplayPages { + if pages > limits.ReplayMaxPages { return nil, unavailablef( "replaying workflow %q needs more than %d pages of history to find the stream "+ - "ranges its tasks consumed", consumer.GetWorkflowID(), maxReplayPages) + "ranges its tasks consumed", consumer.GetWorkflowID(), limits.ReplayMaxPages) } blobs, _, next, err := persistence.ReadFullPageRawEvents( ctx, shardContext.GetExecutionManager(), &persistence.ReadHistoryBranchRequest{ @@ -690,11 +731,11 @@ func (s *replaySupply) recordsFor( // Bounded because every prior task's range is re-read into one response, so // a long-lived consumer's cold replay grows with its whole history. Refused // rather than trimmed: a short re-supply is what replay cannot survive. - if s.records > maxReplayRecords || s.bytes > maxReplayBytes { + if s.records > s.limits.ReplayMaxRecords || s.bytes > s.limits.ReplayMaxBytes { return nil, "", unavailablef( "replaying workflow %q needs more than %d records or %d bytes of stream history "+ "to re-supply; the consumed ranges cannot be re-delivered in one response", - s.consumer.GetWorkflowID(), maxReplayRecords, maxReplayBytes) + s.consumer.GetWorkflowID(), s.limits.ReplayMaxRecords, s.limits.ReplayMaxBytes) } return records, ownerRunID, nil } diff --git a/service/history/api/respondworkflowtaskcompleted/api.go b/service/history/api/respondworkflowtaskcompleted/api.go index 46386b602d6..49492c99b72 100644 --- a/service/history/api/respondworkflowtaskcompleted/api.go +++ b/service/history/api/respondworkflowtaskcompleted/api.go @@ -836,7 +836,7 @@ func (handler *WorkflowTaskCompletedHandler) Invoke( // The poll path delivers from its own handler, so this one has to ask // as well or a subscribed workflow gets an inline task with no data. resp.StartedResponse.StreamSlices, err = recordworkflowtaskstarted.DeliverStreamSlices( - ctx, handler.shardContext, ms) + ctx, handler.shardContext, ms, newWorkflowTask) if err != nil { return nil, err } diff --git a/service/history/interfaces/mutable_state.go b/service/history/interfaces/mutable_state.go index b806c4097d0..9cb773ca0bd 100644 --- a/service/history/interfaces/mutable_state.go +++ b/service/history/interfaces/mutable_state.go @@ -371,6 +371,11 @@ type ( // predating CHASM reports the workflow archetype while carrying a tree // that holds no components. HasChasmWorkflowComponent() bool + // ConsumesStreams reports whether this workflow holds a cursor into any + // stream, which is what decides whether a query task has anything to + // re-supply. + ConsumesStreams() bool + // HasPendingStreamData reports whether a stream subscription still has // offsets to deliver, which is the only case where stream traffic // schedules a workflow task. diff --git a/service/history/interfaces/mutable_state_mock.go b/service/history/interfaces/mutable_state_mock.go index 4cf77df6e5d..56869c93e87 100644 --- a/service/history/interfaces/mutable_state_mock.go +++ b/service/history/interfaces/mutable_state_mock.go @@ -3094,6 +3094,20 @@ func (mr *MockMutableStateMockRecorder) HasParentExecution() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HasParentExecution", reflect.TypeOf((*MockMutableState)(nil).HasParentExecution)) } +// ConsumesStreams mocks base method. +func (m *MockMutableState) ConsumesStreams() bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ConsumesStreams") + ret0, _ := ret[0].(bool) + return ret0 +} + +// ConsumesStreams indicates an expected call of ConsumesStreams. +func (mr *MockMutableStateMockRecorder) ConsumesStreams() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ConsumesStreams", reflect.TypeOf((*MockMutableState)(nil).ConsumesStreams)) +} + // HasPendingStreamData mocks base method. func (m *MockMutableState) HasPendingStreamData() bool { m.ctrl.T.Helper() diff --git a/service/history/workflow/mutable_state_impl.go b/service/history/workflow/mutable_state_impl.go index e297187ad89..57edc774db3 100644 --- a/service/history/workflow/mutable_state_impl.go +++ b/service/history/workflow/mutable_state_impl.go @@ -756,6 +756,31 @@ func (ms *MutableStateImpl) HasPendingStreamData() bool { return wf.StreamCursorsBehind(chasmCtx) } +// ConsumesStreams reports whether this workflow holds a cursor into any +// stream. +// +// Matching builds a query task without RecordWorkflowTaskStarted, so it has to +// ask History separately for the ranges to re-supply, and that call takes a +// workflow lease. Almost no workflow consumes a stream, so this rides the +// mutable state matching already fetched and keeps the call off every other +// query. +func (ms *MutableStateImpl) ConsumesStreams() bool { + node, ok := ms.chasmTree.(*chasm.Node) + if !ok { + return false + } + chasmCtx := chasm.NewContext(context.Background(), node) + rootComponent, err := node.ComponentByPath(chasmCtx, nil) + if err != nil { + return false + } + wf, ok := rootComponent.(*chasmworkflow.Workflow) + if !ok { + return false + } + return wf.HasStreamCursors() +} + func (ms *MutableStateImpl) HasChasmWorkflowComponent() bool { node, ok := ms.chasmTree.(*chasm.Node) if !ok { diff --git a/service/matching/matching_engine.go b/service/matching/matching_engine.go index b67e036559b..7ed7724ffc3 100644 --- a/service/matching/matching_engine.go +++ b/service/matching/matching_engine.go @@ -759,7 +759,8 @@ pollLoop: // re-supplied. Read the other way round a task could complete in // between and the worker would see a recorded range with no bytes. streamSlices, err := e.getStreamSlicesForQueryTask( - ctx, req.GetNamespaceId(), task, isStickyEnabled) + ctx, req.GetNamespaceId(), task, isStickyEnabled, + mutableStateResp.GetConsumesStreams()) if err != nil { _ = e.deliverQueryResult(task.query.taskID, &queryResult{internalError: err}) return emptyPollWorkflowTaskQueueResponse, nil @@ -882,13 +883,19 @@ pollLoop: // delivery that attaches those ranges to an ordinary task never runs for it. // Only a non-sticky query needs them: a sticky one goes to a worker that still // holds the execution and has nothing to replay. +// +// Gated on what the mutable state already fetched says. The call takes a +// workflow lease on the history side, and almost no workflow consumes a +// stream, so without the gate every query on every workflow would pay for it +// and inherit a new way to fail. func (e *matchingEngineImpl) getStreamSlicesForQueryTask( ctx context.Context, namespaceID string, task *internalTask, isStickyEnabled bool, + consumesStreams bool, ) ([]*streampb.StreamSlice, error) { - if isStickyEnabled { + if isStickyEnabled || !consumesStreams { return nil, nil } resp, err := e.historyClient.GetStreamReplaySlices(ctx, diff --git a/service/matching/matching_engine_test.go b/service/matching/matching_engine_test.go index 69163759c38..b07407e890b 100644 --- a/service/matching/matching_engine_test.go +++ b/service/matching/matching_engine_test.go @@ -6196,7 +6196,8 @@ func TestGetStreamSlicesForQueryTask(t *testing.T) { mockHistoryClient := historyservicemock.NewMockHistoryServiceClient(ctrl) engine := &matchingEngineImpl{historyClient: mockHistoryClient, logger: log.NewNoopLogger()} - slices, err := engine.getStreamSlicesForQueryTask(context.Background(), nsID.String(), task, true) + slices, err := engine.getStreamSlicesForQueryTask( + context.Background(), nsID.String(), task, true, true) require.NoError(t, err) require.Empty(t, slices) }) @@ -6214,12 +6215,27 @@ func TestGetStreamSlicesForQueryTask(t *testing.T) { engine := &matchingEngineImpl{historyClient: mockHistoryClient, logger: log.NewNoopLogger()} slices, err := engine.getStreamSlicesForQueryTask( - context.Background(), nsID.String(), task, false) + context.Background(), nsID.String(), task, false, true) require.NoError(t, err) require.Len(t, slices, 1) require.Equal(t, int64(4), slices[0].GetWorkflowTaskCompletedEventId()) }) + // Almost no workflow consumes a stream, and the call takes a workflow lease + // on the history side before it discovers that. The mutable state matching + // already fetched says which ones do. + t.Run("a workflow that consumes nothing asks nothing", func(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + mockHistoryClient := historyservicemock.NewMockHistoryServiceClient(ctrl) + engine := &matchingEngineImpl{historyClient: mockHistoryClient, logger: log.NewNoopLogger()} + + slices, err := engine.getStreamSlicesForQueryTask( + context.Background(), nsID.String(), task, false, false) + require.NoError(t, err) + require.Empty(t, slices) + }) + t.Run("a refusal fails the query", func(t *testing.T) { t.Parallel() ctrl := gomock.NewController(t) @@ -6228,7 +6244,8 @@ func TestGetStreamSlicesForQueryTask(t *testing.T) { nil, serviceerror.NewFailedPrecondition("stream no longer holds the range")).Times(1) engine := &matchingEngineImpl{historyClient: mockHistoryClient, logger: log.NewNoopLogger()} - _, err := engine.getStreamSlicesForQueryTask(context.Background(), nsID.String(), task, false) + _, err := engine.getStreamSlicesForQueryTask( + context.Background(), nsID.String(), task, false, true) require.ErrorContains(t, err, "no longer holds") }) } diff --git a/tests/stream_consume_test.go b/tests/stream_consume_test.go index 4b372a0bbc4..ff8cbce7b4f 100644 --- a/tests/stream_consume_test.go +++ b/tests/stream_consume_test.go @@ -10,14 +10,18 @@ import ( commandpb "go.temporal.io/api/command/v1" commonpb "go.temporal.io/api/common/v1" enumspb "go.temporal.io/api/enums/v1" + failurepb "go.temporal.io/api/failure/v1" historypb "go.temporal.io/api/history/v1" + protocolpb "go.temporal.io/api/protocol/v1" streampb "go.temporal.io/api/stream/v1" taskqueuepb "go.temporal.io/api/taskqueue/v1" + updatepb "go.temporal.io/api/update/v1" "go.temporal.io/api/workflowservice/v1" streamlib "go.temporal.io/server/chasm/lib/stream/gen/streampb/v1" chasmworkflow "go.temporal.io/server/chasm/lib/workflow" "go.temporal.io/server/common/testing/await" "go.temporal.io/server/tests/testcore" + "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/durationpb" ) @@ -1111,3 +1115,279 @@ func TestMessagesAppendedWithoutAKindReachTheWorkflow(t *testing.T) { require.Equal(t, []string{"no-kind-1", "no-kind-2"}, apiBodies(got.GetRecords()), "the slice must carry the messages, not just advance past them") } + +// A speculative workflow task must not consume a range. +// +// It can be thrown away, and a discarded one writes no completed event, so +// nothing commits the cursor. Handing it the range would leave the staged +// range in place: the worker's in-memory workflow has already consumed those +// records, and the next task would deliver them again, so live execution would +// see the batch twice where replay sees it once. +func TestSpeculativeTaskConsumesNoStreamRange(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + streamID := "speculative-stream-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + + id := "stream-wf-speculative-" + uuid.NewString() + tq := &taskqueuepb.TaskQueue{Name: id + "-tq", Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + + _, err := env.FrontendClient().StartWorkflowExecution( + s.ctx(), + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: s.ns, + WorkflowId: id, + WorkflowType: &commonpb.WorkflowType{Name: "stream-consumer"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + Identity: "tester", + }, + ) + require.NoError(t, err) + + var delivered [][]*streampb.StreamSlice + var sawUpdate []bool + + //nolint:staticcheck // SA1019: consistent with the other stream tests. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + delivered = append(delivered, resp.GetStreamSlices()) + sawUpdate = append(sawUpdate, len(resp.GetMessages()) > 0) + return nil, nil + }, + // Every update is rejected, which is what makes the speculative task + // discardable: it writes no events at all. + MessageHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*protocolpb.Message, error) { + var out []*protocolpb.Message + for _, m := range resp.GetMessages() { + request := &updatepb.Request{} + require.NoError(t, m.GetBody().UnmarshalTo(request)) + rejection, err := anypb.New(&updatepb.Rejection{ + RejectedRequestMessageId: m.GetId(), + RejectedRequest: request, + Failure: &failurepb.Failure{Message: "not this run"}, + }) + require.NoError(t, err) + out = append(out, &protocolpb.Message{ + Id: uuid.NewString(), + ProtocolInstanceId: request.GetMeta().GetUpdateId(), + SequencingId: nil, + Body: rejection, + }) + } + return out, nil + }, + Logger: env.Logger, + T: t, + } + + // Drain the first task and subscribe, so the cursor is caught up and the + // workflow owes no task. + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: id, StreamId: streamID, StartOffset: 0, + }, + }) + require.NoError(t, err) + + // An update with no task pending gets a speculative one. + updateDone := make(chan struct{}) + go func() { + defer close(updateDone) + _, _ = env.FrontendClient().UpdateWorkflowExecution(context.Background(), + &workflowservice.UpdateWorkflowExecutionRequest{ + Namespace: s.ns, + WorkflowExecution: &commonpb.WorkflowExecution{WorkflowId: id}, + Request: &updatepb.Request{ + Meta: &updatepb.Meta{UpdateId: uuid.NewString(), Identity: "tester"}, + Input: &updatepb.Input{Name: "rejected"}, + }, + WaitPolicy: &updatepb.WaitPolicy{ + LifecycleStage: enumspb.UPDATE_WORKFLOW_EXECUTION_LIFECYCLE_STAGE_ACCEPTED, + }, + }) + }() + + // Records land while the speculative task is scheduled, which is the one + // window where delivery could hand them to it. + _, err = s.client.AddMessages(s.ctx(), &streamlib.AddMessagesRequest{ + FrontendRequest: &streamlib.AddMessagesInput{ + Namespace: s.ns, StreamId: streamID, + Records: []*streamlib.StreamRecord{ + {Body: &commonpb.Payload{Data: []byte("m0")}, Kind: streampb.STREAM_RECORD_KIND_DATA}, + }, + }, + }) + require.NoError(t, err) + + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + <-updateDone + + // Whichever task carried the update carried no records. + require.Contains(t, sawUpdate, true, "the update has to have reached a workflow task") + for i, sawIt := range sawUpdate { + if !sawIt { + continue + } + for _, slice := range delivered[i] { + require.Empty(t, slice.GetRecords(), + "a task carrying an update may be discarded, so it consumes nothing") + } + } + + // The record still arrives, exactly once, on a task that can commit it. + await.RequireTruef(t, func() bool { + _, err := poller.PollAndProcessWorkflowTask() + if err != nil { + return false + } + for _, slice := range delivered[len(delivered)-1] { + if len(slice.GetRecords()) == 1 && + string(slice.GetRecords()[0].GetBody().GetData()) == "m0" { + return true + } + } + return false + }, 20*time.Second, 200*time.Millisecond, "the record has to reach a task that commits it") + + // And it is not handed out a second time. + events := env.GetHistory(s.ns, &commonpb.WorkflowExecution{WorkflowId: id}) + consumed := 0 + for _, e := range events { + for _, c := range e.GetWorkflowTaskCompletedEventAttributes().GetConsumedStreamRanges() { + consumed += int(c.GetToOffset() - c.GetFromOffset()) + } + } + require.Equal(t, 1, consumed, "the range is recorded once") +} + +// A subscription to a stream the workflow owns ends at a continue-as-new. +// +// The stream lives in the execution, and the execution does not survive the +// run transition, so the successor gets a new stream of the same name starting +// at offset zero. Characterized rather than fixed: carrying the stream itself +// is a design decision, and until it is made this is what a reader following +// the workflow id sees. +func TestOwnedStreamSubscriptionEndsAtContinueAsNew(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + + id := "stream-wf-owned-can-" + uuid.NewString() + tq := &taskqueuepb.TaskQueue{Name: id + "-tq", Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + + _, err := env.FrontendClient().StartWorkflowExecution( + s.ctx(), + &workflowservice.StartWorkflowExecutionRequest{ + RequestId: uuid.NewString(), + Namespace: s.ns, + WorkflowId: id, + WorkflowType: &commonpb.WorkflowType{Name: "stream-consumer"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + Identity: "tester", + }, + ) + require.NoError(t, err) + + var delivered [][]*streampb.StreamSlice + task := 0 + + //nolint:staticcheck // SA1019: consistent with the other stream tests. + poller := &testcore.TaskPoller{ + Client: env.FrontendClient(), + Namespace: s.ns, + TaskQueue: tq, + Identity: "tester", + WorkflowTaskHandler: func( + resp *workflowservice.PollWorkflowTaskQueueResponse, + ) ([]*commandpb.Command, error) { + delivered = append(delivered, resp.GetStreamSlices()) + task++ + if task == 2 { + return []*commandpb.Command{{ + CommandType: enumspb.COMMAND_TYPE_CONTINUE_AS_NEW_WORKFLOW_EXECUTION, + Attributes: &commandpb.Command_ContinueAsNewWorkflowExecutionCommandAttributes{ + ContinueAsNewWorkflowExecutionCommandAttributes: &commandpb. + ContinueAsNewWorkflowExecutionCommandAttributes{ + WorkflowType: &commonpb.WorkflowType{Name: "stream-consumer"}, + TaskQueue: tq, + WorkflowRunTimeout: durationpb.New(100 * time.Second), + WorkflowTaskTimeout: durationpb.New(10 * time.Second), + }, + }, + }}, nil + } + return nil, nil + }, + Logger: env.Logger, + T: t, + } + + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + + // Subscribed to a stream of its own, by name, with no standalone stream in + // the picture. + _, err = s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ + FrontendRequest: &streamlib.SubscribeWorkflowInput{ + Namespace: s.ns, WorkflowId: id, StreamName: "output", StartOffset: 0, + }, + }) + require.NoError(t, err) + + _, err = s.client.AddWorkflowMessages(s.ctx(), &streamlib.AddWorkflowMessagesRequest{ + FrontendRequest: &streamlib.AddWorkflowMessagesInput{ + Namespace: s.ns, WorkflowId: id, StreamName: "output", + Records: []*streamlib.StreamRecord{ + {Body: &commonpb.Payload{Data: []byte("before-can")}, Kind: streampb.STREAM_RECORD_KIND_DATA}, + }, + }, + }) + require.NoError(t, err) + + // Task 2 consumes it and continues as new. + _, err = poller.PollAndProcessWorkflowTask() + require.NoError(t, err) + consumed := currentSlice(t, delivered[1]) + require.Equal(t, int64(1), consumed.GetToOffset()) + + // The successor holds no cursor, so a write to its stream of the same name + // starts a new offset space and reaches no subscription. + _, err = s.client.AddWorkflowMessages(s.ctx(), &streamlib.AddWorkflowMessagesRequest{ + FrontendRequest: &streamlib.AddWorkflowMessagesInput{ + Namespace: s.ns, WorkflowId: id, StreamName: "output", + Records: []*streamlib.StreamRecord{ + {Body: &commonpb.Payload{Data: []byte("after-can")}, Kind: streampb.STREAM_RECORD_KIND_DATA}, + }, + }, + }) + require.NoError(t, err) + + read, err := s.client.PollWorkflowMessages(s.ctx(), &streamlib.PollWorkflowMessagesRequest{ + FrontendRequest: &streamlib.PollWorkflowMessagesInput{ + Namespace: s.ns, WorkflowId: id, StreamName: "output", FromOffset: 0, MaxMessages: 10, + }, + }) + require.NoError(t, err) + records := read.GetFrontendResponse().GetRecords() + require.Len(t, records, 1, "the successor's stream is a new one") + require.Equal(t, "after-can", string(records[0].GetBody().GetData())) + require.Equal(t, int64(0), records[0].GetOffset(), + "the offset space restarts, so a reader following the workflow id sees it rewind") +} diff --git a/tests/stream_consumer_lifecycle_test.go b/tests/stream_consumer_lifecycle_test.go index aa7a27704e0..8ae46278c90 100644 --- a/tests/stream_consumer_lifecycle_test.go +++ b/tests/stream_consumer_lifecycle_test.go @@ -91,9 +91,9 @@ func subscribeConsumeAndComplete( } // A consumer that completed can never replay, so the floor it held is a leak. -// The stream learns a consumer is gone when it next tries to tell it the -// frontier moved, and releases the pin then. -func TestACompletedConsumerReleasesItsFloor(t *testing.T) { +// An append is what makes the stream go and ask whether its consumers are +// still there, and it releases the pin on the answer. +func TestACompletedConsumerReleasesItsFloorOnTheNextAppend(t *testing.T) { env := testcore.NewEnv(t) s := newStreamTestEnvFrom(t, env) streamID := "released-stream-" + uuid.NewString() @@ -101,16 +101,7 @@ func TestACompletedConsumerReleasesItsFloor(t *testing.T) { subscribeConsumeAndComplete(t, s, streamID, "stream-wf-released-") - _, err := s.client.TruncateStream(s.ctx(), &streamlib.TruncateStreamRequest{ - FrontendRequest: &streamlib.TruncateStreamInput{ - Namespace: s.ns, StreamId: streamID, NewBaseOffset: 2, - }, - }) - require.ErrorContains(t, err, "still depends on offset 0", - "the pin holds until the stream finds out") - - // The append is what makes the stream go and ask. - _, err = s.client.AddMessages(s.ctx(), &streamlib.AddMessagesRequest{ + _, err := s.client.AddMessages(s.ctx(), &streamlib.AddMessagesRequest{ FrontendRequest: &streamlib.AddMessagesInput{ Namespace: s.ns, StreamId: streamID, Records: streamMsgs("tokens", "three"), }, @@ -128,6 +119,27 @@ func TestACompletedConsumerReleasesItsFloor(t *testing.T) { require.NoError(t, err, "nothing holds the floor once the consumer is gone") } +// A stream nobody appends to any more never asks, so a pin left by a finished +// run would hold its records for good. The truncate that the pin refuses is +// the other place that can find out, so it probes the runs holding it and +// tries again. +func TestARefusedTruncateProbesThePinsItWasRefusedFor(t *testing.T) { + env := testcore.NewEnv(t) + s := newStreamTestEnvFrom(t, env) + streamID := "probed-stream-" + uuid.NewString() + s.create(s.ctx(), t, streamID) + + subscribeConsumeAndComplete(t, s, streamID, "stream-wf-probed-") + + _, err := s.client.TruncateStream(s.ctx(), &streamlib.TruncateStreamRequest{ + FrontendRequest: &streamlib.TruncateStreamInput{ + Namespace: s.ns, StreamId: streamID, NewBaseOffset: 2, + }, + }) + require.NoError(t, err, "the probe found the run finished, so nothing holds the floor") + require.Empty(t, describeStream(t, s, streamID).GetConsumers()) +} + // A new run of the same workflow id is a new consumer. It subscribes at its // own offset and takes over the pin, rather than inheriting a floor from a run // that finished, which could be below the stream's base and refuse it. From cea6ad4d5aa67bd79eef5d412572ddcf2ddadf5c Mon Sep 17 00:00:00 2001 From: Moe Dashti Date: Fri, 25 Sep 2026 14:33:17 -0700 Subject: [PATCH 3/7] Bounded a task's routed stream reads by the shared budget. A workflow may consume as many streams as the subscription limit allows, and the execution's lock is held across every read. --- .../history/api/recordworkflowtaskstarted/stream_slices.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/service/history/api/recordworkflowtaskstarted/stream_slices.go b/service/history/api/recordworkflowtaskstarted/stream_slices.go index ba94d850770..d5a27a6b9fc 100644 --- a/service/history/api/recordworkflowtaskstarted/stream_slices.go +++ b/service/history/api/recordworkflowtaskstarted/stream_slices.go @@ -324,6 +324,12 @@ func deliverStreamSlices( maxItems := limits.MaxConsumeItemsPerTask consumer := ms.GetWorkflowKey() + // One budget over every routed read this task makes, since a workflow may + // consume as many streams as the subscription limit allows and the lock is + // held throughout. + ctx, cancelBudget := WithRoutedBudget(ctx) + defer cancelBudget() + slicesOut := make([]*streampb.StreamSlice, 0, len(names)) addresses := make(map[string]streamOrigin, len(names)) for _, name := range names { From 6dfe799b5e7cf3860a259ee0c2c564a6b3663265 Mon Sep 17 00:00:00 2001 From: Moe Dashti Date: Fri, 25 Sep 2026 16:23:45 -0700 Subject: [PATCH 4/7] Carried the stream field rename into the delivery tests. The subscribe command names a stream by name or by id, and an unnumbered record no longer rides a sentinel. --- tests/stream_consume_test.go | 8 ++++---- tests/stream_rejection_test.go | 4 ++-- tests/stream_routing_cross_host_test.go | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/stream_consume_test.go b/tests/stream_consume_test.go index ff8cbce7b4f..c163fc919f9 100644 --- a/tests/stream_consume_test.go +++ b/tests/stream_consume_test.go @@ -821,8 +821,8 @@ func TestWorkflowSubscribesToAStreamItself(t *testing.T) { CommandType: enumspb.COMMAND_TYPE_SUBSCRIBE_STREAM, Attributes: &commandpb.Command_SubscribeStreamCommandAttributes{ SubscribeStreamCommandAttributes: &commandpb.SubscribeStreamCommandAttributes{ - StreamId: streamID, - StartOffset: 0, + StreamNameOrId: streamID, + StartOffset: 0, }, }, }}, nil @@ -922,7 +922,7 @@ func TestResubscribingStillWritesItsEvent(t *testing.T) { CommandType: enumspb.COMMAND_TYPE_SUBSCRIBE_STREAM, Attributes: &commandpb.Command_SubscribeStreamCommandAttributes{ SubscribeStreamCommandAttributes: &commandpb.SubscribeStreamCommandAttributes{ - StreamId: streamID, StartOffset: 0, + StreamNameOrId: streamID, StartOffset: 0, }, }, }} @@ -1022,7 +1022,7 @@ func TestStreamSubscribeEventKeepsCommandOrder(t *testing.T) { CommandType: enumspb.COMMAND_TYPE_SUBSCRIBE_STREAM, Attributes: &commandpb.Command_SubscribeStreamCommandAttributes{ SubscribeStreamCommandAttributes: &commandpb.SubscribeStreamCommandAttributes{ - StreamId: streamID, StartOffset: 0, + StreamNameOrId: streamID, StartOffset: 0, }, }, }, diff --git a/tests/stream_rejection_test.go b/tests/stream_rejection_test.go index be463629351..6e3a09e5af1 100644 --- a/tests/stream_rejection_test.go +++ b/tests/stream_rejection_test.go @@ -132,7 +132,7 @@ func TestSubscribeToAnUnwrittenNameCreatesTheOwnedStream(t *testing.T) { }, { Kind: streampb.STREAM_RECORD_KIND_FINISH, Topic: name, - ProducerId: "model", Attempt: 2, Sequence: -1, + ProducerId: "model", Attempt: 2, Sequence: 1, }, }, }, @@ -156,7 +156,7 @@ func TestSubscribeToAnUnwrittenNameCreatesTheOwnedStream(t *testing.T) { require.Equal(t, streampb.STREAM_RECORD_KIND_FINISH, records[1].GetKind(), "a finish record is delivered like any other") require.Equal(t, "model", records[1].GetProducerId()) - require.Equal(t, int64(-1), records[1].GetSequence()) + require.Equal(t, int64(1), records[1].GetSequence()) } // The guarantee the design is sold on: a publish commits with the workflow diff --git a/tests/stream_routing_cross_host_test.go b/tests/stream_routing_cross_host_test.go index f2bf31a3ee4..2845269e2c7 100644 --- a/tests/stream_routing_cross_host_test.go +++ b/tests/stream_routing_cross_host_test.go @@ -219,7 +219,7 @@ func subscribeCommand(streamID string) []*commandpb.Command { CommandType: enumspb.COMMAND_TYPE_SUBSCRIBE_STREAM, Attributes: &commandpb.Command_SubscribeStreamCommandAttributes{ SubscribeStreamCommandAttributes: &commandpb.SubscribeStreamCommandAttributes{ - StreamId: streamID, StartOffset: 0, + StreamNameOrId: streamID, StartOffset: 0, }, }, }} From ca22c359fb702da25ed2be1bd4f731fe41b08d31 Mon Sep 17 00:00:00 2001 From: Moe Dashti Date: Fri, 25 Sep 2026 16:54:24 -0700 Subject: [PATCH 5/7] Regenerated the mutable state mock with mockgen. The ConsumesStreams entry had been hand-placed out of alphabetical order, so a later mockgen run would have rewritten it. --- .../history/interfaces/mutable_state_mock.go | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/service/history/interfaces/mutable_state_mock.go b/service/history/interfaces/mutable_state_mock.go index 56869c93e87..25008edd61f 100644 --- a/service/history/interfaces/mutable_state_mock.go +++ b/service/history/interfaces/mutable_state_mock.go @@ -1894,6 +1894,20 @@ func (mr *MockMutableStateMockRecorder) CloseTransactionAsSnapshot(ctx, transact return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CloseTransactionAsSnapshot", reflect.TypeOf((*MockMutableState)(nil).CloseTransactionAsSnapshot), ctx, transactionPolicy) } +// ConsumesStreams mocks base method. +func (m *MockMutableState) ConsumesStreams() bool { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ConsumesStreams") + ret0, _ := ret[0].(bool) + return ret0 +} + +// ConsumesStreams indicates an expected call of ConsumesStreams. +func (mr *MockMutableStateMockRecorder) ConsumesStreams() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ConsumesStreams", reflect.TypeOf((*MockMutableState)(nil).ConsumesStreams)) +} + // ContinueAsNewMinBackoff mocks base method. func (m *MockMutableState) ContinueAsNewMinBackoff(backoffDuration *durationpb.Duration) *durationpb.Duration { m.ctrl.T.Helper() @@ -3094,20 +3108,6 @@ func (mr *MockMutableStateMockRecorder) HasParentExecution() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HasParentExecution", reflect.TypeOf((*MockMutableState)(nil).HasParentExecution)) } -// ConsumesStreams mocks base method. -func (m *MockMutableState) ConsumesStreams() bool { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ConsumesStreams") - ret0, _ := ret[0].(bool) - return ret0 -} - -// ConsumesStreams indicates an expected call of ConsumesStreams. -func (mr *MockMutableStateMockRecorder) ConsumesStreams() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ConsumesStreams", reflect.TypeOf((*MockMutableState)(nil).ConsumesStreams)) -} - // HasPendingStreamData mocks base method. func (m *MockMutableState) HasPendingStreamData() bool { m.ctrl.T.Helper() From 2377b090b905f3f306430e4eece43ae4ffab12c5 Mon Sep 17 00:00:00 2001 From: Moe Dashti Date: Fri, 25 Sep 2026 17:00:06 -0700 Subject: [PATCH 6/7] Took the slice reader and onebox to the Go 1.27 shapes. Main now builds under Go 1.27, where go fix rewrites errors.As and reverse index loops, so make fmt was left dirty on these two files. --- .../history/api/recordworkflowtaskstarted/stream_slices.go | 3 +-- tests/testcore/onebox.go | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/service/history/api/recordworkflowtaskstarted/stream_slices.go b/service/history/api/recordworkflowtaskstarted/stream_slices.go index d5a27a6b9fc..5adc57dcbb2 100644 --- a/service/history/api/recordworkflowtaskstarted/stream_slices.go +++ b/service/history/api/recordworkflowtaskstarted/stream_slices.go @@ -649,8 +649,7 @@ func ReplaySlicesForQuery( // AsRefusal turns a range that cannot be served into the error a caller with // no task to fail should return. Any other error is handed back unchanged. func AsRefusal(err error) error { - var unavailable *rangeUnavailable - if errors.As(err, &unavailable) { + if unavailable, ok := errors.AsType[*rangeUnavailable](err); ok { return serviceerror.NewFailedPrecondition(unavailable.Error()) } return err diff --git a/tests/testcore/onebox.go b/tests/testcore/onebox.go index 45c6e87b6dd..a9406fd0ffe 100644 --- a/tests/testcore/onebox.go +++ b/tests/testcore/onebox.go @@ -10,6 +10,7 @@ import ( "net" "os" "path/filepath" + "slices" "strconv" "sync" "testing" @@ -346,8 +347,8 @@ func (c *temporalImpl) Start() (retErr error) { func (c *temporalImpl) Stop() error { var errs []error - for index := len(c.servers) - 1; index >= 0; index-- { - errs = append(errs, c.servers[index].Stop()) + for _, v := range slices.Backward(c.servers) { + errs = append(errs, v.Stop()) } c.servers = nil errs = append(errs, c.close()...) From dd4b88b7e1d9f82eebe6e4d31f360b184e4461e4 Mon Sep 17 00:00:00 2001 From: Moe Dashti Date: Mon, 28 Sep 2026 16:43:57 -0700 Subject: [PATCH 7/7] Subscribed at the tail through the start position in the wake test. --- tests/stream_consume_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/stream_consume_test.go b/tests/stream_consume_test.go index c163fc919f9..d0e9ab06e1e 100644 --- a/tests/stream_consume_test.go +++ b/tests/stream_consume_test.go @@ -17,6 +17,7 @@ import ( taskqueuepb "go.temporal.io/api/taskqueue/v1" updatepb "go.temporal.io/api/update/v1" "go.temporal.io/api/workflowservice/v1" + chasmstream "go.temporal.io/server/chasm/lib/stream" streamlib "go.temporal.io/server/chasm/lib/stream/gen/streampb/v1" chasmworkflow "go.temporal.io/server/chasm/lib/workflow" "go.temporal.io/server/common/testing/await" @@ -260,7 +261,7 @@ func TestStreamSubscriptionSchedulesItsOwnWorkflowTask(t *testing.T) { sub, err := s.client.SubscribeWorkflow(s.ctx(), &streamlib.SubscribeWorkflowRequest{ FrontendRequest: &streamlib.SubscribeWorkflowInput{ Namespace: s.ns, WorkflowId: id, - StreamName: chasmworkflow.DefaultStreamName, StartOffset: -1, + StreamName: chasmworkflow.DefaultStreamName, StartPosition: chasmstream.Tail(), }, }) require.NoError(t, err)