From 98b25e50cbcb17faffcd487386e9d2df73e69676 Mon Sep 17 00:00:00 2001 From: Stephan Behnke Date: Mon, 7 Apr 2025 09:51:22 -0700 Subject: [PATCH] Deployment Stats API --- .../v1/request_response.go-helpers.pb.go | 148 ++++ api/matchingservice/v1/request_response.pb.go | 691 ++++++++++++------ api/matchingservice/v1/service.pb.go | 194 ++--- api/matchingservice/v1/service_grpc.pb.go | 80 ++ .../v1/service_grpc.pb.mock.go | 70 ++ api/taskqueue/v1/message.go-helpers.pb.go | 37 + api/taskqueue/v1/message.pb.go | 122 +++- .../v1/request_response.go-helpers.pb.go | 104 +++ api/workflowservice/v1/request_response.pb.go | 219 ++++++ api/workflowservice/v1/service.pb.go | 90 +++ api/workflowservice/v1/service_grpc.pb.go | 133 ++++ api/workflowservicemock/v1/service.pb.mock.go | 34 + .../v1/service_grpc.pb.mock.go | 174 +++++ client/matching/client_gen.go | 37 + client/matching/metric_client_gen.go | 28 + client/matching/retryable_client_gen.go | 30 + .../logtags/matching_service_server_gen.go | 8 + .../matchingservice/v1/request_response.proto | 22 +- .../api/matchingservice/v1/service.proto | 7 + .../server/api/taskqueue/v1/message.proto | 7 + .../workflowservice/v1/request_response.proto | 49 ++ .../api/workflowservice/v1/service.proto | 32 + service/frontend/interface.go | 2 + service/frontend/service.go | 2 + service/frontend/workflow_handler.go | 51 ++ service/matching/handler.go | 24 + service/matching/matching_engine.go | 53 ++ .../matching/matching_engine_interfaces.go | 2 + tests/deployment_test.go | 2 +- tests/testcore/functional_test_base.go | 5 + tests/testcore/onebox.go | 17 +- tests/testcore/test_cluster.go | 5 + tests/worker_deployment_test.go | 113 +++ 33 files changed, 2235 insertions(+), 357 deletions(-) create mode 100644 api/workflowservice/v1/request_response.go-helpers.pb.go create mode 100644 api/workflowservice/v1/request_response.pb.go create mode 100644 api/workflowservice/v1/service.pb.go create mode 100644 api/workflowservice/v1/service_grpc.pb.go create mode 100644 api/workflowservicemock/v1/service.pb.mock.go create mode 100644 api/workflowservicemock/v1/service_grpc.pb.mock.go create mode 100644 proto/internal/temporal/server/api/workflowservice/v1/request_response.proto create mode 100644 proto/internal/temporal/server/api/workflowservice/v1/service.proto diff --git a/api/matchingservice/v1/request_response.go-helpers.pb.go b/api/matchingservice/v1/request_response.go-helpers.pb.go index 56784bd7d71..e588032e988 100644 --- a/api/matchingservice/v1/request_response.go-helpers.pb.go +++ b/api/matchingservice/v1/request_response.go-helpers.pb.go @@ -2396,3 +2396,151 @@ func (this *ListNexusEndpointsResponse) Equal(that interface{}) bool { return proto.Equal(this, that1) } + +// Marshal an object of type GetTaskQueueStatsRequest to the protobuf v3 wire format +func (val *GetTaskQueueStatsRequest) Marshal() ([]byte, error) { + return proto.Marshal(val) +} + +// Unmarshal an object of type GetTaskQueueStatsRequest from the protobuf v3 wire format +func (val *GetTaskQueueStatsRequest) Unmarshal(buf []byte) error { + return proto.Unmarshal(buf, val) +} + +// Size returns the size of the object, in bytes, once serialized +func (val *GetTaskQueueStatsRequest) Size() int { + return proto.Size(val) +} + +// Equal returns whether two GetTaskQueueStatsRequest 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 *GetTaskQueueStatsRequest) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + var that1 *GetTaskQueueStatsRequest + switch t := that.(type) { + case *GetTaskQueueStatsRequest: + that1 = t + case GetTaskQueueStatsRequest: + that1 = &t + default: + return false + } + + return proto.Equal(this, that1) +} + +// Marshal an object of type GetTaskQueueStatsResponse to the protobuf v3 wire format +func (val *GetTaskQueueStatsResponse) Marshal() ([]byte, error) { + return proto.Marshal(val) +} + +// Unmarshal an object of type GetTaskQueueStatsResponse from the protobuf v3 wire format +func (val *GetTaskQueueStatsResponse) Unmarshal(buf []byte) error { + return proto.Unmarshal(buf, val) +} + +// Size returns the size of the object, in bytes, once serialized +func (val *GetTaskQueueStatsResponse) Size() int { + return proto.Size(val) +} + +// Equal returns whether two GetTaskQueueStatsResponse 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 *GetTaskQueueStatsResponse) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + var that1 *GetTaskQueueStatsResponse + switch t := that.(type) { + case *GetTaskQueueStatsResponse: + that1 = t + case GetTaskQueueStatsResponse: + that1 = &t + default: + return false + } + + return proto.Equal(this, that1) +} + +// Marshal an object of type GetTaskQueuePartitionStatsRequest to the protobuf v3 wire format +func (val *GetTaskQueuePartitionStatsRequest) Marshal() ([]byte, error) { + return proto.Marshal(val) +} + +// Unmarshal an object of type GetTaskQueuePartitionStatsRequest from the protobuf v3 wire format +func (val *GetTaskQueuePartitionStatsRequest) Unmarshal(buf []byte) error { + return proto.Unmarshal(buf, val) +} + +// Size returns the size of the object, in bytes, once serialized +func (val *GetTaskQueuePartitionStatsRequest) Size() int { + return proto.Size(val) +} + +// Equal returns whether two GetTaskQueuePartitionStatsRequest 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 *GetTaskQueuePartitionStatsRequest) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + var that1 *GetTaskQueuePartitionStatsRequest + switch t := that.(type) { + case *GetTaskQueuePartitionStatsRequest: + that1 = t + case GetTaskQueuePartitionStatsRequest: + that1 = &t + default: + return false + } + + return proto.Equal(this, that1) +} + +// Marshal an object of type GetTaskQueuePartitionStatsResponse to the protobuf v3 wire format +func (val *GetTaskQueuePartitionStatsResponse) Marshal() ([]byte, error) { + return proto.Marshal(val) +} + +// Unmarshal an object of type GetTaskQueuePartitionStatsResponse from the protobuf v3 wire format +func (val *GetTaskQueuePartitionStatsResponse) Unmarshal(buf []byte) error { + return proto.Unmarshal(buf, val) +} + +// Size returns the size of the object, in bytes, once serialized +func (val *GetTaskQueuePartitionStatsResponse) Size() int { + return proto.Size(val) +} + +// Equal returns whether two GetTaskQueuePartitionStatsResponse 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 *GetTaskQueuePartitionStatsResponse) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + var that1 *GetTaskQueuePartitionStatsResponse + switch t := that.(type) { + case *GetTaskQueuePartitionStatsResponse: + that1 = t + case GetTaskQueuePartitionStatsResponse: + that1 = &t + default: + return false + } + + return proto.Equal(this, that1) +} diff --git a/api/matchingservice/v1/request_response.pb.go b/api/matchingservice/v1/request_response.pb.go index 4255cbd24e9..39a00853c65 100644 --- a/api/matchingservice/v1/request_response.pb.go +++ b/api/matchingservice/v1/request_response.pb.go @@ -4155,6 +4155,214 @@ func (x *ListNexusEndpointsResponse) GetEntries() []*v110.NexusEndpointEntry { return nil } +type GetTaskQueueStatsRequest 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"` + DeploymentVersion string `protobuf:"bytes,4,opt,name=deployment_version,json=deploymentVersion,proto3" json:"deployment_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetTaskQueueStatsRequest) Reset() { + *x = GetTaskQueueStatsRequest{} + mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetTaskQueueStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTaskQueueStatsRequest) ProtoMessage() {} + +func (x *GetTaskQueueStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[64] + 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 GetTaskQueueStatsRequest.ProtoReflect.Descriptor instead. +func (*GetTaskQueueStatsRequest) Descriptor() ([]byte, []int) { + return file_temporal_server_api_matchingservice_v1_request_response_proto_rawDescGZIP(), []int{64} +} + +func (x *GetTaskQueueStatsRequest) GetNamespaceId() string { + if x != nil { + return x.NamespaceId + } + return "" +} + +func (x *GetTaskQueueStatsRequest) GetTaskQueue() string { + if x != nil { + return x.TaskQueue + } + return "" +} + +func (x *GetTaskQueueStatsRequest) GetTaskQueueType() v19.TaskQueueType { + if x != nil { + return x.TaskQueueType + } + return v19.TaskQueueType(0) +} + +func (x *GetTaskQueueStatsRequest) GetDeploymentVersion() string { + if x != nil { + return x.DeploymentVersion + } + return "" +} + +type GetTaskQueueStatsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + BacklogCountHint int64 `protobuf:"varint,1,opt,name=backlog_count_hint,json=backlogCountHint,proto3" json:"backlog_count_hint,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetTaskQueueStatsResponse) Reset() { + *x = GetTaskQueueStatsResponse{} + mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetTaskQueueStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTaskQueueStatsResponse) ProtoMessage() {} + +func (x *GetTaskQueueStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[65] + 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 GetTaskQueueStatsResponse.ProtoReflect.Descriptor instead. +func (*GetTaskQueueStatsResponse) Descriptor() ([]byte, []int) { + return file_temporal_server_api_matchingservice_v1_request_response_proto_rawDescGZIP(), []int{65} +} + +func (x *GetTaskQueueStatsResponse) GetBacklogCountHint() int64 { + if x != nil { + return x.BacklogCountHint + } + return 0 +} + +type GetTaskQueuePartitionStatsRequest 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"` + DeploymentVersion string `protobuf:"bytes,3,opt,name=deployment_version,json=deploymentVersion,proto3" json:"deployment_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetTaskQueuePartitionStatsRequest) Reset() { + *x = GetTaskQueuePartitionStatsRequest{} + mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetTaskQueuePartitionStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTaskQueuePartitionStatsRequest) ProtoMessage() {} + +func (x *GetTaskQueuePartitionStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[66] + 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 GetTaskQueuePartitionStatsRequest.ProtoReflect.Descriptor instead. +func (*GetTaskQueuePartitionStatsRequest) Descriptor() ([]byte, []int) { + return file_temporal_server_api_matchingservice_v1_request_response_proto_rawDescGZIP(), []int{66} +} + +func (x *GetTaskQueuePartitionStatsRequest) GetNamespaceId() string { + if x != nil { + return x.NamespaceId + } + return "" +} + +func (x *GetTaskQueuePartitionStatsRequest) GetTaskQueuePartition() *v18.TaskQueuePartition { + if x != nil { + return x.TaskQueuePartition + } + return nil +} + +func (x *GetTaskQueuePartitionStatsRequest) GetDeploymentVersion() string { + if x != nil { + return x.DeploymentVersion + } + return "" +} + +type GetTaskQueuePartitionStatsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetTaskQueuePartitionStatsResponse) Reset() { + *x = GetTaskQueuePartitionStatsResponse{} + mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetTaskQueuePartitionStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTaskQueuePartitionStatsResponse) ProtoMessage() {} + +func (x *GetTaskQueuePartitionStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[67] + 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 GetTaskQueuePartitionStatsResponse.ProtoReflect.Descriptor instead. +func (*GetTaskQueuePartitionStatsResponse) Descriptor() ([]byte, []int) { + return file_temporal_server_api_matchingservice_v1_request_response_proto_rawDescGZIP(), []int{67} +} + // Apply request from public API. type UpdateWorkerBuildIdCompatibilityRequest_ApplyPublicRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -4165,7 +4373,7 @@ type UpdateWorkerBuildIdCompatibilityRequest_ApplyPublicRequest struct { func (x *UpdateWorkerBuildIdCompatibilityRequest_ApplyPublicRequest) Reset() { *x = UpdateWorkerBuildIdCompatibilityRequest_ApplyPublicRequest{} - mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[66] + mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4177,7 +4385,7 @@ func (x *UpdateWorkerBuildIdCompatibilityRequest_ApplyPublicRequest) String() st func (*UpdateWorkerBuildIdCompatibilityRequest_ApplyPublicRequest) ProtoMessage() {} func (x *UpdateWorkerBuildIdCompatibilityRequest_ApplyPublicRequest) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[66] + mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4213,7 +4421,7 @@ type UpdateWorkerBuildIdCompatibilityRequest_RemoveBuildIds struct { func (x *UpdateWorkerBuildIdCompatibilityRequest_RemoveBuildIds) Reset() { *x = UpdateWorkerBuildIdCompatibilityRequest_RemoveBuildIds{} - mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[67] + mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4225,7 +4433,7 @@ func (x *UpdateWorkerBuildIdCompatibilityRequest_RemoveBuildIds) String() string func (*UpdateWorkerBuildIdCompatibilityRequest_RemoveBuildIds) ProtoMessage() {} func (x *UpdateWorkerBuildIdCompatibilityRequest_RemoveBuildIds) ProtoReflect() protoreflect.Message { - mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[67] + mi := &file_temporal_server_api_matchingservice_v1_request_response_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4560,7 +4768,20 @@ const file_temporal_server_api_matchingservice_v1_request_response_proto_rawDesc "\x1aListNexusEndpointsResponse\x12&\n" + "\x0fnext_page_token\x18\x01 \x01(\fR\rnextPageToken\x12#\n" + "\rtable_version\x18\x02 \x01(\x03R\ftableVersion\x12P\n" + - "\aentries\x18\x03 \x03(\v26.temporal.server.api.persistence.v1.NexusEndpointEntryR\aentriesB>ZZ temporal.api.workflowservice.v1.PollWorkflowTaskQueueRequest - 69, // 1: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 70, // 2: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.workflow_type:type_name -> temporal.api.common.v1.WorkflowType - 71, // 3: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.query:type_name -> temporal.api.query.v1.WorkflowQuery - 72, // 4: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.transient_workflow_task:type_name -> temporal.server.api.history.v1.TransientWorkflowTaskInfo - 73, // 5: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.workflow_execution_task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 74, // 6: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.scheduled_time:type_name -> google.protobuf.Timestamp - 74, // 7: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.started_time:type_name -> google.protobuf.Timestamp - 64, // 8: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.queries:type_name -> temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.QueriesEntry - 75, // 9: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.messages:type_name -> temporal.api.protocol.v1.Message - 76, // 10: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.history:type_name -> temporal.api.history.v1.History - 77, // 11: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.poller_scaling_decision:type_name -> temporal.api.taskqueue.v1.PollerScalingDecision - 78, // 12: temporal.server.api.matchingservice.v1.PollActivityTaskQueueRequest.poll_request:type_name -> temporal.api.workflowservice.v1.PollActivityTaskQueueRequest - 69, // 13: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution - 79, // 14: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.activity_type:type_name -> temporal.api.common.v1.ActivityType - 80, // 15: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.input:type_name -> temporal.api.common.v1.Payloads - 74, // 16: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.scheduled_time:type_name -> google.protobuf.Timestamp - 81, // 17: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.schedule_to_close_timeout:type_name -> google.protobuf.Duration - 74, // 18: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.started_time:type_name -> google.protobuf.Timestamp - 81, // 19: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.start_to_close_timeout:type_name -> google.protobuf.Duration - 81, // 20: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.heartbeat_timeout:type_name -> google.protobuf.Duration - 74, // 21: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.current_attempt_scheduled_time:type_name -> google.protobuf.Timestamp - 80, // 22: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.heartbeat_details:type_name -> temporal.api.common.v1.Payloads - 70, // 23: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.workflow_type:type_name -> temporal.api.common.v1.WorkflowType - 82, // 24: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.header:type_name -> temporal.api.common.v1.Header - 77, // 25: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.poller_scaling_decision:type_name -> temporal.api.taskqueue.v1.PollerScalingDecision - 83, // 26: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.priority:type_name -> temporal.api.common.v1.Priority - 69, // 27: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 73, // 28: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 81, // 29: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.schedule_to_start_timeout:type_name -> google.protobuf.Duration - 84, // 30: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 85, // 31: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective - 86, // 32: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo - 83, // 33: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.priority:type_name -> temporal.api.common.v1.Priority - 69, // 34: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution - 73, // 35: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 81, // 36: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.schedule_to_start_timeout:type_name -> google.protobuf.Duration - 84, // 37: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock - 85, // 38: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective - 86, // 39: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo - 83, // 40: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.priority:type_name -> temporal.api.common.v1.Priority - 73, // 41: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 87, // 42: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.query_request:type_name -> temporal.api.workflowservice.v1.QueryWorkflowRequest - 85, // 43: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective - 86, // 44: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo - 83, // 45: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.priority:type_name -> temporal.api.common.v1.Priority - 80, // 46: temporal.server.api.matchingservice.v1.QueryWorkflowResponse.query_result:type_name -> temporal.api.common.v1.Payloads - 88, // 47: temporal.server.api.matchingservice.v1.QueryWorkflowResponse.query_rejected:type_name -> temporal.api.query.v1.QueryRejected - 73, // 48: temporal.server.api.matchingservice.v1.RespondQueryTaskCompletedRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 89, // 49: temporal.server.api.matchingservice.v1.RespondQueryTaskCompletedRequest.completed_request:type_name -> temporal.api.workflowservice.v1.RespondQueryTaskCompletedRequest - 90, // 50: temporal.server.api.matchingservice.v1.CancelOutstandingPollRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType - 73, // 51: temporal.server.api.matchingservice.v1.CancelOutstandingPollRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 91, // 52: temporal.server.api.matchingservice.v1.DescribeTaskQueueRequest.desc_request:type_name -> temporal.api.workflowservice.v1.DescribeTaskQueueRequest - 92, // 53: temporal.server.api.matchingservice.v1.DescribeTaskQueueResponse.desc_response:type_name -> temporal.api.workflowservice.v1.DescribeTaskQueueResponse - 93, // 54: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition - 94, // 55: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionRequest.versions:type_name -> temporal.api.taskqueue.v1.TaskQueueVersionSelection - 65, // 56: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse.versions_info_internal:type_name -> temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse.VersionsInfoInternalEntry - 73, // 57: temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 95, // 58: temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsResponse.activity_task_queue_partitions:type_name -> temporal.api.taskqueue.v1.TaskQueuePartitionMetadata - 95, // 59: temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsResponse.workflow_task_queue_partitions:type_name -> temporal.api.taskqueue.v1.TaskQueuePartitionMetadata - 66, // 60: temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.apply_public_request:type_name -> temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.ApplyPublicRequest - 67, // 61: temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.remove_build_ids:type_name -> temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.RemoveBuildIds - 96, // 62: temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesRequest.request:type_name -> temporal.api.workflowservice.v1.GetWorkerVersioningRulesRequest - 97, // 63: temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesResponse.response:type_name -> temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse - 98, // 64: temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesRequest.request:type_name -> temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest - 99, // 65: temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesResponse.response:type_name -> temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse - 100, // 66: temporal.server.api.matchingservice.v1.GetWorkerBuildIdCompatibilityRequest.request:type_name -> temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityRequest - 101, // 67: temporal.server.api.matchingservice.v1.GetWorkerBuildIdCompatibilityResponse.response:type_name -> temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse - 90, // 68: temporal.server.api.matchingservice.v1.GetTaskQueueUserDataRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType - 102, // 69: temporal.server.api.matchingservice.v1.GetTaskQueueUserDataResponse.user_data:type_name -> temporal.server.api.persistence.v1.VersionedTaskQueueUserData - 90, // 70: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType - 90, // 71: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.task_queue_types:type_name -> temporal.api.enums.v1.TaskQueueType - 103, // 72: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.deployment:type_name -> temporal.api.deployment.v1.Deployment - 104, // 73: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.data:type_name -> temporal.server.api.deployment.v1.TaskQueueData - 105, // 74: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.update_version_data:type_name -> temporal.server.api.deployment.v1.DeploymentVersionData - 106, // 75: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.forget_version:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentVersion - 107, // 76: temporal.server.api.matchingservice.v1.ApplyTaskQueueUserDataReplicationEventRequest.user_data:type_name -> temporal.server.api.persistence.v1.TaskQueueUserData - 93, // 77: temporal.server.api.matchingservice.v1.ForceLoadTaskQueuePartitionRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition - 90, // 78: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueueRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType - 93, // 79: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueuePartitionRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition - 102, // 80: temporal.server.api.matchingservice.v1.UpdateTaskQueueUserDataRequest.user_data:type_name -> temporal.server.api.persistence.v1.VersionedTaskQueueUserData - 107, // 81: temporal.server.api.matchingservice.v1.ReplicateTaskQueueUserDataRequest.user_data:type_name -> temporal.server.api.persistence.v1.TaskQueueUserData - 73, // 82: temporal.server.api.matchingservice.v1.DispatchNexusTaskRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 108, // 83: temporal.server.api.matchingservice.v1.DispatchNexusTaskRequest.request:type_name -> temporal.api.nexus.v1.Request - 86, // 84: temporal.server.api.matchingservice.v1.DispatchNexusTaskRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo - 109, // 85: temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse.handler_error:type_name -> temporal.api.nexus.v1.HandlerError - 110, // 86: temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse.response:type_name -> temporal.api.nexus.v1.Response - 111, // 87: temporal.server.api.matchingservice.v1.PollNexusTaskQueueRequest.request:type_name -> temporal.api.workflowservice.v1.PollNexusTaskQueueRequest - 112, // 88: temporal.server.api.matchingservice.v1.PollNexusTaskQueueResponse.response:type_name -> temporal.api.workflowservice.v1.PollNexusTaskQueueResponse - 73, // 89: temporal.server.api.matchingservice.v1.RespondNexusTaskCompletedRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 113, // 90: temporal.server.api.matchingservice.v1.RespondNexusTaskCompletedRequest.request:type_name -> temporal.api.workflowservice.v1.RespondNexusTaskCompletedRequest - 73, // 91: temporal.server.api.matchingservice.v1.RespondNexusTaskFailedRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue - 114, // 92: temporal.server.api.matchingservice.v1.RespondNexusTaskFailedRequest.request:type_name -> temporal.api.workflowservice.v1.RespondNexusTaskFailedRequest - 115, // 93: temporal.server.api.matchingservice.v1.CreateNexusEndpointRequest.spec:type_name -> temporal.server.api.persistence.v1.NexusEndpointSpec - 116, // 94: temporal.server.api.matchingservice.v1.CreateNexusEndpointResponse.entry:type_name -> temporal.server.api.persistence.v1.NexusEndpointEntry - 115, // 95: temporal.server.api.matchingservice.v1.UpdateNexusEndpointRequest.spec:type_name -> temporal.server.api.persistence.v1.NexusEndpointSpec - 116, // 96: temporal.server.api.matchingservice.v1.UpdateNexusEndpointResponse.entry:type_name -> temporal.server.api.persistence.v1.NexusEndpointEntry - 116, // 97: temporal.server.api.matchingservice.v1.ListNexusEndpointsResponse.entries:type_name -> temporal.server.api.persistence.v1.NexusEndpointEntry - 71, // 98: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.QueriesEntry.value:type_name -> temporal.api.query.v1.WorkflowQuery - 117, // 99: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse.VersionsInfoInternalEntry.value:type_name -> temporal.server.api.taskqueue.v1.TaskQueueVersionInfoInternal - 118, // 100: temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.ApplyPublicRequest.request:type_name -> temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest - 101, // [101:101] is the sub-list for method output_type - 101, // [101:101] is the sub-list for method input_type - 101, // [101:101] is the sub-list for extension type_name - 101, // [101:101] is the sub-list for extension extendee - 0, // [0:101] is the sub-list for field type_name + 72, // 0: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueRequest.poll_request:type_name -> temporal.api.workflowservice.v1.PollWorkflowTaskQueueRequest + 73, // 1: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 74, // 2: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.workflow_type:type_name -> temporal.api.common.v1.WorkflowType + 75, // 3: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.query:type_name -> temporal.api.query.v1.WorkflowQuery + 76, // 4: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.transient_workflow_task:type_name -> temporal.server.api.history.v1.TransientWorkflowTaskInfo + 77, // 5: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.workflow_execution_task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 78, // 6: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.scheduled_time:type_name -> google.protobuf.Timestamp + 78, // 7: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.started_time:type_name -> google.protobuf.Timestamp + 68, // 8: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.queries:type_name -> temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.QueriesEntry + 79, // 9: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.messages:type_name -> temporal.api.protocol.v1.Message + 80, // 10: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.history:type_name -> temporal.api.history.v1.History + 81, // 11: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.poller_scaling_decision:type_name -> temporal.api.taskqueue.v1.PollerScalingDecision + 82, // 12: temporal.server.api.matchingservice.v1.PollActivityTaskQueueRequest.poll_request:type_name -> temporal.api.workflowservice.v1.PollActivityTaskQueueRequest + 73, // 13: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.workflow_execution:type_name -> temporal.api.common.v1.WorkflowExecution + 83, // 14: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.activity_type:type_name -> temporal.api.common.v1.ActivityType + 84, // 15: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.input:type_name -> temporal.api.common.v1.Payloads + 78, // 16: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.scheduled_time:type_name -> google.protobuf.Timestamp + 85, // 17: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.schedule_to_close_timeout:type_name -> google.protobuf.Duration + 78, // 18: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.started_time:type_name -> google.protobuf.Timestamp + 85, // 19: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.start_to_close_timeout:type_name -> google.protobuf.Duration + 85, // 20: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.heartbeat_timeout:type_name -> google.protobuf.Duration + 78, // 21: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.current_attempt_scheduled_time:type_name -> google.protobuf.Timestamp + 84, // 22: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.heartbeat_details:type_name -> temporal.api.common.v1.Payloads + 74, // 23: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.workflow_type:type_name -> temporal.api.common.v1.WorkflowType + 86, // 24: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.header:type_name -> temporal.api.common.v1.Header + 81, // 25: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.poller_scaling_decision:type_name -> temporal.api.taskqueue.v1.PollerScalingDecision + 87, // 26: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse.priority:type_name -> temporal.api.common.v1.Priority + 73, // 27: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 77, // 28: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 85, // 29: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.schedule_to_start_timeout:type_name -> google.protobuf.Duration + 88, // 30: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 89, // 31: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective + 90, // 32: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo + 87, // 33: temporal.server.api.matchingservice.v1.AddWorkflowTaskRequest.priority:type_name -> temporal.api.common.v1.Priority + 73, // 34: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.execution:type_name -> temporal.api.common.v1.WorkflowExecution + 77, // 35: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 85, // 36: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.schedule_to_start_timeout:type_name -> google.protobuf.Duration + 88, // 37: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.clock:type_name -> temporal.server.api.clock.v1.VectorClock + 89, // 38: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective + 90, // 39: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo + 87, // 40: temporal.server.api.matchingservice.v1.AddActivityTaskRequest.priority:type_name -> temporal.api.common.v1.Priority + 77, // 41: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 91, // 42: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.query_request:type_name -> temporal.api.workflowservice.v1.QueryWorkflowRequest + 89, // 43: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.version_directive:type_name -> temporal.server.api.taskqueue.v1.TaskVersionDirective + 90, // 44: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo + 87, // 45: temporal.server.api.matchingservice.v1.QueryWorkflowRequest.priority:type_name -> temporal.api.common.v1.Priority + 84, // 46: temporal.server.api.matchingservice.v1.QueryWorkflowResponse.query_result:type_name -> temporal.api.common.v1.Payloads + 92, // 47: temporal.server.api.matchingservice.v1.QueryWorkflowResponse.query_rejected:type_name -> temporal.api.query.v1.QueryRejected + 77, // 48: temporal.server.api.matchingservice.v1.RespondQueryTaskCompletedRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 93, // 49: temporal.server.api.matchingservice.v1.RespondQueryTaskCompletedRequest.completed_request:type_name -> temporal.api.workflowservice.v1.RespondQueryTaskCompletedRequest + 94, // 50: temporal.server.api.matchingservice.v1.CancelOutstandingPollRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType + 77, // 51: temporal.server.api.matchingservice.v1.CancelOutstandingPollRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 95, // 52: temporal.server.api.matchingservice.v1.DescribeTaskQueueRequest.desc_request:type_name -> temporal.api.workflowservice.v1.DescribeTaskQueueRequest + 96, // 53: temporal.server.api.matchingservice.v1.DescribeTaskQueueResponse.desc_response:type_name -> temporal.api.workflowservice.v1.DescribeTaskQueueResponse + 97, // 54: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition + 98, // 55: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionRequest.versions:type_name -> temporal.api.taskqueue.v1.TaskQueueVersionSelection + 69, // 56: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse.versions_info_internal:type_name -> temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse.VersionsInfoInternalEntry + 77, // 57: temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 99, // 58: temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsResponse.activity_task_queue_partitions:type_name -> temporal.api.taskqueue.v1.TaskQueuePartitionMetadata + 99, // 59: temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsResponse.workflow_task_queue_partitions:type_name -> temporal.api.taskqueue.v1.TaskQueuePartitionMetadata + 70, // 60: temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.apply_public_request:type_name -> temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.ApplyPublicRequest + 71, // 61: temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.remove_build_ids:type_name -> temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.RemoveBuildIds + 100, // 62: temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesRequest.request:type_name -> temporal.api.workflowservice.v1.GetWorkerVersioningRulesRequest + 101, // 63: temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesResponse.response:type_name -> temporal.api.workflowservice.v1.GetWorkerVersioningRulesResponse + 102, // 64: temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesRequest.request:type_name -> temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesRequest + 103, // 65: temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesResponse.response:type_name -> temporal.api.workflowservice.v1.UpdateWorkerVersioningRulesResponse + 104, // 66: temporal.server.api.matchingservice.v1.GetWorkerBuildIdCompatibilityRequest.request:type_name -> temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityRequest + 105, // 67: temporal.server.api.matchingservice.v1.GetWorkerBuildIdCompatibilityResponse.response:type_name -> temporal.api.workflowservice.v1.GetWorkerBuildIdCompatibilityResponse + 94, // 68: temporal.server.api.matchingservice.v1.GetTaskQueueUserDataRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType + 106, // 69: temporal.server.api.matchingservice.v1.GetTaskQueueUserDataResponse.user_data:type_name -> temporal.server.api.persistence.v1.VersionedTaskQueueUserData + 94, // 70: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType + 94, // 71: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.task_queue_types:type_name -> temporal.api.enums.v1.TaskQueueType + 107, // 72: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.deployment:type_name -> temporal.api.deployment.v1.Deployment + 108, // 73: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.data:type_name -> temporal.server.api.deployment.v1.TaskQueueData + 109, // 74: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.update_version_data:type_name -> temporal.server.api.deployment.v1.DeploymentVersionData + 110, // 75: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest.forget_version:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentVersion + 111, // 76: temporal.server.api.matchingservice.v1.ApplyTaskQueueUserDataReplicationEventRequest.user_data:type_name -> temporal.server.api.persistence.v1.TaskQueueUserData + 97, // 77: temporal.server.api.matchingservice.v1.ForceLoadTaskQueuePartitionRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition + 94, // 78: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueueRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType + 97, // 79: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueuePartitionRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition + 106, // 80: temporal.server.api.matchingservice.v1.UpdateTaskQueueUserDataRequest.user_data:type_name -> temporal.server.api.persistence.v1.VersionedTaskQueueUserData + 111, // 81: temporal.server.api.matchingservice.v1.ReplicateTaskQueueUserDataRequest.user_data:type_name -> temporal.server.api.persistence.v1.TaskQueueUserData + 77, // 82: temporal.server.api.matchingservice.v1.DispatchNexusTaskRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 112, // 83: temporal.server.api.matchingservice.v1.DispatchNexusTaskRequest.request:type_name -> temporal.api.nexus.v1.Request + 90, // 84: temporal.server.api.matchingservice.v1.DispatchNexusTaskRequest.forward_info:type_name -> temporal.server.api.taskqueue.v1.TaskForwardInfo + 113, // 85: temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse.handler_error:type_name -> temporal.api.nexus.v1.HandlerError + 114, // 86: temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse.response:type_name -> temporal.api.nexus.v1.Response + 115, // 87: temporal.server.api.matchingservice.v1.PollNexusTaskQueueRequest.request:type_name -> temporal.api.workflowservice.v1.PollNexusTaskQueueRequest + 116, // 88: temporal.server.api.matchingservice.v1.PollNexusTaskQueueResponse.response:type_name -> temporal.api.workflowservice.v1.PollNexusTaskQueueResponse + 77, // 89: temporal.server.api.matchingservice.v1.RespondNexusTaskCompletedRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 117, // 90: temporal.server.api.matchingservice.v1.RespondNexusTaskCompletedRequest.request:type_name -> temporal.api.workflowservice.v1.RespondNexusTaskCompletedRequest + 77, // 91: temporal.server.api.matchingservice.v1.RespondNexusTaskFailedRequest.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 118, // 92: temporal.server.api.matchingservice.v1.RespondNexusTaskFailedRequest.request:type_name -> temporal.api.workflowservice.v1.RespondNexusTaskFailedRequest + 119, // 93: temporal.server.api.matchingservice.v1.CreateNexusEndpointRequest.spec:type_name -> temporal.server.api.persistence.v1.NexusEndpointSpec + 120, // 94: temporal.server.api.matchingservice.v1.CreateNexusEndpointResponse.entry:type_name -> temporal.server.api.persistence.v1.NexusEndpointEntry + 119, // 95: temporal.server.api.matchingservice.v1.UpdateNexusEndpointRequest.spec:type_name -> temporal.server.api.persistence.v1.NexusEndpointSpec + 120, // 96: temporal.server.api.matchingservice.v1.UpdateNexusEndpointResponse.entry:type_name -> temporal.server.api.persistence.v1.NexusEndpointEntry + 120, // 97: temporal.server.api.matchingservice.v1.ListNexusEndpointsResponse.entries:type_name -> temporal.server.api.persistence.v1.NexusEndpointEntry + 94, // 98: temporal.server.api.matchingservice.v1.GetTaskQueueStatsRequest.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType + 97, // 99: temporal.server.api.matchingservice.v1.GetTaskQueuePartitionStatsRequest.task_queue_partition:type_name -> temporal.server.api.taskqueue.v1.TaskQueuePartition + 75, // 100: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse.QueriesEntry.value:type_name -> temporal.api.query.v1.WorkflowQuery + 121, // 101: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse.VersionsInfoInternalEntry.value:type_name -> temporal.server.api.taskqueue.v1.TaskQueueVersionInfoInternal + 122, // 102: temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityRequest.ApplyPublicRequest.request:type_name -> temporal.api.workflowservice.v1.UpdateWorkerBuildIdCompatibilityRequest + 103, // [103:103] is the sub-list for method output_type + 103, // [103:103] is the sub-list for method input_type + 103, // [103:103] is the sub-list for extension type_name + 103, // [103:103] is the sub-list for extension extendee + 0, // [0:103] is the sub-list for field type_name } func init() { file_temporal_server_api_matchingservice_v1_request_response_proto_init() } @@ -4835,7 +5062,7 @@ func file_temporal_server_api_matchingservice_v1_request_response_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_matchingservice_v1_request_response_proto_rawDesc), len(file_temporal_server_api_matchingservice_v1_request_response_proto_rawDesc)), NumEnums: 0, - NumMessages: 68, + NumMessages: 72, NumExtensions: 0, NumServices: 0, }, diff --git a/api/matchingservice/v1/service.pb.go b/api/matchingservice/v1/service.pb.go index c7297aeab01..8f7f8f42f86 100644 --- a/api/matchingservice/v1/service.pb.go +++ b/api/matchingservice/v1/service.pb.go @@ -47,7 +47,7 @@ var File_temporal_server_api_matchingservice_v1_service_proto protoreflect.FileD const file_temporal_server_api_matchingservice_v1_service_proto_rawDesc = "" + "\n" + - "4temporal/server/api/matchingservice/v1/service.proto\x12&temporal.server.api.matchingservice.v1\x1a=temporal/server/api/matchingservice/v1/request_response.proto2\xdf+\n" + + "4temporal/server/api/matchingservice/v1/service.proto\x12&temporal.server.api.matchingservice.v1\x1a=temporal/server/api/matchingservice/v1/request_response.proto2\xb4.\n" + "\x0fMatchingService\x12\xa6\x01\n" + "\x15PollWorkflowTaskQueue\x12D.temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueRequest\x1aE.temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse\"\x00\x12\xa6\x01\n" + "\x15PollActivityTaskQueue\x12D.temporal.server.api.matchingservice.v1.PollActivityTaskQueueRequest\x1aE.temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse\"\x00\x12\x94\x01\n" + @@ -68,7 +68,9 @@ const file_temporal_server_api_matchingservice_v1_service_proto_rawDesc = "" + "\x14GetTaskQueueUserData\x12C.temporal.server.api.matchingservice.v1.GetTaskQueueUserDataRequest\x1aD.temporal.server.api.matchingservice.v1.GetTaskQueueUserDataResponse\"\x00\x12\xb8\x01\n" + "\x1bUpdateWorkerVersioningRules\x12J.temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesRequest\x1aK.temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesResponse\"\x00\x12\xaf\x01\n" + "\x18GetWorkerVersioningRules\x12G.temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesRequest\x1aH.temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesResponse\"\x00\x12\xa9\x01\n" + - "\x16SyncDeploymentUserData\x12E.temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest\x1aF.temporal.server.api.matchingservice.v1.SyncDeploymentUserDataResponse\"\x00\x12\xd9\x01\n" + + "\x16SyncDeploymentUserData\x12E.temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest\x1aF.temporal.server.api.matchingservice.v1.SyncDeploymentUserDataResponse\"\x00\x12\x9a\x01\n" + + "\x11GetTaskQueueStats\x12@.temporal.server.api.matchingservice.v1.GetTaskQueueStatsRequest\x1aA.temporal.server.api.matchingservice.v1.GetTaskQueueStatsResponse\"\x00\x12\xb5\x01\n" + + "\x1aGetTaskQueuePartitionStats\x12I.temporal.server.api.matchingservice.v1.GetTaskQueuePartitionStatsRequest\x1aJ.temporal.server.api.matchingservice.v1.GetTaskQueuePartitionStatsResponse\"\x00\x12\xd9\x01\n" + "&ApplyTaskQueueUserDataReplicationEvent\x12U.temporal.server.api.matchingservice.v1.ApplyTaskQueueUserDataReplicationEventRequest\x1aV.temporal.server.api.matchingservice.v1.ApplyTaskQueueUserDataReplicationEventResponse\"\x00\x12\xb5\x01\n" + "\x1aGetBuildIdTaskQueueMapping\x12I.temporal.server.api.matchingservice.v1.GetBuildIdTaskQueueMappingRequest\x1aJ.temporal.server.api.matchingservice.v1.GetBuildIdTaskQueueMappingResponse\"\x00\x12\xb8\x01\n" + "\x1bForceLoadTaskQueuePartition\x12J.temporal.server.api.matchingservice.v1.ForceLoadTaskQueuePartitionRequest\x1aK.temporal.server.api.matchingservice.v1.ForceLoadTaskQueuePartitionResponse\"\x00\x12\xa3\x01\n" + @@ -103,50 +105,54 @@ var file_temporal_server_api_matchingservice_v1_service_proto_goTypes = []any{ (*UpdateWorkerVersioningRulesRequest)(nil), // 17: temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesRequest (*GetWorkerVersioningRulesRequest)(nil), // 18: temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesRequest (*SyncDeploymentUserDataRequest)(nil), // 19: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest - (*ApplyTaskQueueUserDataReplicationEventRequest)(nil), // 20: temporal.server.api.matchingservice.v1.ApplyTaskQueueUserDataReplicationEventRequest - (*GetBuildIdTaskQueueMappingRequest)(nil), // 21: temporal.server.api.matchingservice.v1.GetBuildIdTaskQueueMappingRequest - (*ForceLoadTaskQueuePartitionRequest)(nil), // 22: temporal.server.api.matchingservice.v1.ForceLoadTaskQueuePartitionRequest - (*ForceUnloadTaskQueueRequest)(nil), // 23: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueueRequest - (*ForceUnloadTaskQueuePartitionRequest)(nil), // 24: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueuePartitionRequest - (*UpdateTaskQueueUserDataRequest)(nil), // 25: temporal.server.api.matchingservice.v1.UpdateTaskQueueUserDataRequest - (*ReplicateTaskQueueUserDataRequest)(nil), // 26: temporal.server.api.matchingservice.v1.ReplicateTaskQueueUserDataRequest - (*CheckTaskQueueUserDataPropagationRequest)(nil), // 27: temporal.server.api.matchingservice.v1.CheckTaskQueueUserDataPropagationRequest - (*CreateNexusEndpointRequest)(nil), // 28: temporal.server.api.matchingservice.v1.CreateNexusEndpointRequest - (*UpdateNexusEndpointRequest)(nil), // 29: temporal.server.api.matchingservice.v1.UpdateNexusEndpointRequest - (*DeleteNexusEndpointRequest)(nil), // 30: temporal.server.api.matchingservice.v1.DeleteNexusEndpointRequest - (*ListNexusEndpointsRequest)(nil), // 31: temporal.server.api.matchingservice.v1.ListNexusEndpointsRequest - (*PollWorkflowTaskQueueResponse)(nil), // 32: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse - (*PollActivityTaskQueueResponse)(nil), // 33: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse - (*AddWorkflowTaskResponse)(nil), // 34: temporal.server.api.matchingservice.v1.AddWorkflowTaskResponse - (*AddActivityTaskResponse)(nil), // 35: temporal.server.api.matchingservice.v1.AddActivityTaskResponse - (*QueryWorkflowResponse)(nil), // 36: temporal.server.api.matchingservice.v1.QueryWorkflowResponse - (*RespondQueryTaskCompletedResponse)(nil), // 37: temporal.server.api.matchingservice.v1.RespondQueryTaskCompletedResponse - (*DispatchNexusTaskResponse)(nil), // 38: temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse - (*PollNexusTaskQueueResponse)(nil), // 39: temporal.server.api.matchingservice.v1.PollNexusTaskQueueResponse - (*RespondNexusTaskCompletedResponse)(nil), // 40: temporal.server.api.matchingservice.v1.RespondNexusTaskCompletedResponse - (*RespondNexusTaskFailedResponse)(nil), // 41: temporal.server.api.matchingservice.v1.RespondNexusTaskFailedResponse - (*CancelOutstandingPollResponse)(nil), // 42: temporal.server.api.matchingservice.v1.CancelOutstandingPollResponse - (*DescribeTaskQueueResponse)(nil), // 43: temporal.server.api.matchingservice.v1.DescribeTaskQueueResponse - (*DescribeTaskQueuePartitionResponse)(nil), // 44: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse - (*ListTaskQueuePartitionsResponse)(nil), // 45: temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsResponse - (*UpdateWorkerBuildIdCompatibilityResponse)(nil), // 46: temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityResponse - (*GetWorkerBuildIdCompatibilityResponse)(nil), // 47: temporal.server.api.matchingservice.v1.GetWorkerBuildIdCompatibilityResponse - (*GetTaskQueueUserDataResponse)(nil), // 48: temporal.server.api.matchingservice.v1.GetTaskQueueUserDataResponse - (*UpdateWorkerVersioningRulesResponse)(nil), // 49: temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesResponse - (*GetWorkerVersioningRulesResponse)(nil), // 50: temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesResponse - (*SyncDeploymentUserDataResponse)(nil), // 51: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataResponse - (*ApplyTaskQueueUserDataReplicationEventResponse)(nil), // 52: temporal.server.api.matchingservice.v1.ApplyTaskQueueUserDataReplicationEventResponse - (*GetBuildIdTaskQueueMappingResponse)(nil), // 53: temporal.server.api.matchingservice.v1.GetBuildIdTaskQueueMappingResponse - (*ForceLoadTaskQueuePartitionResponse)(nil), // 54: temporal.server.api.matchingservice.v1.ForceLoadTaskQueuePartitionResponse - (*ForceUnloadTaskQueueResponse)(nil), // 55: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueueResponse - (*ForceUnloadTaskQueuePartitionResponse)(nil), // 56: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueuePartitionResponse - (*UpdateTaskQueueUserDataResponse)(nil), // 57: temporal.server.api.matchingservice.v1.UpdateTaskQueueUserDataResponse - (*ReplicateTaskQueueUserDataResponse)(nil), // 58: temporal.server.api.matchingservice.v1.ReplicateTaskQueueUserDataResponse - (*CheckTaskQueueUserDataPropagationResponse)(nil), // 59: temporal.server.api.matchingservice.v1.CheckTaskQueueUserDataPropagationResponse - (*CreateNexusEndpointResponse)(nil), // 60: temporal.server.api.matchingservice.v1.CreateNexusEndpointResponse - (*UpdateNexusEndpointResponse)(nil), // 61: temporal.server.api.matchingservice.v1.UpdateNexusEndpointResponse - (*DeleteNexusEndpointResponse)(nil), // 62: temporal.server.api.matchingservice.v1.DeleteNexusEndpointResponse - (*ListNexusEndpointsResponse)(nil), // 63: temporal.server.api.matchingservice.v1.ListNexusEndpointsResponse + (*GetTaskQueueStatsRequest)(nil), // 20: temporal.server.api.matchingservice.v1.GetTaskQueueStatsRequest + (*GetTaskQueuePartitionStatsRequest)(nil), // 21: temporal.server.api.matchingservice.v1.GetTaskQueuePartitionStatsRequest + (*ApplyTaskQueueUserDataReplicationEventRequest)(nil), // 22: temporal.server.api.matchingservice.v1.ApplyTaskQueueUserDataReplicationEventRequest + (*GetBuildIdTaskQueueMappingRequest)(nil), // 23: temporal.server.api.matchingservice.v1.GetBuildIdTaskQueueMappingRequest + (*ForceLoadTaskQueuePartitionRequest)(nil), // 24: temporal.server.api.matchingservice.v1.ForceLoadTaskQueuePartitionRequest + (*ForceUnloadTaskQueueRequest)(nil), // 25: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueueRequest + (*ForceUnloadTaskQueuePartitionRequest)(nil), // 26: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueuePartitionRequest + (*UpdateTaskQueueUserDataRequest)(nil), // 27: temporal.server.api.matchingservice.v1.UpdateTaskQueueUserDataRequest + (*ReplicateTaskQueueUserDataRequest)(nil), // 28: temporal.server.api.matchingservice.v1.ReplicateTaskQueueUserDataRequest + (*CheckTaskQueueUserDataPropagationRequest)(nil), // 29: temporal.server.api.matchingservice.v1.CheckTaskQueueUserDataPropagationRequest + (*CreateNexusEndpointRequest)(nil), // 30: temporal.server.api.matchingservice.v1.CreateNexusEndpointRequest + (*UpdateNexusEndpointRequest)(nil), // 31: temporal.server.api.matchingservice.v1.UpdateNexusEndpointRequest + (*DeleteNexusEndpointRequest)(nil), // 32: temporal.server.api.matchingservice.v1.DeleteNexusEndpointRequest + (*ListNexusEndpointsRequest)(nil), // 33: temporal.server.api.matchingservice.v1.ListNexusEndpointsRequest + (*PollWorkflowTaskQueueResponse)(nil), // 34: temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse + (*PollActivityTaskQueueResponse)(nil), // 35: temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse + (*AddWorkflowTaskResponse)(nil), // 36: temporal.server.api.matchingservice.v1.AddWorkflowTaskResponse + (*AddActivityTaskResponse)(nil), // 37: temporal.server.api.matchingservice.v1.AddActivityTaskResponse + (*QueryWorkflowResponse)(nil), // 38: temporal.server.api.matchingservice.v1.QueryWorkflowResponse + (*RespondQueryTaskCompletedResponse)(nil), // 39: temporal.server.api.matchingservice.v1.RespondQueryTaskCompletedResponse + (*DispatchNexusTaskResponse)(nil), // 40: temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse + (*PollNexusTaskQueueResponse)(nil), // 41: temporal.server.api.matchingservice.v1.PollNexusTaskQueueResponse + (*RespondNexusTaskCompletedResponse)(nil), // 42: temporal.server.api.matchingservice.v1.RespondNexusTaskCompletedResponse + (*RespondNexusTaskFailedResponse)(nil), // 43: temporal.server.api.matchingservice.v1.RespondNexusTaskFailedResponse + (*CancelOutstandingPollResponse)(nil), // 44: temporal.server.api.matchingservice.v1.CancelOutstandingPollResponse + (*DescribeTaskQueueResponse)(nil), // 45: temporal.server.api.matchingservice.v1.DescribeTaskQueueResponse + (*DescribeTaskQueuePartitionResponse)(nil), // 46: temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse + (*ListTaskQueuePartitionsResponse)(nil), // 47: temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsResponse + (*UpdateWorkerBuildIdCompatibilityResponse)(nil), // 48: temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityResponse + (*GetWorkerBuildIdCompatibilityResponse)(nil), // 49: temporal.server.api.matchingservice.v1.GetWorkerBuildIdCompatibilityResponse + (*GetTaskQueueUserDataResponse)(nil), // 50: temporal.server.api.matchingservice.v1.GetTaskQueueUserDataResponse + (*UpdateWorkerVersioningRulesResponse)(nil), // 51: temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesResponse + (*GetWorkerVersioningRulesResponse)(nil), // 52: temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesResponse + (*SyncDeploymentUserDataResponse)(nil), // 53: temporal.server.api.matchingservice.v1.SyncDeploymentUserDataResponse + (*GetTaskQueueStatsResponse)(nil), // 54: temporal.server.api.matchingservice.v1.GetTaskQueueStatsResponse + (*GetTaskQueuePartitionStatsResponse)(nil), // 55: temporal.server.api.matchingservice.v1.GetTaskQueuePartitionStatsResponse + (*ApplyTaskQueueUserDataReplicationEventResponse)(nil), // 56: temporal.server.api.matchingservice.v1.ApplyTaskQueueUserDataReplicationEventResponse + (*GetBuildIdTaskQueueMappingResponse)(nil), // 57: temporal.server.api.matchingservice.v1.GetBuildIdTaskQueueMappingResponse + (*ForceLoadTaskQueuePartitionResponse)(nil), // 58: temporal.server.api.matchingservice.v1.ForceLoadTaskQueuePartitionResponse + (*ForceUnloadTaskQueueResponse)(nil), // 59: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueueResponse + (*ForceUnloadTaskQueuePartitionResponse)(nil), // 60: temporal.server.api.matchingservice.v1.ForceUnloadTaskQueuePartitionResponse + (*UpdateTaskQueueUserDataResponse)(nil), // 61: temporal.server.api.matchingservice.v1.UpdateTaskQueueUserDataResponse + (*ReplicateTaskQueueUserDataResponse)(nil), // 62: temporal.server.api.matchingservice.v1.ReplicateTaskQueueUserDataResponse + (*CheckTaskQueueUserDataPropagationResponse)(nil), // 63: temporal.server.api.matchingservice.v1.CheckTaskQueueUserDataPropagationResponse + (*CreateNexusEndpointResponse)(nil), // 64: temporal.server.api.matchingservice.v1.CreateNexusEndpointResponse + (*UpdateNexusEndpointResponse)(nil), // 65: temporal.server.api.matchingservice.v1.UpdateNexusEndpointResponse + (*DeleteNexusEndpointResponse)(nil), // 66: temporal.server.api.matchingservice.v1.DeleteNexusEndpointResponse + (*ListNexusEndpointsResponse)(nil), // 67: temporal.server.api.matchingservice.v1.ListNexusEndpointsResponse } var file_temporal_server_api_matchingservice_v1_service_proto_depIdxs = []int32{ 0, // 0: temporal.server.api.matchingservice.v1.MatchingService.PollWorkflowTaskQueue:input_type -> temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueRequest @@ -169,52 +175,56 @@ var file_temporal_server_api_matchingservice_v1_service_proto_depIdxs = []int32{ 17, // 17: temporal.server.api.matchingservice.v1.MatchingService.UpdateWorkerVersioningRules:input_type -> temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesRequest 18, // 18: temporal.server.api.matchingservice.v1.MatchingService.GetWorkerVersioningRules:input_type -> temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesRequest 19, // 19: temporal.server.api.matchingservice.v1.MatchingService.SyncDeploymentUserData:input_type -> temporal.server.api.matchingservice.v1.SyncDeploymentUserDataRequest - 20, // 20: temporal.server.api.matchingservice.v1.MatchingService.ApplyTaskQueueUserDataReplicationEvent:input_type -> temporal.server.api.matchingservice.v1.ApplyTaskQueueUserDataReplicationEventRequest - 21, // 21: temporal.server.api.matchingservice.v1.MatchingService.GetBuildIdTaskQueueMapping:input_type -> temporal.server.api.matchingservice.v1.GetBuildIdTaskQueueMappingRequest - 22, // 22: temporal.server.api.matchingservice.v1.MatchingService.ForceLoadTaskQueuePartition:input_type -> temporal.server.api.matchingservice.v1.ForceLoadTaskQueuePartitionRequest - 23, // 23: temporal.server.api.matchingservice.v1.MatchingService.ForceUnloadTaskQueue:input_type -> temporal.server.api.matchingservice.v1.ForceUnloadTaskQueueRequest - 24, // 24: temporal.server.api.matchingservice.v1.MatchingService.ForceUnloadTaskQueuePartition:input_type -> temporal.server.api.matchingservice.v1.ForceUnloadTaskQueuePartitionRequest - 25, // 25: temporal.server.api.matchingservice.v1.MatchingService.UpdateTaskQueueUserData:input_type -> temporal.server.api.matchingservice.v1.UpdateTaskQueueUserDataRequest - 26, // 26: temporal.server.api.matchingservice.v1.MatchingService.ReplicateTaskQueueUserData:input_type -> temporal.server.api.matchingservice.v1.ReplicateTaskQueueUserDataRequest - 27, // 27: temporal.server.api.matchingservice.v1.MatchingService.CheckTaskQueueUserDataPropagation:input_type -> temporal.server.api.matchingservice.v1.CheckTaskQueueUserDataPropagationRequest - 28, // 28: temporal.server.api.matchingservice.v1.MatchingService.CreateNexusEndpoint:input_type -> temporal.server.api.matchingservice.v1.CreateNexusEndpointRequest - 29, // 29: temporal.server.api.matchingservice.v1.MatchingService.UpdateNexusEndpoint:input_type -> temporal.server.api.matchingservice.v1.UpdateNexusEndpointRequest - 30, // 30: temporal.server.api.matchingservice.v1.MatchingService.DeleteNexusEndpoint:input_type -> temporal.server.api.matchingservice.v1.DeleteNexusEndpointRequest - 31, // 31: temporal.server.api.matchingservice.v1.MatchingService.ListNexusEndpoints:input_type -> temporal.server.api.matchingservice.v1.ListNexusEndpointsRequest - 32, // 32: temporal.server.api.matchingservice.v1.MatchingService.PollWorkflowTaskQueue:output_type -> temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse - 33, // 33: temporal.server.api.matchingservice.v1.MatchingService.PollActivityTaskQueue:output_type -> temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse - 34, // 34: temporal.server.api.matchingservice.v1.MatchingService.AddWorkflowTask:output_type -> temporal.server.api.matchingservice.v1.AddWorkflowTaskResponse - 35, // 35: temporal.server.api.matchingservice.v1.MatchingService.AddActivityTask:output_type -> temporal.server.api.matchingservice.v1.AddActivityTaskResponse - 36, // 36: temporal.server.api.matchingservice.v1.MatchingService.QueryWorkflow:output_type -> temporal.server.api.matchingservice.v1.QueryWorkflowResponse - 37, // 37: temporal.server.api.matchingservice.v1.MatchingService.RespondQueryTaskCompleted:output_type -> temporal.server.api.matchingservice.v1.RespondQueryTaskCompletedResponse - 38, // 38: temporal.server.api.matchingservice.v1.MatchingService.DispatchNexusTask:output_type -> temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse - 39, // 39: temporal.server.api.matchingservice.v1.MatchingService.PollNexusTaskQueue:output_type -> temporal.server.api.matchingservice.v1.PollNexusTaskQueueResponse - 40, // 40: temporal.server.api.matchingservice.v1.MatchingService.RespondNexusTaskCompleted:output_type -> temporal.server.api.matchingservice.v1.RespondNexusTaskCompletedResponse - 41, // 41: temporal.server.api.matchingservice.v1.MatchingService.RespondNexusTaskFailed:output_type -> temporal.server.api.matchingservice.v1.RespondNexusTaskFailedResponse - 42, // 42: temporal.server.api.matchingservice.v1.MatchingService.CancelOutstandingPoll:output_type -> temporal.server.api.matchingservice.v1.CancelOutstandingPollResponse - 43, // 43: temporal.server.api.matchingservice.v1.MatchingService.DescribeTaskQueue:output_type -> temporal.server.api.matchingservice.v1.DescribeTaskQueueResponse - 44, // 44: temporal.server.api.matchingservice.v1.MatchingService.DescribeTaskQueuePartition:output_type -> temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse - 45, // 45: temporal.server.api.matchingservice.v1.MatchingService.ListTaskQueuePartitions:output_type -> temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsResponse - 46, // 46: temporal.server.api.matchingservice.v1.MatchingService.UpdateWorkerBuildIdCompatibility:output_type -> temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityResponse - 47, // 47: temporal.server.api.matchingservice.v1.MatchingService.GetWorkerBuildIdCompatibility:output_type -> temporal.server.api.matchingservice.v1.GetWorkerBuildIdCompatibilityResponse - 48, // 48: temporal.server.api.matchingservice.v1.MatchingService.GetTaskQueueUserData:output_type -> temporal.server.api.matchingservice.v1.GetTaskQueueUserDataResponse - 49, // 49: temporal.server.api.matchingservice.v1.MatchingService.UpdateWorkerVersioningRules:output_type -> temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesResponse - 50, // 50: temporal.server.api.matchingservice.v1.MatchingService.GetWorkerVersioningRules:output_type -> temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesResponse - 51, // 51: temporal.server.api.matchingservice.v1.MatchingService.SyncDeploymentUserData:output_type -> temporal.server.api.matchingservice.v1.SyncDeploymentUserDataResponse - 52, // 52: temporal.server.api.matchingservice.v1.MatchingService.ApplyTaskQueueUserDataReplicationEvent:output_type -> temporal.server.api.matchingservice.v1.ApplyTaskQueueUserDataReplicationEventResponse - 53, // 53: temporal.server.api.matchingservice.v1.MatchingService.GetBuildIdTaskQueueMapping:output_type -> temporal.server.api.matchingservice.v1.GetBuildIdTaskQueueMappingResponse - 54, // 54: temporal.server.api.matchingservice.v1.MatchingService.ForceLoadTaskQueuePartition:output_type -> temporal.server.api.matchingservice.v1.ForceLoadTaskQueuePartitionResponse - 55, // 55: temporal.server.api.matchingservice.v1.MatchingService.ForceUnloadTaskQueue:output_type -> temporal.server.api.matchingservice.v1.ForceUnloadTaskQueueResponse - 56, // 56: temporal.server.api.matchingservice.v1.MatchingService.ForceUnloadTaskQueuePartition:output_type -> temporal.server.api.matchingservice.v1.ForceUnloadTaskQueuePartitionResponse - 57, // 57: temporal.server.api.matchingservice.v1.MatchingService.UpdateTaskQueueUserData:output_type -> temporal.server.api.matchingservice.v1.UpdateTaskQueueUserDataResponse - 58, // 58: temporal.server.api.matchingservice.v1.MatchingService.ReplicateTaskQueueUserData:output_type -> temporal.server.api.matchingservice.v1.ReplicateTaskQueueUserDataResponse - 59, // 59: temporal.server.api.matchingservice.v1.MatchingService.CheckTaskQueueUserDataPropagation:output_type -> temporal.server.api.matchingservice.v1.CheckTaskQueueUserDataPropagationResponse - 60, // 60: temporal.server.api.matchingservice.v1.MatchingService.CreateNexusEndpoint:output_type -> temporal.server.api.matchingservice.v1.CreateNexusEndpointResponse - 61, // 61: temporal.server.api.matchingservice.v1.MatchingService.UpdateNexusEndpoint:output_type -> temporal.server.api.matchingservice.v1.UpdateNexusEndpointResponse - 62, // 62: temporal.server.api.matchingservice.v1.MatchingService.DeleteNexusEndpoint:output_type -> temporal.server.api.matchingservice.v1.DeleteNexusEndpointResponse - 63, // 63: temporal.server.api.matchingservice.v1.MatchingService.ListNexusEndpoints:output_type -> temporal.server.api.matchingservice.v1.ListNexusEndpointsResponse - 32, // [32:64] is the sub-list for method output_type - 0, // [0:32] is the sub-list for method input_type + 20, // 20: temporal.server.api.matchingservice.v1.MatchingService.GetTaskQueueStats:input_type -> temporal.server.api.matchingservice.v1.GetTaskQueueStatsRequest + 21, // 21: temporal.server.api.matchingservice.v1.MatchingService.GetTaskQueuePartitionStats:input_type -> temporal.server.api.matchingservice.v1.GetTaskQueuePartitionStatsRequest + 22, // 22: temporal.server.api.matchingservice.v1.MatchingService.ApplyTaskQueueUserDataReplicationEvent:input_type -> temporal.server.api.matchingservice.v1.ApplyTaskQueueUserDataReplicationEventRequest + 23, // 23: temporal.server.api.matchingservice.v1.MatchingService.GetBuildIdTaskQueueMapping:input_type -> temporal.server.api.matchingservice.v1.GetBuildIdTaskQueueMappingRequest + 24, // 24: temporal.server.api.matchingservice.v1.MatchingService.ForceLoadTaskQueuePartition:input_type -> temporal.server.api.matchingservice.v1.ForceLoadTaskQueuePartitionRequest + 25, // 25: temporal.server.api.matchingservice.v1.MatchingService.ForceUnloadTaskQueue:input_type -> temporal.server.api.matchingservice.v1.ForceUnloadTaskQueueRequest + 26, // 26: temporal.server.api.matchingservice.v1.MatchingService.ForceUnloadTaskQueuePartition:input_type -> temporal.server.api.matchingservice.v1.ForceUnloadTaskQueuePartitionRequest + 27, // 27: temporal.server.api.matchingservice.v1.MatchingService.UpdateTaskQueueUserData:input_type -> temporal.server.api.matchingservice.v1.UpdateTaskQueueUserDataRequest + 28, // 28: temporal.server.api.matchingservice.v1.MatchingService.ReplicateTaskQueueUserData:input_type -> temporal.server.api.matchingservice.v1.ReplicateTaskQueueUserDataRequest + 29, // 29: temporal.server.api.matchingservice.v1.MatchingService.CheckTaskQueueUserDataPropagation:input_type -> temporal.server.api.matchingservice.v1.CheckTaskQueueUserDataPropagationRequest + 30, // 30: temporal.server.api.matchingservice.v1.MatchingService.CreateNexusEndpoint:input_type -> temporal.server.api.matchingservice.v1.CreateNexusEndpointRequest + 31, // 31: temporal.server.api.matchingservice.v1.MatchingService.UpdateNexusEndpoint:input_type -> temporal.server.api.matchingservice.v1.UpdateNexusEndpointRequest + 32, // 32: temporal.server.api.matchingservice.v1.MatchingService.DeleteNexusEndpoint:input_type -> temporal.server.api.matchingservice.v1.DeleteNexusEndpointRequest + 33, // 33: temporal.server.api.matchingservice.v1.MatchingService.ListNexusEndpoints:input_type -> temporal.server.api.matchingservice.v1.ListNexusEndpointsRequest + 34, // 34: temporal.server.api.matchingservice.v1.MatchingService.PollWorkflowTaskQueue:output_type -> temporal.server.api.matchingservice.v1.PollWorkflowTaskQueueResponse + 35, // 35: temporal.server.api.matchingservice.v1.MatchingService.PollActivityTaskQueue:output_type -> temporal.server.api.matchingservice.v1.PollActivityTaskQueueResponse + 36, // 36: temporal.server.api.matchingservice.v1.MatchingService.AddWorkflowTask:output_type -> temporal.server.api.matchingservice.v1.AddWorkflowTaskResponse + 37, // 37: temporal.server.api.matchingservice.v1.MatchingService.AddActivityTask:output_type -> temporal.server.api.matchingservice.v1.AddActivityTaskResponse + 38, // 38: temporal.server.api.matchingservice.v1.MatchingService.QueryWorkflow:output_type -> temporal.server.api.matchingservice.v1.QueryWorkflowResponse + 39, // 39: temporal.server.api.matchingservice.v1.MatchingService.RespondQueryTaskCompleted:output_type -> temporal.server.api.matchingservice.v1.RespondQueryTaskCompletedResponse + 40, // 40: temporal.server.api.matchingservice.v1.MatchingService.DispatchNexusTask:output_type -> temporal.server.api.matchingservice.v1.DispatchNexusTaskResponse + 41, // 41: temporal.server.api.matchingservice.v1.MatchingService.PollNexusTaskQueue:output_type -> temporal.server.api.matchingservice.v1.PollNexusTaskQueueResponse + 42, // 42: temporal.server.api.matchingservice.v1.MatchingService.RespondNexusTaskCompleted:output_type -> temporal.server.api.matchingservice.v1.RespondNexusTaskCompletedResponse + 43, // 43: temporal.server.api.matchingservice.v1.MatchingService.RespondNexusTaskFailed:output_type -> temporal.server.api.matchingservice.v1.RespondNexusTaskFailedResponse + 44, // 44: temporal.server.api.matchingservice.v1.MatchingService.CancelOutstandingPoll:output_type -> temporal.server.api.matchingservice.v1.CancelOutstandingPollResponse + 45, // 45: temporal.server.api.matchingservice.v1.MatchingService.DescribeTaskQueue:output_type -> temporal.server.api.matchingservice.v1.DescribeTaskQueueResponse + 46, // 46: temporal.server.api.matchingservice.v1.MatchingService.DescribeTaskQueuePartition:output_type -> temporal.server.api.matchingservice.v1.DescribeTaskQueuePartitionResponse + 47, // 47: temporal.server.api.matchingservice.v1.MatchingService.ListTaskQueuePartitions:output_type -> temporal.server.api.matchingservice.v1.ListTaskQueuePartitionsResponse + 48, // 48: temporal.server.api.matchingservice.v1.MatchingService.UpdateWorkerBuildIdCompatibility:output_type -> temporal.server.api.matchingservice.v1.UpdateWorkerBuildIdCompatibilityResponse + 49, // 49: temporal.server.api.matchingservice.v1.MatchingService.GetWorkerBuildIdCompatibility:output_type -> temporal.server.api.matchingservice.v1.GetWorkerBuildIdCompatibilityResponse + 50, // 50: temporal.server.api.matchingservice.v1.MatchingService.GetTaskQueueUserData:output_type -> temporal.server.api.matchingservice.v1.GetTaskQueueUserDataResponse + 51, // 51: temporal.server.api.matchingservice.v1.MatchingService.UpdateWorkerVersioningRules:output_type -> temporal.server.api.matchingservice.v1.UpdateWorkerVersioningRulesResponse + 52, // 52: temporal.server.api.matchingservice.v1.MatchingService.GetWorkerVersioningRules:output_type -> temporal.server.api.matchingservice.v1.GetWorkerVersioningRulesResponse + 53, // 53: temporal.server.api.matchingservice.v1.MatchingService.SyncDeploymentUserData:output_type -> temporal.server.api.matchingservice.v1.SyncDeploymentUserDataResponse + 54, // 54: temporal.server.api.matchingservice.v1.MatchingService.GetTaskQueueStats:output_type -> temporal.server.api.matchingservice.v1.GetTaskQueueStatsResponse + 55, // 55: temporal.server.api.matchingservice.v1.MatchingService.GetTaskQueuePartitionStats:output_type -> temporal.server.api.matchingservice.v1.GetTaskQueuePartitionStatsResponse + 56, // 56: temporal.server.api.matchingservice.v1.MatchingService.ApplyTaskQueueUserDataReplicationEvent:output_type -> temporal.server.api.matchingservice.v1.ApplyTaskQueueUserDataReplicationEventResponse + 57, // 57: temporal.server.api.matchingservice.v1.MatchingService.GetBuildIdTaskQueueMapping:output_type -> temporal.server.api.matchingservice.v1.GetBuildIdTaskQueueMappingResponse + 58, // 58: temporal.server.api.matchingservice.v1.MatchingService.ForceLoadTaskQueuePartition:output_type -> temporal.server.api.matchingservice.v1.ForceLoadTaskQueuePartitionResponse + 59, // 59: temporal.server.api.matchingservice.v1.MatchingService.ForceUnloadTaskQueue:output_type -> temporal.server.api.matchingservice.v1.ForceUnloadTaskQueueResponse + 60, // 60: temporal.server.api.matchingservice.v1.MatchingService.ForceUnloadTaskQueuePartition:output_type -> temporal.server.api.matchingservice.v1.ForceUnloadTaskQueuePartitionResponse + 61, // 61: temporal.server.api.matchingservice.v1.MatchingService.UpdateTaskQueueUserData:output_type -> temporal.server.api.matchingservice.v1.UpdateTaskQueueUserDataResponse + 62, // 62: temporal.server.api.matchingservice.v1.MatchingService.ReplicateTaskQueueUserData:output_type -> temporal.server.api.matchingservice.v1.ReplicateTaskQueueUserDataResponse + 63, // 63: temporal.server.api.matchingservice.v1.MatchingService.CheckTaskQueueUserDataPropagation:output_type -> temporal.server.api.matchingservice.v1.CheckTaskQueueUserDataPropagationResponse + 64, // 64: temporal.server.api.matchingservice.v1.MatchingService.CreateNexusEndpoint:output_type -> temporal.server.api.matchingservice.v1.CreateNexusEndpointResponse + 65, // 65: temporal.server.api.matchingservice.v1.MatchingService.UpdateNexusEndpoint:output_type -> temporal.server.api.matchingservice.v1.UpdateNexusEndpointResponse + 66, // 66: temporal.server.api.matchingservice.v1.MatchingService.DeleteNexusEndpoint:output_type -> temporal.server.api.matchingservice.v1.DeleteNexusEndpointResponse + 67, // 67: temporal.server.api.matchingservice.v1.MatchingService.ListNexusEndpoints:output_type -> temporal.server.api.matchingservice.v1.ListNexusEndpointsResponse + 34, // [34:68] is the sub-list for method output_type + 0, // [0:34] 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/matchingservice/v1/service_grpc.pb.go b/api/matchingservice/v1/service_grpc.pb.go index 54d5ffd9527..b5944d2f2cb 100644 --- a/api/matchingservice/v1/service_grpc.pb.go +++ b/api/matchingservice/v1/service_grpc.pb.go @@ -62,6 +62,8 @@ const ( MatchingService_UpdateWorkerVersioningRules_FullMethodName = "/temporal.server.api.matchingservice.v1.MatchingService/UpdateWorkerVersioningRules" MatchingService_GetWorkerVersioningRules_FullMethodName = "/temporal.server.api.matchingservice.v1.MatchingService/GetWorkerVersioningRules" MatchingService_SyncDeploymentUserData_FullMethodName = "/temporal.server.api.matchingservice.v1.MatchingService/SyncDeploymentUserData" + MatchingService_GetTaskQueueStats_FullMethodName = "/temporal.server.api.matchingservice.v1.MatchingService/GetTaskQueueStats" + MatchingService_GetTaskQueuePartitionStats_FullMethodName = "/temporal.server.api.matchingservice.v1.MatchingService/GetTaskQueuePartitionStats" MatchingService_ApplyTaskQueueUserDataReplicationEvent_FullMethodName = "/temporal.server.api.matchingservice.v1.MatchingService/ApplyTaskQueueUserDataReplicationEvent" MatchingService_GetBuildIdTaskQueueMapping_FullMethodName = "/temporal.server.api.matchingservice.v1.MatchingService/GetBuildIdTaskQueueMapping" MatchingService_ForceLoadTaskQueuePartition_FullMethodName = "/temporal.server.api.matchingservice.v1.MatchingService/ForceLoadTaskQueuePartition" @@ -114,6 +116,7 @@ type MatchingServiceClient interface { CancelOutstandingPoll(ctx context.Context, in *CancelOutstandingPollRequest, opts ...grpc.CallOption) (*CancelOutstandingPollResponse, error) // DescribeTaskQueue returns information about the target task queue, right now this API returns the // pollers which polled this task queue in last few minutes. + // @deprecate TODO DescribeTaskQueue(ctx context.Context, in *DescribeTaskQueueRequest, opts ...grpc.CallOption) (*DescribeTaskQueueResponse, error) // DescribeTaskQueuePartition returns information about the target task queue partition. DescribeTaskQueuePartition(ctx context.Context, in *DescribeTaskQueuePartitionRequest, opts ...grpc.CallOption) (*DescribeTaskQueuePartitionResponse, error) @@ -150,6 +153,10 @@ type MatchingServiceClient interface { GetWorkerVersioningRules(ctx context.Context, in *GetWorkerVersioningRulesRequest, opts ...grpc.CallOption) (*GetWorkerVersioningRulesResponse, error) // This request should always be routed to the node holding the root partition of the workflow task queue. SyncDeploymentUserData(ctx context.Context, in *SyncDeploymentUserDataRequest, opts ...grpc.CallOption) (*SyncDeploymentUserDataResponse, error) + // TODO + GetTaskQueueStats(ctx context.Context, in *GetTaskQueueStatsRequest, opts ...grpc.CallOption) (*GetTaskQueueStatsResponse, error) + // TODO + GetTaskQueuePartitionStats(ctx context.Context, in *GetTaskQueuePartitionStatsRequest, opts ...grpc.CallOption) (*GetTaskQueuePartitionStatsResponse, error) // Apply a user data replication event. ApplyTaskQueueUserDataReplicationEvent(ctx context.Context, in *ApplyTaskQueueUserDataReplicationEventRequest, opts ...grpc.CallOption) (*ApplyTaskQueueUserDataReplicationEventResponse, error) // Gets all task queue names mapped to a given build ID @@ -403,6 +410,24 @@ func (c *matchingServiceClient) SyncDeploymentUserData(ctx context.Context, in * return out, nil } +func (c *matchingServiceClient) GetTaskQueueStats(ctx context.Context, in *GetTaskQueueStatsRequest, opts ...grpc.CallOption) (*GetTaskQueueStatsResponse, error) { + out := new(GetTaskQueueStatsResponse) + err := c.cc.Invoke(ctx, MatchingService_GetTaskQueueStats_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *matchingServiceClient) GetTaskQueuePartitionStats(ctx context.Context, in *GetTaskQueuePartitionStatsRequest, opts ...grpc.CallOption) (*GetTaskQueuePartitionStatsResponse, error) { + out := new(GetTaskQueuePartitionStatsResponse) + err := c.cc.Invoke(ctx, MatchingService_GetTaskQueuePartitionStats_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *matchingServiceClient) ApplyTaskQueueUserDataReplicationEvent(ctx context.Context, in *ApplyTaskQueueUserDataReplicationEventRequest, opts ...grpc.CallOption) (*ApplyTaskQueueUserDataReplicationEventResponse, error) { out := new(ApplyTaskQueueUserDataReplicationEventResponse) err := c.cc.Invoke(ctx, MatchingService_ApplyTaskQueueUserDataReplicationEvent_FullMethodName, in, out, opts...) @@ -549,6 +574,7 @@ type MatchingServiceServer interface { CancelOutstandingPoll(context.Context, *CancelOutstandingPollRequest) (*CancelOutstandingPollResponse, error) // DescribeTaskQueue returns information about the target task queue, right now this API returns the // pollers which polled this task queue in last few minutes. + // @deprecate TODO DescribeTaskQueue(context.Context, *DescribeTaskQueueRequest) (*DescribeTaskQueueResponse, error) // DescribeTaskQueuePartition returns information about the target task queue partition. DescribeTaskQueuePartition(context.Context, *DescribeTaskQueuePartitionRequest) (*DescribeTaskQueuePartitionResponse, error) @@ -585,6 +611,10 @@ type MatchingServiceServer interface { GetWorkerVersioningRules(context.Context, *GetWorkerVersioningRulesRequest) (*GetWorkerVersioningRulesResponse, error) // This request should always be routed to the node holding the root partition of the workflow task queue. SyncDeploymentUserData(context.Context, *SyncDeploymentUserDataRequest) (*SyncDeploymentUserDataResponse, error) + // TODO + GetTaskQueueStats(context.Context, *GetTaskQueueStatsRequest) (*GetTaskQueueStatsResponse, error) + // TODO + GetTaskQueuePartitionStats(context.Context, *GetTaskQueuePartitionStatsRequest) (*GetTaskQueuePartitionStatsResponse, error) // Apply a user data replication event. ApplyTaskQueueUserDataReplicationEvent(context.Context, *ApplyTaskQueueUserDataReplicationEventRequest) (*ApplyTaskQueueUserDataReplicationEventResponse, error) // Gets all task queue names mapped to a given build ID @@ -715,6 +745,12 @@ func (UnimplementedMatchingServiceServer) GetWorkerVersioningRules(context.Conte func (UnimplementedMatchingServiceServer) SyncDeploymentUserData(context.Context, *SyncDeploymentUserDataRequest) (*SyncDeploymentUserDataResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SyncDeploymentUserData not implemented") } +func (UnimplementedMatchingServiceServer) GetTaskQueueStats(context.Context, *GetTaskQueueStatsRequest) (*GetTaskQueueStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTaskQueueStats not implemented") +} +func (UnimplementedMatchingServiceServer) GetTaskQueuePartitionStats(context.Context, *GetTaskQueuePartitionStatsRequest) (*GetTaskQueuePartitionStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTaskQueuePartitionStats not implemented") +} func (UnimplementedMatchingServiceServer) ApplyTaskQueueUserDataReplicationEvent(context.Context, *ApplyTaskQueueUserDataReplicationEventRequest) (*ApplyTaskQueueUserDataReplicationEventResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ApplyTaskQueueUserDataReplicationEvent not implemented") } @@ -1124,6 +1160,42 @@ func _MatchingService_SyncDeploymentUserData_Handler(srv interface{}, ctx contex return interceptor(ctx, in, info, handler) } +func _MatchingService_GetTaskQueueStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTaskQueueStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MatchingServiceServer).GetTaskQueueStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MatchingService_GetTaskQueueStats_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MatchingServiceServer).GetTaskQueueStats(ctx, req.(*GetTaskQueueStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MatchingService_GetTaskQueuePartitionStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTaskQueuePartitionStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MatchingServiceServer).GetTaskQueuePartitionStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MatchingService_GetTaskQueuePartitionStats_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MatchingServiceServer).GetTaskQueuePartitionStats(ctx, req.(*GetTaskQueuePartitionStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _MatchingService_ApplyTaskQueueUserDataReplicationEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ApplyTaskQueueUserDataReplicationEventRequest) if err := dec(in); err != nil { @@ -1427,6 +1499,14 @@ var MatchingService_ServiceDesc = grpc.ServiceDesc{ MethodName: "SyncDeploymentUserData", Handler: _MatchingService_SyncDeploymentUserData_Handler, }, + { + MethodName: "GetTaskQueueStats", + Handler: _MatchingService_GetTaskQueueStats_Handler, + }, + { + MethodName: "GetTaskQueuePartitionStats", + Handler: _MatchingService_GetTaskQueuePartitionStats_Handler, + }, { MethodName: "ApplyTaskQueueUserDataReplicationEvent", Handler: _MatchingService_ApplyTaskQueueUserDataReplicationEvent_Handler, diff --git a/api/matchingservicemock/v1/service_grpc.pb.mock.go b/api/matchingservicemock/v1/service_grpc.pb.mock.go index 227d0068354..8a6fde69eb7 100644 --- a/api/matchingservicemock/v1/service_grpc.pb.mock.go +++ b/api/matchingservicemock/v1/service_grpc.pb.mock.go @@ -346,6 +346,46 @@ func (mr *MockMatchingServiceClientMockRecorder) GetBuildIdTaskQueueMapping(ctx, return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBuildIdTaskQueueMapping", reflect.TypeOf((*MockMatchingServiceClient)(nil).GetBuildIdTaskQueueMapping), varargs...) } +// GetTaskQueuePartitionStats mocks base method. +func (m *MockMatchingServiceClient) GetTaskQueuePartitionStats(ctx context.Context, in *matchingservice.GetTaskQueuePartitionStatsRequest, opts ...grpc.CallOption) (*matchingservice.GetTaskQueuePartitionStatsResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetTaskQueuePartitionStats", varargs...) + ret0, _ := ret[0].(*matchingservice.GetTaskQueuePartitionStatsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTaskQueuePartitionStats indicates an expected call of GetTaskQueuePartitionStats. +func (mr *MockMatchingServiceClientMockRecorder) GetTaskQueuePartitionStats(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, "GetTaskQueuePartitionStats", reflect.TypeOf((*MockMatchingServiceClient)(nil).GetTaskQueuePartitionStats), varargs...) +} + +// GetTaskQueueStats mocks base method. +func (m *MockMatchingServiceClient) GetTaskQueueStats(ctx context.Context, in *matchingservice.GetTaskQueueStatsRequest, opts ...grpc.CallOption) (*matchingservice.GetTaskQueueStatsResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetTaskQueueStats", varargs...) + ret0, _ := ret[0].(*matchingservice.GetTaskQueueStatsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTaskQueueStats indicates an expected call of GetTaskQueueStats. +func (mr *MockMatchingServiceClientMockRecorder) GetTaskQueueStats(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, "GetTaskQueueStats", reflect.TypeOf((*MockMatchingServiceClient)(nil).GetTaskQueueStats), varargs...) +} + // GetTaskQueueUserData mocks base method. func (m *MockMatchingServiceClient) GetTaskQueueUserData(ctx context.Context, in *matchingservice.GetTaskQueueUserDataRequest, opts ...grpc.CallOption) (*matchingservice.GetTaskQueueUserDataResponse, error) { m.ctrl.T.Helper() @@ -940,6 +980,36 @@ func (mr *MockMatchingServiceServerMockRecorder) GetBuildIdTaskQueueMapping(arg0 return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBuildIdTaskQueueMapping", reflect.TypeOf((*MockMatchingServiceServer)(nil).GetBuildIdTaskQueueMapping), arg0, arg1) } +// GetTaskQueuePartitionStats mocks base method. +func (m *MockMatchingServiceServer) GetTaskQueuePartitionStats(arg0 context.Context, arg1 *matchingservice.GetTaskQueuePartitionStatsRequest) (*matchingservice.GetTaskQueuePartitionStatsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTaskQueuePartitionStats", arg0, arg1) + ret0, _ := ret[0].(*matchingservice.GetTaskQueuePartitionStatsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTaskQueuePartitionStats indicates an expected call of GetTaskQueuePartitionStats. +func (mr *MockMatchingServiceServerMockRecorder) GetTaskQueuePartitionStats(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTaskQueuePartitionStats", reflect.TypeOf((*MockMatchingServiceServer)(nil).GetTaskQueuePartitionStats), arg0, arg1) +} + +// GetTaskQueueStats mocks base method. +func (m *MockMatchingServiceServer) GetTaskQueueStats(arg0 context.Context, arg1 *matchingservice.GetTaskQueueStatsRequest) (*matchingservice.GetTaskQueueStatsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetTaskQueueStats", arg0, arg1) + ret0, _ := ret[0].(*matchingservice.GetTaskQueueStatsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTaskQueueStats indicates an expected call of GetTaskQueueStats. +func (mr *MockMatchingServiceServerMockRecorder) GetTaskQueueStats(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTaskQueueStats", reflect.TypeOf((*MockMatchingServiceServer)(nil).GetTaskQueueStats), arg0, arg1) +} + // GetTaskQueueUserData mocks base method. func (m *MockMatchingServiceServer) GetTaskQueueUserData(arg0 context.Context, arg1 *matchingservice.GetTaskQueueUserDataRequest) (*matchingservice.GetTaskQueueUserDataResponse, error) { m.ctrl.T.Helper() diff --git a/api/taskqueue/v1/message.go-helpers.pb.go b/api/taskqueue/v1/message.go-helpers.pb.go index d7fa45cae47..0e2a6f6fd06 100644 --- a/api/taskqueue/v1/message.go-helpers.pb.go +++ b/api/taskqueue/v1/message.go-helpers.pb.go @@ -287,3 +287,40 @@ func (this *TaskForwardInfo) Equal(that interface{}) bool { return proto.Equal(this, that1) } + +// Marshal an object of type DetailedTaskQueueStats to the protobuf v3 wire format +func (val *DetailedTaskQueueStats) Marshal() ([]byte, error) { + return proto.Marshal(val) +} + +// Unmarshal an object of type DetailedTaskQueueStats from the protobuf v3 wire format +func (val *DetailedTaskQueueStats) Unmarshal(buf []byte) error { + return proto.Unmarshal(buf, val) +} + +// Size returns the size of the object, in bytes, once serialized +func (val *DetailedTaskQueueStats) Size() int { + return proto.Size(val) +} + +// Equal returns whether two DetailedTaskQueueStats 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 *DetailedTaskQueueStats) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + var that1 *DetailedTaskQueueStats + switch t := that.(type) { + case *DetailedTaskQueueStats: + that1 = t + case DetailedTaskQueueStats: + that1 = &t + default: + return false + } + + return proto.Equal(this, that1) +} diff --git a/api/taskqueue/v1/message.pb.go b/api/taskqueue/v1/message.pb.go index bab1e51caa2..bd9c09d8223 100644 --- a/api/taskqueue/v1/message.pb.go +++ b/api/taskqueue/v1/message.pb.go @@ -600,6 +600,67 @@ func (x *TaskForwardInfo) GetDispatchVersionSet() string { return "" } +// TODO +type DetailedTaskQueueStats struct { + state protoimpl.MessageState `protogen:"open.v1"` + TaskQueue *v13.TaskQueue `protobuf:"bytes,1,opt,name=task_queue,json=taskQueue,proto3" json:"task_queue,omitempty"` + TaskQueueType v1.TaskQueueType `protobuf:"varint,2,opt,name=task_queue_type,json=taskQueueType,proto3,enum=temporal.api.enums.v1.TaskQueueType" json:"task_queue_type,omitempty"` + BacklogCountHint int64 `protobuf:"varint,3,opt,name=backlog_count_hint,json=backlogCountHint,proto3" json:"backlog_count_hint,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DetailedTaskQueueStats) Reset() { + *x = DetailedTaskQueueStats{} + mi := &file_temporal_server_api_taskqueue_v1_message_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DetailedTaskQueueStats) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DetailedTaskQueueStats) ProtoMessage() {} + +func (x *DetailedTaskQueueStats) ProtoReflect() protoreflect.Message { + mi := &file_temporal_server_api_taskqueue_v1_message_proto_msgTypes[7] + 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 DetailedTaskQueueStats.ProtoReflect.Descriptor instead. +func (*DetailedTaskQueueStats) Descriptor() ([]byte, []int) { + return file_temporal_server_api_taskqueue_v1_message_proto_rawDescGZIP(), []int{7} +} + +func (x *DetailedTaskQueueStats) GetTaskQueue() *v13.TaskQueue { + if x != nil { + return x.TaskQueue + } + return nil +} + +func (x *DetailedTaskQueueStats) GetTaskQueueType() v1.TaskQueueType { + if x != nil { + return x.TaskQueueType + } + return v1.TaskQueueType(0) +} + +func (x *DetailedTaskQueueStats) GetBacklogCountHint() int64 { + if x != nil { + return x.BacklogCountHint + } + return 0 +} + var File_temporal_server_api_taskqueue_v1_message_proto protoreflect.FileDescriptor const file_temporal_server_api_taskqueue_v1_message_proto_rawDesc = "" + @@ -645,7 +706,12 @@ const file_temporal_server_api_taskqueue_v1_message_proto_rawDesc = "" + "taskSource\x12Z\n" + "\rredirect_info\x18\x03 \x01(\v25.temporal.server.api.taskqueue.v1.BuildIdRedirectInfoR\fredirectInfo\x12*\n" + "\x11dispatch_build_id\x18\x04 \x01(\tR\x0fdispatchBuildId\x120\n" + - "\x14dispatch_version_set\x18\x05 \x01(\tR\x12dispatchVersionSetB2Z0go.temporal.io/server/api/taskqueue/v1;taskqueueb\x06proto3" + "\x14dispatch_version_set\x18\x05 \x01(\tR\x12dispatchVersionSet\"\xd9\x01\n" + + "\x16DetailedTaskQueueStats\x12C\n" + + "\n" + + "task_queue\x18\x01 \x01(\v2$.temporal.api.taskqueue.v1.TaskQueueR\ttaskQueue\x12L\n" + + "\x0ftask_queue_type\x18\x02 \x01(\x0e2$.temporal.api.enums.v1.TaskQueueTypeR\rtaskQueueType\x12,\n" + + "\x12backlog_count_hint\x18\x03 \x01(\x03R\x10backlogCountHintB2Z0go.temporal.io/server/api/taskqueue/v1;taskqueueb\x06proto3" var ( file_temporal_server_api_taskqueue_v1_message_proto_rawDescOnce sync.Once @@ -659,7 +725,7 @@ func file_temporal_server_api_taskqueue_v1_message_proto_rawDescGZIP() []byte { return file_temporal_server_api_taskqueue_v1_message_proto_rawDescData } -var file_temporal_server_api_taskqueue_v1_message_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_temporal_server_api_taskqueue_v1_message_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_temporal_server_api_taskqueue_v1_message_proto_goTypes = []any{ (*TaskVersionDirective)(nil), // 0: temporal.server.api.taskqueue.v1.TaskVersionDirective (*InternalTaskQueueStatus)(nil), // 1: temporal.server.api.taskqueue.v1.InternalTaskQueueStatus @@ -668,34 +734,38 @@ var file_temporal_server_api_taskqueue_v1_message_proto_goTypes = []any{ (*TaskQueuePartition)(nil), // 4: temporal.server.api.taskqueue.v1.TaskQueuePartition (*BuildIdRedirectInfo)(nil), // 5: temporal.server.api.taskqueue.v1.BuildIdRedirectInfo (*TaskForwardInfo)(nil), // 6: temporal.server.api.taskqueue.v1.TaskForwardInfo - (*emptypb.Empty)(nil), // 7: google.protobuf.Empty - (v1.VersioningBehavior)(0), // 8: temporal.api.enums.v1.VersioningBehavior - (*v11.Deployment)(nil), // 9: temporal.api.deployment.v1.Deployment - (*v12.WorkerDeploymentVersion)(nil), // 10: temporal.server.api.deployment.v1.WorkerDeploymentVersion - (*v13.TaskIdBlock)(nil), // 11: temporal.api.taskqueue.v1.TaskIdBlock - (*v13.PollerInfo)(nil), // 12: temporal.api.taskqueue.v1.PollerInfo - (*v13.TaskQueueStats)(nil), // 13: temporal.api.taskqueue.v1.TaskQueueStats - (v1.TaskQueueType)(0), // 14: temporal.api.enums.v1.TaskQueueType - (v14.TaskSource)(0), // 15: temporal.server.api.enums.v1.TaskSource + (*DetailedTaskQueueStats)(nil), // 7: temporal.server.api.taskqueue.v1.DetailedTaskQueueStats + (*emptypb.Empty)(nil), // 8: google.protobuf.Empty + (v1.VersioningBehavior)(0), // 9: temporal.api.enums.v1.VersioningBehavior + (*v11.Deployment)(nil), // 10: temporal.api.deployment.v1.Deployment + (*v12.WorkerDeploymentVersion)(nil), // 11: temporal.server.api.deployment.v1.WorkerDeploymentVersion + (*v13.TaskIdBlock)(nil), // 12: temporal.api.taskqueue.v1.TaskIdBlock + (*v13.PollerInfo)(nil), // 13: temporal.api.taskqueue.v1.PollerInfo + (*v13.TaskQueueStats)(nil), // 14: temporal.api.taskqueue.v1.TaskQueueStats + (v1.TaskQueueType)(0), // 15: temporal.api.enums.v1.TaskQueueType + (v14.TaskSource)(0), // 16: temporal.server.api.enums.v1.TaskSource + (*v13.TaskQueue)(nil), // 17: temporal.api.taskqueue.v1.TaskQueue } var file_temporal_server_api_taskqueue_v1_message_proto_depIdxs = []int32{ - 7, // 0: temporal.server.api.taskqueue.v1.TaskVersionDirective.use_assignment_rules:type_name -> google.protobuf.Empty - 8, // 1: temporal.server.api.taskqueue.v1.TaskVersionDirective.behavior:type_name -> temporal.api.enums.v1.VersioningBehavior - 9, // 2: temporal.server.api.taskqueue.v1.TaskVersionDirective.deployment:type_name -> temporal.api.deployment.v1.Deployment - 10, // 3: temporal.server.api.taskqueue.v1.TaskVersionDirective.deployment_version:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentVersion - 11, // 4: temporal.server.api.taskqueue.v1.InternalTaskQueueStatus.task_id_block:type_name -> temporal.api.taskqueue.v1.TaskIdBlock + 8, // 0: temporal.server.api.taskqueue.v1.TaskVersionDirective.use_assignment_rules:type_name -> google.protobuf.Empty + 9, // 1: temporal.server.api.taskqueue.v1.TaskVersionDirective.behavior:type_name -> temporal.api.enums.v1.VersioningBehavior + 10, // 2: temporal.server.api.taskqueue.v1.TaskVersionDirective.deployment:type_name -> temporal.api.deployment.v1.Deployment + 11, // 3: temporal.server.api.taskqueue.v1.TaskVersionDirective.deployment_version:type_name -> temporal.server.api.deployment.v1.WorkerDeploymentVersion + 12, // 4: temporal.server.api.taskqueue.v1.InternalTaskQueueStatus.task_id_block:type_name -> temporal.api.taskqueue.v1.TaskIdBlock 3, // 5: temporal.server.api.taskqueue.v1.TaskQueueVersionInfoInternal.physical_task_queue_info:type_name -> temporal.server.api.taskqueue.v1.PhysicalTaskQueueInfo - 12, // 6: temporal.server.api.taskqueue.v1.PhysicalTaskQueueInfo.pollers:type_name -> temporal.api.taskqueue.v1.PollerInfo - 13, // 7: temporal.server.api.taskqueue.v1.PhysicalTaskQueueInfo.task_queue_stats:type_name -> temporal.api.taskqueue.v1.TaskQueueStats + 13, // 6: temporal.server.api.taskqueue.v1.PhysicalTaskQueueInfo.pollers:type_name -> temporal.api.taskqueue.v1.PollerInfo + 14, // 7: temporal.server.api.taskqueue.v1.PhysicalTaskQueueInfo.task_queue_stats:type_name -> temporal.api.taskqueue.v1.TaskQueueStats 1, // 8: temporal.server.api.taskqueue.v1.PhysicalTaskQueueInfo.internal_task_queue_status:type_name -> temporal.server.api.taskqueue.v1.InternalTaskQueueStatus - 14, // 9: temporal.server.api.taskqueue.v1.TaskQueuePartition.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType - 15, // 10: temporal.server.api.taskqueue.v1.TaskForwardInfo.task_source:type_name -> temporal.server.api.enums.v1.TaskSource + 15, // 9: temporal.server.api.taskqueue.v1.TaskQueuePartition.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType + 16, // 10: temporal.server.api.taskqueue.v1.TaskForwardInfo.task_source:type_name -> temporal.server.api.enums.v1.TaskSource 5, // 11: temporal.server.api.taskqueue.v1.TaskForwardInfo.redirect_info:type_name -> temporal.server.api.taskqueue.v1.BuildIdRedirectInfo - 12, // [12:12] is the sub-list for method output_type - 12, // [12:12] is the sub-list for method input_type - 12, // [12:12] is the sub-list for extension type_name - 12, // [12:12] is the sub-list for extension extendee - 0, // [0:12] is the sub-list for field type_name + 17, // 12: temporal.server.api.taskqueue.v1.DetailedTaskQueueStats.task_queue:type_name -> temporal.api.taskqueue.v1.TaskQueue + 15, // 13: temporal.server.api.taskqueue.v1.DetailedTaskQueueStats.task_queue_type:type_name -> temporal.api.enums.v1.TaskQueueType + 14, // [14:14] is the sub-list for method output_type + 14, // [14:14] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name } func init() { file_temporal_server_api_taskqueue_v1_message_proto_init() } @@ -717,7 +787,7 @@ func file_temporal_server_api_taskqueue_v1_message_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_taskqueue_v1_message_proto_rawDesc), len(file_temporal_server_api_taskqueue_v1_message_proto_rawDesc)), NumEnums: 0, - NumMessages: 7, + NumMessages: 8, NumExtensions: 0, NumServices: 0, }, diff --git a/api/workflowservice/v1/request_response.go-helpers.pb.go b/api/workflowservice/v1/request_response.go-helpers.pb.go new file mode 100644 index 00000000000..1e5e243210d --- /dev/null +++ b/api/workflowservice/v1/request_response.go-helpers.pb.go @@ -0,0 +1,104 @@ +// The MIT License +// +// Copyright (c) 2020 Temporal Technologies Inc. All rights reserved. +// +// Copyright (c) 2020 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +// Code generated by protoc-gen-go-helpers. DO NOT EDIT. +package workflowservice + +import ( + "google.golang.org/protobuf/proto" +) + +// Marshal an object of type GetDeploymentStatsRequest to the protobuf v3 wire format +func (val *GetDeploymentStatsRequest) Marshal() ([]byte, error) { + return proto.Marshal(val) +} + +// Unmarshal an object of type GetDeploymentStatsRequest from the protobuf v3 wire format +func (val *GetDeploymentStatsRequest) Unmarshal(buf []byte) error { + return proto.Unmarshal(buf, val) +} + +// Size returns the size of the object, in bytes, once serialized +func (val *GetDeploymentStatsRequest) Size() int { + return proto.Size(val) +} + +// Equal returns whether two GetDeploymentStatsRequest 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 *GetDeploymentStatsRequest) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + var that1 *GetDeploymentStatsRequest + switch t := that.(type) { + case *GetDeploymentStatsRequest: + that1 = t + case GetDeploymentStatsRequest: + that1 = &t + default: + return false + } + + return proto.Equal(this, that1) +} + +// Marshal an object of type GetDeploymentStatsResponse to the protobuf v3 wire format +func (val *GetDeploymentStatsResponse) Marshal() ([]byte, error) { + return proto.Marshal(val) +} + +// Unmarshal an object of type GetDeploymentStatsResponse from the protobuf v3 wire format +func (val *GetDeploymentStatsResponse) Unmarshal(buf []byte) error { + return proto.Unmarshal(buf, val) +} + +// Size returns the size of the object, in bytes, once serialized +func (val *GetDeploymentStatsResponse) Size() int { + return proto.Size(val) +} + +// Equal returns whether two GetDeploymentStatsResponse 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 *GetDeploymentStatsResponse) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + var that1 *GetDeploymentStatsResponse + switch t := that.(type) { + case *GetDeploymentStatsResponse: + that1 = t + case GetDeploymentStatsResponse: + that1 = &t + default: + return false + } + + return proto.Equal(this, that1) +} diff --git a/api/workflowservice/v1/request_response.pb.go b/api/workflowservice/v1/request_response.pb.go new file mode 100644 index 00000000000..4f913e2ed9f --- /dev/null +++ b/api/workflowservice/v1/request_response.pb.go @@ -0,0 +1,219 @@ +// The MIT License +// +// Copyright (c) 2019 Temporal Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// plugins: +// protoc-gen-go +// protoc +// source: temporal/server/api/workflowservice/v1/request_response.proto + +package workflowservice + +import ( + reflect "reflect" + sync "sync" + unsafe "unsafe" + + v1 "go.temporal.io/server/api/taskqueue/v1" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type GetDeploymentStatsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + // Name of the deployment to return stats for. + // If empty, the deployment version needs to be provided. + DeploymentName string `protobuf:"bytes,2,opt,name=deployment_name,json=deploymentName,proto3" json:"deployment_name,omitempty"` + // Deployment version to return stats for. + // If empty, the deployment name needs to be provided and + // the current version will be queried. + DeploymentVersion string `protobuf:"bytes,3,opt,name=deployment_version,json=deploymentVersion,proto3" json:"deployment_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetDeploymentStatsRequest) Reset() { + *x = GetDeploymentStatsRequest{} + mi := &file_temporal_server_api_workflowservice_v1_request_response_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetDeploymentStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetDeploymentStatsRequest) ProtoMessage() {} + +func (x *GetDeploymentStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_temporal_server_api_workflowservice_v1_request_response_proto_msgTypes[0] + 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 GetDeploymentStatsRequest.ProtoReflect.Descriptor instead. +func (*GetDeploymentStatsRequest) Descriptor() ([]byte, []int) { + return file_temporal_server_api_workflowservice_v1_request_response_proto_rawDescGZIP(), []int{0} +} + +func (x *GetDeploymentStatsRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *GetDeploymentStatsRequest) GetDeploymentName() string { + if x != nil { + return x.DeploymentName + } + return "" +} + +func (x *GetDeploymentStatsRequest) GetDeploymentVersion() string { + if x != nil { + return x.DeploymentVersion + } + return "" +} + +type GetDeploymentStatsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // An unsorted list of stats for each task queue in the deployment version. + TaskQueueStats []*v1.DetailedTaskQueueStats `protobuf:"bytes,3,rep,name=task_queue_stats,json=taskQueueStats,proto3" json:"task_queue_stats,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetDeploymentStatsResponse) Reset() { + *x = GetDeploymentStatsResponse{} + mi := &file_temporal_server_api_workflowservice_v1_request_response_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetDeploymentStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetDeploymentStatsResponse) ProtoMessage() {} + +func (x *GetDeploymentStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_temporal_server_api_workflowservice_v1_request_response_proto_msgTypes[1] + 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 GetDeploymentStatsResponse.ProtoReflect.Descriptor instead. +func (*GetDeploymentStatsResponse) Descriptor() ([]byte, []int) { + return file_temporal_server_api_workflowservice_v1_request_response_proto_rawDescGZIP(), []int{1} +} + +func (x *GetDeploymentStatsResponse) GetTaskQueueStats() []*v1.DetailedTaskQueueStats { + if x != nil { + return x.TaskQueueStats + } + return nil +} + +var File_temporal_server_api_workflowservice_v1_request_response_proto protoreflect.FileDescriptor + +const file_temporal_server_api_workflowservice_v1_request_response_proto_rawDesc = "" + + "\n" + + "=temporal/server/api/workflowservice/v1/request_response.proto\x12&temporal.server.api.workflowservice.v1\x1a.temporal/server/api/taskqueue/v1/message.proto\"\x91\x01\n" + + "\x19GetDeploymentStatsRequest\x12\x1c\n" + + "\tnamespace\x18\x01 \x01(\tR\tnamespace\x12'\n" + + "\x0fdeployment_name\x18\x02 \x01(\tR\x0edeploymentName\x12-\n" + + "\x12deployment_version\x18\x03 \x01(\tR\x11deploymentVersion\"\x80\x01\n" + + "\x1aGetDeploymentStatsResponse\x12b\n" + + "\x10task_queue_stats\x18\x03 \x03(\v28.temporal.server.api.taskqueue.v1.DetailedTaskQueueStatsR\x0etaskQueueStatsB>Z temporal.server.api.taskqueue.v1.DetailedTaskQueueStats + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_temporal_server_api_workflowservice_v1_request_response_proto_init() } +func file_temporal_server_api_workflowservice_v1_request_response_proto_init() { + if File_temporal_server_api_workflowservice_v1_request_response_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_workflowservice_v1_request_response_proto_rawDesc), len(file_temporal_server_api_workflowservice_v1_request_response_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_temporal_server_api_workflowservice_v1_request_response_proto_goTypes, + DependencyIndexes: file_temporal_server_api_workflowservice_v1_request_response_proto_depIdxs, + MessageInfos: file_temporal_server_api_workflowservice_v1_request_response_proto_msgTypes, + }.Build() + File_temporal_server_api_workflowservice_v1_request_response_proto = out.File + file_temporal_server_api_workflowservice_v1_request_response_proto_goTypes = nil + file_temporal_server_api_workflowservice_v1_request_response_proto_depIdxs = nil +} diff --git a/api/workflowservice/v1/service.pb.go b/api/workflowservice/v1/service.pb.go new file mode 100644 index 00000000000..0d4093a27ed --- /dev/null +++ b/api/workflowservice/v1/service.pb.go @@ -0,0 +1,90 @@ +// The MIT License +// +// Copyright (c) 2019 Temporal Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// plugins: +// protoc-gen-go +// protoc +// source: temporal/server/api/workflowservice/v1/service.proto + +package workflowservice + +import ( + reflect "reflect" + unsafe "unsafe" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +var File_temporal_server_api_workflowservice_v1_service_proto protoreflect.FileDescriptor + +const file_temporal_server_api_workflowservice_v1_service_proto_rawDesc = "" + + "\n" + + "4temporal/server/api/workflowservice/v1/service.proto\x12&temporal.server.api.workflowservice.v1\x1a=temporal/server/api/workflowservice/v1/request_response.proto2\xbb\x01\n" + + "\x19WorkflowIncubationService\x12\x9d\x01\n" + + "\x12GetDeploymentStats\x12A.temporal.server.api.workflowservice.v1.GetDeploymentStatsRequest\x1aB.temporal.server.api.workflowservice.v1.GetDeploymentStatsResponse\"\x00B>Z temporal.server.api.workflowservice.v1.GetDeploymentStatsRequest + 1, // 1: temporal.server.api.workflowservice.v1.WorkflowIncubationService.GetDeploymentStats:output_type -> temporal.server.api.workflowservice.v1.GetDeploymentStatsResponse + 1, // [1:2] is the sub-list for method output_type + 0, // [0:1] 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 +} + +func init() { file_temporal_server_api_workflowservice_v1_service_proto_init() } +func file_temporal_server_api_workflowservice_v1_service_proto_init() { + if File_temporal_server_api_workflowservice_v1_service_proto != nil { + return + } + file_temporal_server_api_workflowservice_v1_request_response_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_server_api_workflowservice_v1_service_proto_rawDesc), len(file_temporal_server_api_workflowservice_v1_service_proto_rawDesc)), + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_temporal_server_api_workflowservice_v1_service_proto_goTypes, + DependencyIndexes: file_temporal_server_api_workflowservice_v1_service_proto_depIdxs, + }.Build() + File_temporal_server_api_workflowservice_v1_service_proto = out.File + file_temporal_server_api_workflowservice_v1_service_proto_goTypes = nil + file_temporal_server_api_workflowservice_v1_service_proto_depIdxs = nil +} diff --git a/api/workflowservice/v1/service_grpc.pb.go b/api/workflowservice/v1/service_grpc.pb.go new file mode 100644 index 00000000000..1269269cb21 --- /dev/null +++ b/api/workflowservice/v1/service_grpc.pb.go @@ -0,0 +1,133 @@ +// The MIT License +// +// Copyright (c) 2019 Temporal Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// plugins: +// - protoc-gen-go-grpc +// - protoc +// source: temporal/server/api/workflowservice/v1/service.proto + +package workflowservice + +import ( + context "context" + + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + WorkflowIncubationService_GetDeploymentStats_FullMethodName = "/temporal.server.api.workflowservice.v1.WorkflowIncubationService/GetDeploymentStats" +) + +// WorkflowIncubationServiceClient is the client API for WorkflowIncubationService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type WorkflowIncubationServiceClient interface { + GetDeploymentStats(ctx context.Context, in *GetDeploymentStatsRequest, opts ...grpc.CallOption) (*GetDeploymentStatsResponse, error) +} + +type workflowIncubationServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewWorkflowIncubationServiceClient(cc grpc.ClientConnInterface) WorkflowIncubationServiceClient { + return &workflowIncubationServiceClient{cc} +} + +func (c *workflowIncubationServiceClient) GetDeploymentStats(ctx context.Context, in *GetDeploymentStatsRequest, opts ...grpc.CallOption) (*GetDeploymentStatsResponse, error) { + out := new(GetDeploymentStatsResponse) + err := c.cc.Invoke(ctx, WorkflowIncubationService_GetDeploymentStats_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// WorkflowIncubationServiceServer is the server API for WorkflowIncubationService service. +// All implementations must embed UnimplementedWorkflowIncubationServiceServer +// for forward compatibility +type WorkflowIncubationServiceServer interface { + GetDeploymentStats(context.Context, *GetDeploymentStatsRequest) (*GetDeploymentStatsResponse, error) + mustEmbedUnimplementedWorkflowIncubationServiceServer() +} + +// UnimplementedWorkflowIncubationServiceServer must be embedded to have forward compatible implementations. +type UnimplementedWorkflowIncubationServiceServer struct { +} + +func (UnimplementedWorkflowIncubationServiceServer) GetDeploymentStats(context.Context, *GetDeploymentStatsRequest) (*GetDeploymentStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDeploymentStats not implemented") +} +func (UnimplementedWorkflowIncubationServiceServer) mustEmbedUnimplementedWorkflowIncubationServiceServer() { +} + +// UnsafeWorkflowIncubationServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to WorkflowIncubationServiceServer will +// result in compilation errors. +type UnsafeWorkflowIncubationServiceServer interface { + mustEmbedUnimplementedWorkflowIncubationServiceServer() +} + +func RegisterWorkflowIncubationServiceServer(s grpc.ServiceRegistrar, srv WorkflowIncubationServiceServer) { + s.RegisterService(&WorkflowIncubationService_ServiceDesc, srv) +} + +func _WorkflowIncubationService_GetDeploymentStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetDeploymentStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(WorkflowIncubationServiceServer).GetDeploymentStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: WorkflowIncubationService_GetDeploymentStats_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(WorkflowIncubationServiceServer).GetDeploymentStats(ctx, req.(*GetDeploymentStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// WorkflowIncubationService_ServiceDesc is the grpc.ServiceDesc for WorkflowIncubationService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var WorkflowIncubationService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "temporal.server.api.workflowservice.v1.WorkflowIncubationService", + HandlerType: (*WorkflowIncubationServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetDeploymentStats", + Handler: _WorkflowIncubationService_GetDeploymentStats_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "temporal/server/api/workflowservice/v1/service.proto", +} diff --git a/api/workflowservicemock/v1/service.pb.mock.go b/api/workflowservicemock/v1/service.pb.mock.go new file mode 100644 index 00000000000..9430dd49d9e --- /dev/null +++ b/api/workflowservicemock/v1/service.pb.mock.go @@ -0,0 +1,34 @@ +// The MIT License +// +// Copyright (c) 2020 Temporal Technologies Inc. All rights reserved. +// +// Copyright (c) 2020 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +// Code generated by MockGen. DO NOT EDIT. +// Source: api/workflowservice/v1/service.pb.go +// +// Generated by this command: +// +// mockgen -copyright_file LICENSE -package workflowservicemock -source api/workflowservice/v1/service.pb.go -destination api.new/temporal/server/api/workflowservicemock/v1/service.pb.mock.go +// + +// Package workflowservicemock is a generated GoMock package. +package workflowservicemock diff --git a/api/workflowservicemock/v1/service_grpc.pb.mock.go b/api/workflowservicemock/v1/service_grpc.pb.mock.go new file mode 100644 index 00000000000..7de3561db3a --- /dev/null +++ b/api/workflowservicemock/v1/service_grpc.pb.mock.go @@ -0,0 +1,174 @@ +// The MIT License +// +// Copyright (c) 2020 Temporal Technologies Inc. All rights reserved. +// +// Copyright (c) 2020 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +// Code generated by MockGen. DO NOT EDIT. +// Source: api/workflowservice/v1/service_grpc.pb.go +// +// Generated by this command: +// +// mockgen -copyright_file LICENSE -package workflowservicemock -source api/workflowservice/v1/service_grpc.pb.go -destination api.new/temporal/server/api/workflowservicemock/v1/service_grpc.pb.mock.go +// + +// Package workflowservicemock is a generated GoMock package. +package workflowservicemock + +import ( + context "context" + reflect "reflect" + + workflowservice "go.temporal.io/server/api/workflowservice/v1" + gomock "go.uber.org/mock/gomock" + grpc "google.golang.org/grpc" +) + +// MockWorkflowIncubationServiceClient is a mock of WorkflowIncubationServiceClient interface. +type MockWorkflowIncubationServiceClient struct { + ctrl *gomock.Controller + recorder *MockWorkflowIncubationServiceClientMockRecorder + isgomock struct{} +} + +// MockWorkflowIncubationServiceClientMockRecorder is the mock recorder for MockWorkflowIncubationServiceClient. +type MockWorkflowIncubationServiceClientMockRecorder struct { + mock *MockWorkflowIncubationServiceClient +} + +// NewMockWorkflowIncubationServiceClient creates a new mock instance. +func NewMockWorkflowIncubationServiceClient(ctrl *gomock.Controller) *MockWorkflowIncubationServiceClient { + mock := &MockWorkflowIncubationServiceClient{ctrl: ctrl} + mock.recorder = &MockWorkflowIncubationServiceClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockWorkflowIncubationServiceClient) EXPECT() *MockWorkflowIncubationServiceClientMockRecorder { + return m.recorder +} + +// GetDeploymentStats mocks base method. +func (m *MockWorkflowIncubationServiceClient) GetDeploymentStats(ctx context.Context, in *workflowservice.GetDeploymentStatsRequest, opts ...grpc.CallOption) (*workflowservice.GetDeploymentStatsResponse, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetDeploymentStats", varargs...) + ret0, _ := ret[0].(*workflowservice.GetDeploymentStatsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetDeploymentStats indicates an expected call of GetDeploymentStats. +func (mr *MockWorkflowIncubationServiceClientMockRecorder) GetDeploymentStats(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, "GetDeploymentStats", reflect.TypeOf((*MockWorkflowIncubationServiceClient)(nil).GetDeploymentStats), varargs...) +} + +// MockWorkflowIncubationServiceServer is a mock of WorkflowIncubationServiceServer interface. +type MockWorkflowIncubationServiceServer struct { + ctrl *gomock.Controller + recorder *MockWorkflowIncubationServiceServerMockRecorder + isgomock struct{} +} + +// MockWorkflowIncubationServiceServerMockRecorder is the mock recorder for MockWorkflowIncubationServiceServer. +type MockWorkflowIncubationServiceServerMockRecorder struct { + mock *MockWorkflowIncubationServiceServer +} + +// NewMockWorkflowIncubationServiceServer creates a new mock instance. +func NewMockWorkflowIncubationServiceServer(ctrl *gomock.Controller) *MockWorkflowIncubationServiceServer { + mock := &MockWorkflowIncubationServiceServer{ctrl: ctrl} + mock.recorder = &MockWorkflowIncubationServiceServerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockWorkflowIncubationServiceServer) EXPECT() *MockWorkflowIncubationServiceServerMockRecorder { + return m.recorder +} + +// GetDeploymentStats mocks base method. +func (m *MockWorkflowIncubationServiceServer) GetDeploymentStats(arg0 context.Context, arg1 *workflowservice.GetDeploymentStatsRequest) (*workflowservice.GetDeploymentStatsResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetDeploymentStats", arg0, arg1) + ret0, _ := ret[0].(*workflowservice.GetDeploymentStatsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetDeploymentStats indicates an expected call of GetDeploymentStats. +func (mr *MockWorkflowIncubationServiceServerMockRecorder) GetDeploymentStats(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDeploymentStats", reflect.TypeOf((*MockWorkflowIncubationServiceServer)(nil).GetDeploymentStats), arg0, arg1) +} + +// mustEmbedUnimplementedWorkflowIncubationServiceServer mocks base method. +func (m *MockWorkflowIncubationServiceServer) mustEmbedUnimplementedWorkflowIncubationServiceServer() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "mustEmbedUnimplementedWorkflowIncubationServiceServer") +} + +// mustEmbedUnimplementedWorkflowIncubationServiceServer indicates an expected call of mustEmbedUnimplementedWorkflowIncubationServiceServer. +func (mr *MockWorkflowIncubationServiceServerMockRecorder) mustEmbedUnimplementedWorkflowIncubationServiceServer() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "mustEmbedUnimplementedWorkflowIncubationServiceServer", reflect.TypeOf((*MockWorkflowIncubationServiceServer)(nil).mustEmbedUnimplementedWorkflowIncubationServiceServer)) +} + +// MockUnsafeWorkflowIncubationServiceServer is a mock of UnsafeWorkflowIncubationServiceServer interface. +type MockUnsafeWorkflowIncubationServiceServer struct { + ctrl *gomock.Controller + recorder *MockUnsafeWorkflowIncubationServiceServerMockRecorder + isgomock struct{} +} + +// MockUnsafeWorkflowIncubationServiceServerMockRecorder is the mock recorder for MockUnsafeWorkflowIncubationServiceServer. +type MockUnsafeWorkflowIncubationServiceServerMockRecorder struct { + mock *MockUnsafeWorkflowIncubationServiceServer +} + +// NewMockUnsafeWorkflowIncubationServiceServer creates a new mock instance. +func NewMockUnsafeWorkflowIncubationServiceServer(ctrl *gomock.Controller) *MockUnsafeWorkflowIncubationServiceServer { + mock := &MockUnsafeWorkflowIncubationServiceServer{ctrl: ctrl} + mock.recorder = &MockUnsafeWorkflowIncubationServiceServerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockUnsafeWorkflowIncubationServiceServer) EXPECT() *MockUnsafeWorkflowIncubationServiceServerMockRecorder { + return m.recorder +} + +// mustEmbedUnimplementedWorkflowIncubationServiceServer mocks base method. +func (m *MockUnsafeWorkflowIncubationServiceServer) mustEmbedUnimplementedWorkflowIncubationServiceServer() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "mustEmbedUnimplementedWorkflowIncubationServiceServer") +} + +// mustEmbedUnimplementedWorkflowIncubationServiceServer indicates an expected call of mustEmbedUnimplementedWorkflowIncubationServiceServer. +func (mr *MockUnsafeWorkflowIncubationServiceServerMockRecorder) mustEmbedUnimplementedWorkflowIncubationServiceServer() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "mustEmbedUnimplementedWorkflowIncubationServiceServer", reflect.TypeOf((*MockUnsafeWorkflowIncubationServiceServer)(nil).mustEmbedUnimplementedWorkflowIncubationServiceServer)) +} diff --git a/client/matching/client_gen.go b/client/matching/client_gen.go index 0f397827fec..a2e65a17d79 100644 --- a/client/matching/client_gen.go +++ b/client/matching/client_gen.go @@ -268,6 +268,43 @@ func (c *clientImpl) GetBuildIdTaskQueueMapping( return client.GetBuildIdTaskQueueMapping(ctx, request, opts...) } +func (c *clientImpl) GetTaskQueuePartitionStats( + ctx context.Context, + request *matchingservice.GetTaskQueuePartitionStatsRequest, + opts ...grpc.CallOption, +) (*matchingservice.GetTaskQueuePartitionStatsResponse, error) { + + p := tqid.PartitionFromPartitionProto(request.GetTaskQueuePartition(), request.GetNamespaceId()) + + client, err := c.getClientForTaskQueuePartition(p) + if err != nil { + return nil, err + } + ctx, cancel := c.createContext(ctx) + defer cancel() + return client.GetTaskQueuePartitionStats(ctx, request, opts...) +} + +func (c *clientImpl) GetTaskQueueStats( + ctx context.Context, + request *matchingservice.GetTaskQueueStatsRequest, + opts ...grpc.CallOption, +) (*matchingservice.GetTaskQueueStatsResponse, error) { + + p, err := tqid.NormalPartitionFromRpcName(request.GetTaskQueue(), request.GetNamespaceId(), request.GetTaskQueueType()) + if err != nil { + return nil, err + } + + client, err := c.getClientForTaskQueuePartition(p) + if err != nil { + return nil, err + } + ctx, cancel := c.createContext(ctx) + defer cancel() + return client.GetTaskQueueStats(ctx, request, opts...) +} + func (c *clientImpl) GetTaskQueueUserData( ctx context.Context, request *matchingservice.GetTaskQueueUserDataRequest, diff --git a/client/matching/metric_client_gen.go b/client/matching/metric_client_gen.go index a60b4586176..a4b4ae1c26a 100644 --- a/client/matching/metric_client_gen.go +++ b/client/matching/metric_client_gen.go @@ -201,6 +201,34 @@ func (c *metricClient) GetBuildIdTaskQueueMapping( return c.client.GetBuildIdTaskQueueMapping(ctx, request, opts...) } +func (c *metricClient) GetTaskQueuePartitionStats( + ctx context.Context, + request *matchingservice.GetTaskQueuePartitionStatsRequest, + opts ...grpc.CallOption, +) (_ *matchingservice.GetTaskQueuePartitionStatsResponse, retError error) { + + metricsHandler, startTime := c.startMetricsRecording(ctx, "MatchingClientGetTaskQueuePartitionStats") + defer func() { + c.finishMetricsRecording(metricsHandler, startTime, retError) + }() + + return c.client.GetTaskQueuePartitionStats(ctx, request, opts...) +} + +func (c *metricClient) GetTaskQueueStats( + ctx context.Context, + request *matchingservice.GetTaskQueueStatsRequest, + opts ...grpc.CallOption, +) (_ *matchingservice.GetTaskQueueStatsResponse, retError error) { + + metricsHandler, startTime := c.startMetricsRecording(ctx, "MatchingClientGetTaskQueueStats") + defer func() { + c.finishMetricsRecording(metricsHandler, startTime, retError) + }() + + return c.client.GetTaskQueueStats(ctx, request, opts...) +} + func (c *metricClient) GetTaskQueueUserData( ctx context.Context, request *matchingservice.GetTaskQueueUserDataRequest, diff --git a/client/matching/retryable_client_gen.go b/client/matching/retryable_client_gen.go index 8e1cd0d6d38..021c7153c12 100644 --- a/client/matching/retryable_client_gen.go +++ b/client/matching/retryable_client_gen.go @@ -245,6 +245,36 @@ func (c *retryableClient) GetBuildIdTaskQueueMapping( return resp, err } +func (c *retryableClient) GetTaskQueuePartitionStats( + ctx context.Context, + request *matchingservice.GetTaskQueuePartitionStatsRequest, + opts ...grpc.CallOption, +) (*matchingservice.GetTaskQueuePartitionStatsResponse, error) { + var resp *matchingservice.GetTaskQueuePartitionStatsResponse + op := func(ctx context.Context) error { + var err error + resp, err = c.client.GetTaskQueuePartitionStats(ctx, request, opts...) + return err + } + err := backoff.ThrottleRetryContext(ctx, op, c.policy, c.isRetryable) + return resp, err +} + +func (c *retryableClient) GetTaskQueueStats( + ctx context.Context, + request *matchingservice.GetTaskQueueStatsRequest, + opts ...grpc.CallOption, +) (*matchingservice.GetTaskQueueStatsResponse, error) { + var resp *matchingservice.GetTaskQueueStatsResponse + op := func(ctx context.Context) error { + var err error + resp, err = c.client.GetTaskQueueStats(ctx, request, opts...) + return err + } + err := backoff.ThrottleRetryContext(ctx, op, c.policy, c.isRetryable) + return resp, err +} + func (c *retryableClient) GetTaskQueueUserData( ctx context.Context, request *matchingservice.GetTaskQueueUserDataRequest, diff --git a/common/rpc/interceptor/logtags/matching_service_server_gen.go b/common/rpc/interceptor/logtags/matching_service_server_gen.go index 5082c210ff5..1ad2fe005d2 100644 --- a/common/rpc/interceptor/logtags/matching_service_server_gen.go +++ b/common/rpc/interceptor/logtags/matching_service_server_gen.go @@ -95,6 +95,14 @@ func (wt *WorkflowTags) extractFromMatchingServiceServerMessage(message any) []t return nil case *matchingservice.GetBuildIdTaskQueueMappingResponse: return nil + case *matchingservice.GetTaskQueuePartitionStatsRequest: + return nil + case *matchingservice.GetTaskQueuePartitionStatsResponse: + return nil + case *matchingservice.GetTaskQueueStatsRequest: + return nil + case *matchingservice.GetTaskQueueStatsResponse: + return nil case *matchingservice.GetTaskQueueUserDataRequest: return nil case *matchingservice.GetTaskQueueUserDataResponse: 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 eefd9d20676..bb0b4a6ebe4 100644 --- a/proto/internal/temporal/server/api/matchingservice/v1/request_response.proto +++ b/proto/internal/temporal/server/api/matchingservice/v1/request_response.proto @@ -519,7 +519,7 @@ message UpdateNexusEndpointRequest { string id = 1; // Version of the endpoint, used for optimistic concurrency. Must match current version in persistence or the // request will fail a FAILED_PRECONDITION error. - int64 version = 2; + int64 version = 2; temporal.server.api.persistence.v1.NexusEndpointSpec spec = 3; } @@ -563,3 +563,23 @@ message ListNexusEndpointsResponse { int64 table_version = 2; repeated temporal.server.api.persistence.v1.NexusEndpointEntry entries = 3; } + +message GetTaskQueueStatsRequest { + string namespace_id = 1; + string task_queue = 2; + temporal.api.enums.v1.TaskQueueType task_queue_type = 3; + string deployment_version = 4; +} + +message GetTaskQueueStatsResponse { + int64 backlog_count_hint = 1; +} + +message GetTaskQueuePartitionStatsRequest { + string namespace_id = 1; + temporal.server.api.taskqueue.v1.TaskQueuePartition task_queue_partition = 2; + string deployment_version = 3; +} + +message GetTaskQueuePartitionStatsResponse { +} diff --git a/proto/internal/temporal/server/api/matchingservice/v1/service.proto b/proto/internal/temporal/server/api/matchingservice/v1/service.proto index e9f63575468..fff570d024a 100644 --- a/proto/internal/temporal/server/api/matchingservice/v1/service.proto +++ b/proto/internal/temporal/server/api/matchingservice/v1/service.proto @@ -89,6 +89,7 @@ service MatchingService { // DescribeTaskQueue returns information about the target task queue, right now this API returns the // pollers which polled this task queue in last few minutes. + // @deprecate TODO rpc DescribeTaskQueue (DescribeTaskQueueRequest) returns (DescribeTaskQueueResponse) { } @@ -128,6 +129,12 @@ service MatchingService { // This request should always be routed to the node holding the root partition of the workflow task queue. rpc SyncDeploymentUserData (SyncDeploymentUserDataRequest) returns (SyncDeploymentUserDataResponse) {} + // TODO + rpc GetTaskQueueStats (GetTaskQueueStatsRequest) returns (GetTaskQueueStatsResponse) {} + + // TODO + rpc GetTaskQueuePartitionStats (GetTaskQueuePartitionStatsRequest) returns (GetTaskQueuePartitionStatsResponse) {} + // Apply a user data replication event. rpc ApplyTaskQueueUserDataReplicationEvent (ApplyTaskQueueUserDataReplicationEventRequest) returns (ApplyTaskQueueUserDataReplicationEventResponse) {} diff --git a/proto/internal/temporal/server/api/taskqueue/v1/message.proto b/proto/internal/temporal/server/api/taskqueue/v1/message.proto index 5427da9f80f..8942cb90928 100644 --- a/proto/internal/temporal/server/api/taskqueue/v1/message.proto +++ b/proto/internal/temporal/server/api/taskqueue/v1/message.proto @@ -122,3 +122,10 @@ message TaskForwardInfo { // Deprecated. [cleanup-old-wv] string dispatch_version_set = 5; } + +// TODO +message DetailedTaskQueueStats { + temporal.api.taskqueue.v1.TaskQueue task_queue = 1; + temporal.api.enums.v1.TaskQueueType task_queue_type = 2; + int64 backlog_count_hint = 3; +} \ No newline at end of file diff --git a/proto/internal/temporal/server/api/workflowservice/v1/request_response.proto b/proto/internal/temporal/server/api/workflowservice/v1/request_response.proto new file mode 100644 index 00000000000..c08fe349c76 --- /dev/null +++ b/proto/internal/temporal/server/api/workflowservice/v1/request_response.proto @@ -0,0 +1,49 @@ +// The MIT License +// +// Copyright (c) 2019 Temporal Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +syntax = "proto3"; + +package temporal.server.api.workflowservice.v1; + +option go_package = "go.temporal.io/server/api/workflowservice/v1;workflowservice"; + +import "temporal/server/api/taskqueue/v1/message.proto"; + +message GetDeploymentStatsRequest { + string namespace = 1; + + // Name of the deployment to return stats for. + // If empty, the deployment version needs to be provided. + string deployment_name = 2; + + // Deployment version to return stats for. + // If empty, the deployment name needs to be provided and + // the current version will be queried. + string deployment_version = 3; +} + +message GetDeploymentStatsResponse { + // An unsorted list of stats for each task queue in the deployment version. + repeated temporal.server.api.taskqueue.v1.DetailedTaskQueueStats task_queue_stats = 3; + + // TODO: aggregated backlog +} diff --git a/proto/internal/temporal/server/api/workflowservice/v1/service.proto b/proto/internal/temporal/server/api/workflowservice/v1/service.proto new file mode 100644 index 00000000000..78b0c8242ba --- /dev/null +++ b/proto/internal/temporal/server/api/workflowservice/v1/service.proto @@ -0,0 +1,32 @@ +// The MIT License +// +// Copyright (c) 2019 Temporal Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +syntax = "proto3"; + +package temporal.server.api.workflowservice.v1; +option go_package = "go.temporal.io/server/api/workflowservice/v1;workflowservice"; + +import "temporal/server/api/workflowservice/v1/request_response.proto"; + +service WorkflowIncubationService { + rpc GetDeploymentStats (GetDeploymentStatsRequest) returns (GetDeploymentStatsResponse) {} +} diff --git a/service/frontend/interface.go b/service/frontend/interface.go index 28377e502f6..8077de001d6 100644 --- a/service/frontend/interface.go +++ b/service/frontend/interface.go @@ -27,6 +27,7 @@ package frontend import ( "go.temporal.io/api/operatorservice/v1" "go.temporal.io/api/workflowservice/v1" + workflowserviceinc "go.temporal.io/server/api/workflowservice/v1" ) const ( @@ -39,6 +40,7 @@ type ( // Handler is interface wrapping frontend workflow handler Handler interface { workflowservice.WorkflowServiceServer + workflowserviceinc.WorkflowIncubationServiceServer GetConfig() *Config Start() Stop() diff --git a/service/frontend/service.go b/service/frontend/service.go index 342769ff788..0da1de016af 100644 --- a/service/frontend/service.go +++ b/service/frontend/service.go @@ -35,6 +35,7 @@ import ( "go.temporal.io/api/operatorservice/v1" "go.temporal.io/api/workflowservice/v1" "go.temporal.io/server/api/adminservice/v1" + workflowserviceinc "go.temporal.io/server/api/workflowservice/v1" "go.temporal.io/server/common/dynamicconfig" "go.temporal.io/server/common/log" "go.temporal.io/server/common/log/tag" @@ -450,6 +451,7 @@ func (s *Service) Start() { healthpb.RegisterHealthServer(s.server, s.healthServer) workflowservice.RegisterWorkflowServiceServer(s.server, s.handler) + workflowserviceinc.RegisterWorkflowIncubationServiceServer(s.server, s.handler) adminservice.RegisterAdminServiceServer(s.server, s.adminHandler) operatorservice.RegisterOperatorServiceServer(s.server, s.operatorHandler) diff --git a/service/frontend/workflow_handler.go b/service/frontend/workflow_handler.go index a8b86685b28..24acfd54cc4 100644 --- a/service/frontend/workflow_handler.go +++ b/service/frontend/workflow_handler.go @@ -53,6 +53,7 @@ import ( "go.temporal.io/server/api/matchingservice/v1" schedulespb "go.temporal.io/server/api/schedule/v1" taskqueuespb "go.temporal.io/server/api/taskqueue/v1" + workflowserviceinc "go.temporal.io/server/api/workflowservice/v1" "go.temporal.io/server/client/frontend" "go.temporal.io/server/common" "go.temporal.io/server/common/archiver" @@ -119,6 +120,7 @@ type ( // WorkflowHandler - gRPC handler interface for workflowservice WorkflowHandler struct { workflowservice.UnimplementedWorkflowServiceServer + workflowserviceinc.UnimplementedWorkflowIncubationServiceServer status int32 tokenSerializer *tasktoken.Serializer @@ -3228,6 +3230,55 @@ func (wh *WorkflowHandler) GetCurrentDeployment(ctx context.Context, request *wo }, nil } +func (wh *WorkflowHandler) GetDeploymentStats( + ctx context.Context, + request *workflowserviceinc.GetDeploymentStatsRequest, +) (_ *workflowserviceinc.GetDeploymentStatsResponse, retError error) { + defer log.CapturePanic(wh.logger, &retError) + if request == nil { + return nil, errRequestNotSet + } + if len(request.Namespace) == 0 { + return nil, errNamespaceNotSet + } + if !wh.config.EnableDeploymentVersions(request.Namespace) { + return nil, errDeploymentsNotAllowed + } + // TODO: more validation + + namespaceEntry, err := wh.namespaceRegistry.GetNamespace(namespace.Name(request.GetNamespace())) + if err != nil { + return nil, err + } + + // TODO: support deployment version + versionInfo, err := wh.workerDeploymentClient.DescribeVersion(ctx, namespaceEntry, request.GetDeploymentVersion()) + if err != nil { + return nil, err + } + + var stats []*taskqueuespb.DetailedTaskQueueStats + for _, tq := range versionInfo.TaskQueueInfos { + tqStats, err := wh.matchingClient.GetTaskQueueStats(ctx, + &matchingservice.GetTaskQueueStatsRequest{ + NamespaceId: namespaceEntry.ID().String(), + TaskQueue: tq.Name, + TaskQueueType: tq.Type, + }) + if err != nil { + return nil, err + } + stats = append(stats, + &taskqueuespb.DetailedTaskQueueStats{ + TaskQueue: &taskqueuepb.TaskQueue{Name: tq.Name, Kind: enumspb.TASK_QUEUE_KIND_NORMAL}, + TaskQueueType: tq.Type, + BacklogCountHint: tqStats.BacklogCountHint, + }) + } + + return &workflowserviceinc.GetDeploymentStatsResponse{TaskQueueStats: stats}, nil +} + // [cleanup-wv-pre-release] func (wh *WorkflowHandler) ListDeployments( ctx context.Context, diff --git a/service/matching/handler.go b/service/matching/handler.go index 43d22f78a53..885564168f2 100644 --- a/service/matching/handler.go +++ b/service/matching/handler.go @@ -209,6 +209,30 @@ func (h *Handler) AddWorkflowTask( return &matchingservice.AddWorkflowTaskResponse{AssignedBuildId: assignedBuildId}, err } +func (h *Handler) GetTaskQueueStats( + ctx context.Context, + request *matchingservice.GetTaskQueueStatsRequest, +) (_ *matchingservice.GetTaskQueueStatsResponse, retError error) { + defer log.CapturePanic(h.logger, &retError) + resp, err := h.engine.GetTaskQueueStats(ctx, request) + if err != nil { + return nil, err + } + return resp, nil +} + +func (h *Handler) GetTaskQueuePartitionStats( + ctx context.Context, + request *matchingservice.GetTaskQueuePartitionStatsRequest, +) (_ *matchingservice.GetTaskQueuePartitionStatsResponse, retError error) { + defer log.CapturePanic(h.logger, &retError) + resp, err := h.engine.GetTaskQueuePartitionStats(ctx, request) + if err != nil { + return nil, err + } + return resp, nil +} + // PollActivityTaskQueue - long poll for an activity task. func (h *Handler) PollActivityTaskQueue( ctx context.Context, diff --git a/service/matching/matching_engine.go b/service/matching/matching_engine.go index 43a7c3e44c7..ef11b03775f 100644 --- a/service/matching/matching_engine.go +++ b/service/matching/matching_engine.go @@ -1102,6 +1102,59 @@ func (e *matchingEngineImpl) CancelOutstandingPoll( return nil } +func (e *matchingEngineImpl) GetTaskQueueStats( + ctx context.Context, + request *matchingservice.GetTaskQueueStatsRequest, +) (*matchingservice.GetTaskQueueStatsResponse, error) { + ns, err := e.namespaceRegistry.GetNamespaceName(namespace.ID(request.NamespaceId)) + if err != nil { + return nil, err + } + + tq := &taskqueuepb.TaskQueue{Name: request.TaskQueue, Kind: enumspb.TASK_QUEUE_KIND_NORMAL} + taskQueueType := request.GetTaskQueueType() + rootPartition, err := tqid.PartitionFromProto(tq, request.GetNamespaceId(), taskQueueType) + if err != nil { + return nil, err + } + + tqConfig := newTaskQueueConfig(rootPartition.TaskQueue(), e.config, ns) + numPartitions := max(tqConfig.NumWritePartitions(), tqConfig.NumReadPartitions()) + + resp := &matchingservice.GetTaskQueueStatsResponse{} + for i := 0; i < numPartitions; i++ { + descrPartition, err := e.matchingRawClient.DescribeTaskQueuePartition(ctx, + &matchingservice.DescribeTaskQueuePartitionRequest{ + NamespaceId: request.GetNamespaceId(), + TaskQueuePartition: &taskqueuespb.TaskQueuePartition{ + TaskQueue: request.TaskQueue, + TaskQueueType: request.TaskQueueType, + PartitionId: &taskqueuespb.TaskQueuePartition_NormalPartitionId{NormalPartitionId: int32(i)}, + }, + Versions: &taskqueuepb.TaskQueueVersionSelection{ + BuildIds: []string{request.DeploymentVersion}, // NOTE: empty means "unversioned" + }, + ReportStats: true, + }) + if err != nil { + return nil, err + } + for _, vii := range descrPartition.VersionsInfoInternal { + partitionStats := vii.PhysicalTaskQueueInfo.TaskQueueStats + resp.BacklogCountHint += partitionStats.ApproximateBacklogCount + } + } + return resp, nil +} + +func (e *matchingEngineImpl) GetTaskQueuePartitionStats( + ctx context.Context, + request *matchingservice.GetTaskQueuePartitionStatsRequest, +) (*matchingservice.GetTaskQueuePartitionStatsResponse, error) { + //TODO implement me + panic("implement me") +} + func (e *matchingEngineImpl) DescribeTaskQueue( ctx context.Context, request *matchingservice.DescribeTaskQueueRequest, diff --git a/service/matching/matching_engine_interfaces.go b/service/matching/matching_engine_interfaces.go index ef37b9ef0e9..4df9663a7d3 100644 --- a/service/matching/matching_engine_interfaces.go +++ b/service/matching/matching_engine_interfaces.go @@ -68,5 +68,7 @@ type ( ListNexusEndpoints(ctx context.Context, request *matchingservice.ListNexusEndpointsRequest) (*matchingservice.ListNexusEndpointsResponse, error) UpdateWorkerVersioningRules(ctx context.Context, request *matchingservice.UpdateWorkerVersioningRulesRequest) (*matchingservice.UpdateWorkerVersioningRulesResponse, error) GetWorkerVersioningRules(ctx context.Context, request *matchingservice.GetWorkerVersioningRulesRequest) (*matchingservice.GetWorkerVersioningRulesResponse, error) + GetTaskQueueStats(ctx context.Context, request *matchingservice.GetTaskQueueStatsRequest) (*matchingservice.GetTaskQueueStatsResponse, error) + GetTaskQueuePartitionStats(ctx context.Context, request *matchingservice.GetTaskQueuePartitionStatsRequest) (*matchingservice.GetTaskQueuePartitionStatsResponse, error) } ) diff --git a/tests/deployment_test.go b/tests/deployment_test.go index 134ed1f98c5..2d9319ec1dd 100644 --- a/tests/deployment_test.go +++ b/tests/deployment_test.go @@ -470,7 +470,7 @@ func (s *DeploymentSuite) TestGetDeploymentReachability_OverrideUnversioned() { updateResp, err := s.FrontendClient().UpdateWorkflowExecutionOptions(ctx, &workflowservice.UpdateWorkflowExecutionOptionsRequest{ Namespace: s.Namespace().String(), WorkflowExecution: unversionedWFExec, - WorkflowExecutionOptions: updateOpts, + WorkflowExecutionOptions: nil, UpdateMask: &fieldmaskpb.FieldMask{Paths: []string{"versioning_override"}}, }) s.NoError(err) diff --git a/tests/testcore/functional_test_base.go b/tests/testcore/functional_test_base.go index 0fd678cfae2..36ed2cdb3e7 100644 --- a/tests/testcore/functional_test_base.go +++ b/tests/testcore/functional_test_base.go @@ -46,6 +46,7 @@ import ( "go.temporal.io/api/workflowservice/v1" "go.temporal.io/server/api/adminservice/v1" persistencespb "go.temporal.io/server/api/persistence/v1" + workflowserviceinc "go.temporal.io/server/api/workflowservice/v1" "go.temporal.io/server/common" "go.temporal.io/server/common/dynamicconfig" "go.temporal.io/server/common/log" @@ -147,6 +148,10 @@ func (s *FunctionalTestBase) FrontendClient() workflowservice.WorkflowServiceCli return s.testCluster.FrontendClient() } +func (s *FunctionalTestBase) FrontendIncClient() workflowserviceinc.WorkflowIncubationServiceClient { + return s.testCluster.FrontendIncClient() +} + func (s *FunctionalTestBase) AdminClient() adminservice.AdminServiceClient { return s.testCluster.AdminClient() } diff --git a/tests/testcore/onebox.go b/tests/testcore/onebox.go index 1dfadbc99d2..f7a36487c3e 100644 --- a/tests/testcore/onebox.go +++ b/tests/testcore/onebox.go @@ -43,6 +43,7 @@ import ( "go.temporal.io/server/api/adminservice/v1" "go.temporal.io/server/api/historyservice/v1" "go.temporal.io/server/api/matchingservice/v1" + workflowserviceinc "go.temporal.io/server/api/workflowservice/v1" "go.temporal.io/server/client" "go.temporal.io/server/common" carchiver "go.temporal.io/server/common/archiver" @@ -94,11 +95,12 @@ type ( frontendMembershipAddress string // These are routing/load balancing clients but do not do retries: - adminClient adminservice.AdminServiceClient - frontendClient workflowservice.WorkflowServiceClient - operatorClient operatorservice.OperatorServiceClient - historyClient historyservice.HistoryServiceClient - matchingClient matchingservice.MatchingServiceClient + adminClient adminservice.AdminServiceClient + frontendClient workflowservice.WorkflowServiceClient + frontendIncClient workflowserviceinc.WorkflowIncubationServiceClient + operatorClient operatorservice.OperatorServiceClient + historyClient historyservice.HistoryServiceClient + matchingClient matchingservice.MatchingServiceClient dcClient *dynamicconfig.MemoryClient testHooks testhooks.TestHooks @@ -301,6 +303,10 @@ func (c *TemporalImpl) FrontendClient() workflowservice.WorkflowServiceClient { return c.frontendClient } +func (c *TemporalImpl) FrontendIncClient() workflowserviceinc.WorkflowIncubationServiceClient { + return c.frontendIncClient +} + func (c *TemporalImpl) HistoryClient() historyservice.HistoryServiceClient { return c.historyClient } @@ -403,6 +409,7 @@ func (c *TemporalImpl) startFrontend() { // This connection/clients uses membership to find frontends and load-balance among them. connection := rpcFactory.CreateLocalFrontendGRPCConnection() c.frontendClient = workflowservice.NewWorkflowServiceClient(connection) + c.frontendIncClient = workflowserviceinc.NewWorkflowIncubationServiceClient(connection) c.adminClient = adminservice.NewAdminServiceClient(connection) c.operatorClient = operatorservice.NewOperatorServiceClient(connection) diff --git a/tests/testcore/test_cluster.go b/tests/testcore/test_cluster.go index 8752bbd8cb9..3d78b96b202 100644 --- a/tests/testcore/test_cluster.go +++ b/tests/testcore/test_cluster.go @@ -42,6 +42,7 @@ import ( "go.temporal.io/server/api/historyservice/v1" "go.temporal.io/server/api/matchingservice/v1" persistencespb "go.temporal.io/server/api/persistence/v1" + workflowserviceinc "go.temporal.io/server/api/workflowservice/v1" "go.temporal.io/server/common/archiver" "go.temporal.io/server/common/archiver/filestore" "go.temporal.io/server/common/archiver/provider" @@ -570,6 +571,10 @@ func (tc *TestCluster) FrontendClient() workflowservice.WorkflowServiceClient { return tc.host.FrontendClient() } +func (tc *TestCluster) FrontendIncClient() workflowserviceinc.WorkflowIncubationServiceClient { + return tc.host.FrontendIncClient() +} + func (tc *TestCluster) AdminClient() adminservice.AdminServiceClient { return tc.host.AdminClient() } diff --git a/tests/worker_deployment_test.go b/tests/worker_deployment_test.go index 0a215966895..fcbd4840fb7 100644 --- a/tests/worker_deployment_test.go +++ b/tests/worker_deployment_test.go @@ -34,8 +34,12 @@ import ( "time" "github.com/dgryski/go-farm" + "github.com/google/go-cmp/cmp" + "github.com/google/uuid" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" + commandpb "go.temporal.io/api/command/v1" commonpb "go.temporal.io/api/common/v1" deploymentpb "go.temporal.io/api/deployment/v1" enumspb "go.temporal.io/api/enums/v1" @@ -43,11 +47,14 @@ import ( taskqueuepb "go.temporal.io/api/taskqueue/v1" "go.temporal.io/api/workflowservice/v1" sdkworker "go.temporal.io/sdk/worker" + taskqueuespb "go.temporal.io/server/api/taskqueue/v1" + workflowserviceinc "go.temporal.io/server/api/workflowservice/v1" "go.temporal.io/server/common/dynamicconfig" "go.temporal.io/server/common/testing/testvars" "go.temporal.io/server/common/worker_versioning" "go.temporal.io/server/service/worker/workerdeployment" "go.temporal.io/server/tests/testcore" + "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -1598,6 +1605,112 @@ func (s *WorkerDeploymentSuite) TestDeleteWorkerDeployment_InvalidDelete() { s.Error(err) } +func (s *WorkerDeploymentSuite) TestDeploymentStats() { + s.OverrideDynamicConfig(dynamicconfig.MatchingNumTaskqueueReadPartitions, 1) + s.OverrideDynamicConfig(dynamicconfig.MatchingNumTaskqueueWritePartitions, 1) + + ctx, cancel := context.WithTimeout(testcore.NewContext(), time.Second*10) + defer cancel() + tv := testvars.New(s) + + sortStats := func(resp *workflowserviceinc.GetDeploymentStatsResponse) { + slices.SortFunc(resp.TaskQueueStats, func(l, r *taskqueuespb.DetailedTaskQueueStats) int { + if cmp := strings.Compare(l.TaskQueue.GetName(), r.TaskQueue.GetName()); cmp != 0 { + return cmp + } + return strings.Compare(l.TaskQueueType.String(), r.TaskQueueType.String()) + }) + } + verifyStats := func(expected *workflowserviceinc.GetDeploymentStatsResponse) { + sortStats(expected) + s.EventuallyWithT(func(t *assert.CollectT) { + actual, err := s.FrontendIncClient().GetDeploymentStats(ctx, + &workflowserviceinc.GetDeploymentStatsRequest{ + Namespace: s.Namespace().String(), + DeploymentVersion: tv.DeploymentVersionString(), + }) + s.NoError(err) + sortStats(actual) + require.Empty(t, cmp.Diff(actual.TaskQueueStats, expected.TaskQueueStats)) + }, time.Second*5, time.Millisecond*200) + } + + s.startVersionWorkflow(ctx, tv) + + // generate workflow backlog + workflowCount := 10 + for i := 0; i < workflowCount; i++ { + _, err := s.FrontendClient().StartWorkflowExecution( + ctx, + &workflowservice.StartWorkflowExecutionRequest{ + Namespace: s.Namespace().String(), + RequestId: uuid.NewString(), + WorkflowId: uuid.NewString(), + WorkflowType: tv.WorkflowType(), + TaskQueue: tv.TaskQueue(), + WorkflowRunTimeout: durationpb.New(10 * time.Minute), + WorkflowTaskTimeout: durationpb.New(10 * time.Minute), + Identity: tv.ClientIdentity(), + }) + s.NoError(err) + } + + verifyStats(&workflowserviceinc.GetDeploymentStatsResponse{ + TaskQueueStats: []*taskqueuespb.DetailedTaskQueueStats{ + { + TaskQueue: tv.TaskQueue(), + TaskQueueType: enumspb.TASK_QUEUE_TYPE_WORKFLOW, + BacklogCountHint: int64(workflowCount), + }, + }, + }) + + // generate activity backlog + for i := 0; i < workflowCount; { + resp, err := s.FrontendClient().PollWorkflowTaskQueue(testcore.NewContext(), &workflowservice.PollWorkflowTaskQueueRequest{ + Namespace: s.Namespace().String(), + TaskQueue: tv.TaskQueue(), + Identity: tv.ClientIdentity(), + }) + s.NoError(err) + if resp == nil || resp.GetAttempt() < 1 { + continue // poll again on empty responses + } + i++ + _, err = s.FrontendClient().RespondWorkflowTaskCompleted(testcore.NewContext(), &workflowservice.RespondWorkflowTaskCompletedRequest{ + Namespace: s.Namespace().String(), + Identity: tv.ClientIdentity(), + TaskToken: resp.TaskToken, + Commands: []*commandpb.Command{ + { + CommandType: enumspb.COMMAND_TYPE_SCHEDULE_ACTIVITY_TASK, + Attributes: &commandpb.Command_ScheduleActivityTaskCommandAttributes{ + ScheduleActivityTaskCommandAttributes: &commandpb.ScheduleActivityTaskCommandAttributes{ + ActivityId: "activity1", + ActivityType: &commonpb.ActivityType{Name: "activity_type1"}, + TaskQueue: tv.TaskQueue(), + StartToCloseTimeout: durationpb.New(time.Minute), + RequestEagerExecution: false, + }, + }, + }, + }, + }) + s.NoError(err) + } + + verifyStats(&workflowserviceinc.GetDeploymentStatsResponse{ + TaskQueueStats: []*taskqueuespb.DetailedTaskQueueStats{ + { + TaskQueue: tv.TaskQueue(), + TaskQueueType: enumspb.TASK_QUEUE_TYPE_ACTIVITY, + BacklogCountHint: int64(workflowCount), + }, + }, + }) + // TODO +} + func (s *WorkerDeploymentSuite) tryDeleteVersion( ctx context.Context, tv *testvars.TestVars,