From 2cbf4f3436920b4020ba3e44bd3169c8ad609f6f Mon Sep 17 00:00:00 2001 From: Nate Mortensen Date: Tue, 31 Dec 2024 14:22:23 -0800 Subject: [PATCH] Update DescribeTaskList to return Isolation Group metrics (#6580) Update emaFixedWindowQPSTracker to support tracking several qps metrics and use it to track the AddTask QPS per isolation group. Update DescribeTaskList to return the AddTask QPS and number of pollers per isolation group. Additionally include the global AddTask QPS. --- .gen/go/shared/shared.go | 608 +++++++++++++++++- .gen/go/sqlblobs/sqlblobs.go | 525 ++++++++++++++- .gen/proto/history/v1/service.pb.yarpc.go | 117 ++-- .gen/proto/matching/v1/service.pb.yarpc.go | 117 ++-- .gen/proto/shared/v1/history.pb.yarpc.go | 117 ++-- cmd/server/go.mod | 2 +- cmd/server/go.sum | 4 +- common/stats/interface_mock.go | 99 +++ common/stats/interfaces.go | 9 + common/stats/stats.go | 142 ++-- common/stats/stats_test.go | 39 +- common/types/mapper/proto/api.go | 60 +- common/types/mapper/thrift/shared.go | 60 +- common/types/shared.go | 17 +- common/types/testdata/common.go | 7 + go.mod | 2 +- go.sum | 4 +- idls | 2 +- .../matching/tasklist/task_list_manager.go | 42 +- .../tasklist/task_list_manager_test.go | 194 ++++-- 20 files changed, 1840 insertions(+), 327 deletions(-) diff --git a/.gen/go/shared/shared.go b/.gen/go/shared/shared.go index b3b49389c0d..83f3094f162 100644 --- a/.gen/go/shared/shared.go +++ b/.gen/go/shared/shared.go @@ -48620,6 +48620,290 @@ func (v *IsolationGroupConfiguration) IsSetIsolationGroups() bool { return v != nil && v.IsolationGroups != nil } +type IsolationGroupMetrics struct { + NewTasksPerSecond *float64 `json:"newTasksPerSecond,omitempty"` + PollerCount *int64 `json:"pollerCount,omitempty"` +} + +// ToWire translates a IsolationGroupMetrics struct into a Thrift-level intermediate +// representation. This intermediate representation may be serialized +// into bytes using a ThriftRW protocol implementation. +// +// An error is returned if the struct or any of its fields failed to +// validate. +// +// x, err := v.ToWire() +// if err != nil { +// return err +// } +// +// if err := binaryProtocol.Encode(x, writer); err != nil { +// return err +// } +func (v *IsolationGroupMetrics) ToWire() (wire.Value, error) { + var ( + fields [2]wire.Field + i int = 0 + w wire.Value + err error + ) + + if v.NewTasksPerSecond != nil { + w, err = wire.NewValueDouble(*(v.NewTasksPerSecond)), error(nil) + if err != nil { + return w, err + } + fields[i] = wire.Field{ID: 10, Value: w} + i++ + } + if v.PollerCount != nil { + w, err = wire.NewValueI64(*(v.PollerCount)), error(nil) + if err != nil { + return w, err + } + fields[i] = wire.Field{ID: 20, Value: w} + i++ + } + + return wire.NewValueStruct(wire.Struct{Fields: fields[:i]}), nil +} + +// FromWire deserializes a IsolationGroupMetrics struct from its Thrift-level +// representation. The Thrift-level representation may be obtained +// from a ThriftRW protocol implementation. +// +// An error is returned if we were unable to build a IsolationGroupMetrics struct +// from the provided intermediate representation. +// +// x, err := binaryProtocol.Decode(reader, wire.TStruct) +// if err != nil { +// return nil, err +// } +// +// var v IsolationGroupMetrics +// if err := v.FromWire(x); err != nil { +// return nil, err +// } +// return &v, nil +func (v *IsolationGroupMetrics) FromWire(w wire.Value) error { + var err error + + for _, field := range w.GetStruct().Fields { + switch field.ID { + case 10: + if field.Value.Type() == wire.TDouble { + var x float64 + x, err = field.Value.GetDouble(), error(nil) + v.NewTasksPerSecond = &x + if err != nil { + return err + } + + } + case 20: + if field.Value.Type() == wire.TI64 { + var x int64 + x, err = field.Value.GetI64(), error(nil) + v.PollerCount = &x + if err != nil { + return err + } + + } + } + } + + return nil +} + +// Encode serializes a IsolationGroupMetrics struct directly into bytes, without going +// through an intermediary type. +// +// An error is returned if a IsolationGroupMetrics struct could not be encoded. +func (v *IsolationGroupMetrics) Encode(sw stream.Writer) error { + if err := sw.WriteStructBegin(); err != nil { + return err + } + + if v.NewTasksPerSecond != nil { + if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 10, Type: wire.TDouble}); err != nil { + return err + } + if err := sw.WriteDouble(*(v.NewTasksPerSecond)); err != nil { + return err + } + if err := sw.WriteFieldEnd(); err != nil { + return err + } + } + + if v.PollerCount != nil { + if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 20, Type: wire.TI64}); err != nil { + return err + } + if err := sw.WriteInt64(*(v.PollerCount)); err != nil { + return err + } + if err := sw.WriteFieldEnd(); err != nil { + return err + } + } + + return sw.WriteStructEnd() +} + +// Decode deserializes a IsolationGroupMetrics struct directly from its Thrift-level +// representation, without going through an intemediary type. +// +// An error is returned if a IsolationGroupMetrics struct could not be generated from the wire +// representation. +func (v *IsolationGroupMetrics) Decode(sr stream.Reader) error { + + if err := sr.ReadStructBegin(); err != nil { + return err + } + + fh, ok, err := sr.ReadFieldBegin() + if err != nil { + return err + } + + for ok { + switch { + case fh.ID == 10 && fh.Type == wire.TDouble: + var x float64 + x, err = sr.ReadDouble() + v.NewTasksPerSecond = &x + if err != nil { + return err + } + + case fh.ID == 20 && fh.Type == wire.TI64: + var x int64 + x, err = sr.ReadInt64() + v.PollerCount = &x + if err != nil { + return err + } + + default: + if err := sr.Skip(fh.Type); err != nil { + return err + } + } + + if err := sr.ReadFieldEnd(); err != nil { + return err + } + + if fh, ok, err = sr.ReadFieldBegin(); err != nil { + return err + } + } + + if err := sr.ReadStructEnd(); err != nil { + return err + } + + return nil +} + +// String returns a readable string representation of a IsolationGroupMetrics +// struct. +func (v *IsolationGroupMetrics) String() string { + if v == nil { + return "" + } + + var fields [2]string + i := 0 + if v.NewTasksPerSecond != nil { + fields[i] = fmt.Sprintf("NewTasksPerSecond: %v", *(v.NewTasksPerSecond)) + i++ + } + if v.PollerCount != nil { + fields[i] = fmt.Sprintf("PollerCount: %v", *(v.PollerCount)) + i++ + } + + return fmt.Sprintf("IsolationGroupMetrics{%v}", strings.Join(fields[:i], ", ")) +} + +func _Double_EqualsPtr(lhs, rhs *float64) bool { + if lhs != nil && rhs != nil { + + x := *lhs + y := *rhs + return (x == y) + } + return lhs == nil && rhs == nil +} + +// Equals returns true if all the fields of this IsolationGroupMetrics match the +// provided IsolationGroupMetrics. +// +// This function performs a deep comparison. +func (v *IsolationGroupMetrics) Equals(rhs *IsolationGroupMetrics) bool { + if v == nil { + return rhs == nil + } else if rhs == nil { + return false + } + if !_Double_EqualsPtr(v.NewTasksPerSecond, rhs.NewTasksPerSecond) { + return false + } + if !_I64_EqualsPtr(v.PollerCount, rhs.PollerCount) { + return false + } + + return true +} + +// MarshalLogObject implements zapcore.ObjectMarshaler, enabling +// fast logging of IsolationGroupMetrics. +func (v *IsolationGroupMetrics) MarshalLogObject(enc zapcore.ObjectEncoder) (err error) { + if v == nil { + return nil + } + if v.NewTasksPerSecond != nil { + enc.AddFloat64("newTasksPerSecond", *v.NewTasksPerSecond) + } + if v.PollerCount != nil { + enc.AddInt64("pollerCount", *v.PollerCount) + } + return err +} + +// GetNewTasksPerSecond returns the value of NewTasksPerSecond if it is set or its +// zero value if it is unset. +func (v *IsolationGroupMetrics) GetNewTasksPerSecond() (o float64) { + if v != nil && v.NewTasksPerSecond != nil { + return *v.NewTasksPerSecond + } + + return +} + +// IsSetNewTasksPerSecond returns true if NewTasksPerSecond is not nil. +func (v *IsolationGroupMetrics) IsSetNewTasksPerSecond() bool { + return v != nil && v.NewTasksPerSecond != nil +} + +// GetPollerCount returns the value of PollerCount if it is set or its +// zero value if it is unset. +func (v *IsolationGroupMetrics) GetPollerCount() (o int64) { + if v != nil && v.PollerCount != nil { + return *v.PollerCount + } + + return +} + +// IsSetPollerCount returns true if PollerCount is not nil. +func (v *IsolationGroupMetrics) IsSetPollerCount() bool { + return v != nil && v.PollerCount != nil +} + type IsolationGroupPartition struct { Name *string `json:"name,omitempty"` State *IsolationGroupState `json:"state,omitempty"` @@ -60881,16 +61165,6 @@ func (v *PollerInfo) String() string { return fmt.Sprintf("PollerInfo{%v}", strings.Join(fields[:i], ", ")) } -func _Double_EqualsPtr(lhs, rhs *float64) bool { - if lhs != nil && rhs != nil { - - x := *lhs - y := *rhs - return (x == y) - } - return lhs == nil && rhs == nil -} - // Equals returns true if all the fields of this PollerInfo match the // provided PollerInfo. // @@ -92636,13 +92910,53 @@ func (v *TaskListPartitionMetadata) IsSetOwnerHostName() bool { } type TaskListStatus struct { - BacklogCountHint *int64 `json:"backlogCountHint,omitempty"` - ReadLevel *int64 `json:"readLevel,omitempty"` - AckLevel *int64 `json:"ackLevel,omitempty"` - RatePerSecond *float64 `json:"ratePerSecond,omitempty"` - TaskIDBlock *TaskIDBlock `json:"taskIDBlock,omitempty"` + BacklogCountHint *int64 `json:"backlogCountHint,omitempty"` + ReadLevel *int64 `json:"readLevel,omitempty"` + AckLevel *int64 `json:"ackLevel,omitempty"` + RatePerSecond *float64 `json:"ratePerSecond,omitempty"` + TaskIDBlock *TaskIDBlock `json:"taskIDBlock,omitempty"` + IsolationGroupMetrics map[string]*IsolationGroupMetrics `json:"isolationGroupMetrics,omitempty"` + NewTasksPerSecond *float64 `json:"newTasksPerSecond,omitempty"` +} + +type _Map_String_IsolationGroupMetrics_MapItemList map[string]*IsolationGroupMetrics + +func (m _Map_String_IsolationGroupMetrics_MapItemList) ForEach(f func(wire.MapItem) error) error { + for k, v := range m { + if v == nil { + return fmt.Errorf("invalid map 'map[string]*IsolationGroupMetrics', key [%v]: value is nil", k) + } + kw, err := wire.NewValueString(k), error(nil) + if err != nil { + return err + } + + vw, err := v.ToWire() + if err != nil { + return err + } + err = f(wire.MapItem{Key: kw, Value: vw}) + if err != nil { + return err + } + } + return nil +} + +func (m _Map_String_IsolationGroupMetrics_MapItemList) Size() int { + return len(m) } +func (_Map_String_IsolationGroupMetrics_MapItemList) KeyType() wire.Type { + return wire.TBinary +} + +func (_Map_String_IsolationGroupMetrics_MapItemList) ValueType() wire.Type { + return wire.TStruct +} + +func (_Map_String_IsolationGroupMetrics_MapItemList) Close() {} + // ToWire translates a TaskListStatus struct into a Thrift-level intermediate // representation. This intermediate representation may be serialized // into bytes using a ThriftRW protocol implementation. @@ -92660,7 +92974,7 @@ type TaskListStatus struct { // } func (v *TaskListStatus) ToWire() (wire.Value, error) { var ( - fields [5]wire.Field + fields [7]wire.Field i int = 0 w wire.Value err error @@ -92706,6 +93020,22 @@ func (v *TaskListStatus) ToWire() (wire.Value, error) { fields[i] = wire.Field{ID: 40, Value: w} i++ } + if v.IsolationGroupMetrics != nil { + w, err = wire.NewValueMap(_Map_String_IsolationGroupMetrics_MapItemList(v.IsolationGroupMetrics)), error(nil) + if err != nil { + return w, err + } + fields[i] = wire.Field{ID: 50, Value: w} + i++ + } + if v.NewTasksPerSecond != nil { + w, err = wire.NewValueDouble(*(v.NewTasksPerSecond)), error(nil) + if err != nil { + return w, err + } + fields[i] = wire.Field{ID: 60, Value: w} + i++ + } return wire.NewValueStruct(wire.Struct{Fields: fields[:i]}), nil } @@ -92716,6 +93046,40 @@ func _TaskIDBlock_Read(w wire.Value) (*TaskIDBlock, error) { return &v, err } +func _IsolationGroupMetrics_Read(w wire.Value) (*IsolationGroupMetrics, error) { + var v IsolationGroupMetrics + err := v.FromWire(w) + return &v, err +} + +func _Map_String_IsolationGroupMetrics_Read(m wire.MapItemList) (map[string]*IsolationGroupMetrics, error) { + if m.KeyType() != wire.TBinary { + return nil, nil + } + + if m.ValueType() != wire.TStruct { + return nil, nil + } + + o := make(map[string]*IsolationGroupMetrics, m.Size()) + err := m.ForEach(func(x wire.MapItem) error { + k, err := x.Key.GetString(), error(nil) + if err != nil { + return err + } + + v, err := _IsolationGroupMetrics_Read(x.Value) + if err != nil { + return err + } + + o[k] = v + return nil + }) + m.Close() + return o, err +} + // FromWire deserializes a TaskListStatus struct from its Thrift-level // representation. The Thrift-level representation may be obtained // from a ThriftRW protocol implementation. @@ -92785,6 +93149,24 @@ func (v *TaskListStatus) FromWire(w wire.Value) error { return err } + } + case 50: + if field.Value.Type() == wire.TMap { + v.IsolationGroupMetrics, err = _Map_String_IsolationGroupMetrics_Read(field.Value.GetMap()) + if err != nil { + return err + } + + } + case 60: + if field.Value.Type() == wire.TDouble { + var x float64 + x, err = field.Value.GetDouble(), error(nil) + v.NewTasksPerSecond = &x + if err != nil { + return err + } + } } } @@ -92792,6 +93174,32 @@ func (v *TaskListStatus) FromWire(w wire.Value) error { return nil } +func _Map_String_IsolationGroupMetrics_Encode(val map[string]*IsolationGroupMetrics, sw stream.Writer) error { + + mh := stream.MapHeader{ + KeyType: wire.TBinary, + ValueType: wire.TStruct, + Length: len(val), + } + if err := sw.WriteMapBegin(mh); err != nil { + return err + } + + for k, v := range val { + if v == nil { + return fmt.Errorf("invalid map 'map[string]*IsolationGroupMetrics', key [%v]: value is nil", k) + } + if err := sw.WriteString(k); err != nil { + return err + } + if err := v.Encode(sw); err != nil { + return err + } + } + + return sw.WriteMapEnd() +} + // Encode serializes a TaskListStatus struct directly into bytes, without going // through an intermediary type. // @@ -92861,6 +93269,30 @@ func (v *TaskListStatus) Encode(sw stream.Writer) error { } } + if v.IsolationGroupMetrics != nil { + if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 50, Type: wire.TMap}); err != nil { + return err + } + if err := _Map_String_IsolationGroupMetrics_Encode(v.IsolationGroupMetrics, sw); err != nil { + return err + } + if err := sw.WriteFieldEnd(); err != nil { + return err + } + } + + if v.NewTasksPerSecond != nil { + if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 60, Type: wire.TDouble}); err != nil { + return err + } + if err := sw.WriteDouble(*(v.NewTasksPerSecond)); err != nil { + return err + } + if err := sw.WriteFieldEnd(); err != nil { + return err + } + } + return sw.WriteStructEnd() } @@ -92870,6 +93302,52 @@ func _TaskIDBlock_Decode(sr stream.Reader) (*TaskIDBlock, error) { return &v, err } +func _IsolationGroupMetrics_Decode(sr stream.Reader) (*IsolationGroupMetrics, error) { + var v IsolationGroupMetrics + err := v.Decode(sr) + return &v, err +} + +func _Map_String_IsolationGroupMetrics_Decode(sr stream.Reader) (map[string]*IsolationGroupMetrics, error) { + mh, err := sr.ReadMapBegin() + if err != nil { + return nil, err + } + + if mh.KeyType != wire.TBinary || mh.ValueType != wire.TStruct { + for i := 0; i < mh.Length; i++ { + if err := sr.Skip(mh.KeyType); err != nil { + return nil, err + } + + if err := sr.Skip(mh.ValueType); err != nil { + return nil, err + } + } + return nil, sr.ReadMapEnd() + } + + o := make(map[string]*IsolationGroupMetrics, mh.Length) + for i := 0; i < mh.Length; i++ { + k, err := sr.ReadString() + if err != nil { + return nil, err + } + + v, err := _IsolationGroupMetrics_Decode(sr) + if err != nil { + return nil, err + } + + o[k] = v + } + + if err = sr.ReadMapEnd(); err != nil { + return nil, err + } + return o, err +} + // Decode deserializes a TaskListStatus struct directly from its Thrift-level // representation, without going through an intemediary type. // @@ -92926,6 +93404,20 @@ func (v *TaskListStatus) Decode(sr stream.Reader) error { return err } + case fh.ID == 50 && fh.Type == wire.TMap: + v.IsolationGroupMetrics, err = _Map_String_IsolationGroupMetrics_Decode(sr) + if err != nil { + return err + } + + case fh.ID == 60 && fh.Type == wire.TDouble: + var x float64 + x, err = sr.ReadDouble() + v.NewTasksPerSecond = &x + if err != nil { + return err + } + default: if err := sr.Skip(fh.Type); err != nil { return err @@ -92955,7 +93447,7 @@ func (v *TaskListStatus) String() string { return "" } - var fields [5]string + var fields [7]string i := 0 if v.BacklogCountHint != nil { fields[i] = fmt.Sprintf("BacklogCountHint: %v", *(v.BacklogCountHint)) @@ -92977,10 +93469,35 @@ func (v *TaskListStatus) String() string { fields[i] = fmt.Sprintf("TaskIDBlock: %v", v.TaskIDBlock) i++ } + if v.IsolationGroupMetrics != nil { + fields[i] = fmt.Sprintf("IsolationGroupMetrics: %v", v.IsolationGroupMetrics) + i++ + } + if v.NewTasksPerSecond != nil { + fields[i] = fmt.Sprintf("NewTasksPerSecond: %v", *(v.NewTasksPerSecond)) + i++ + } return fmt.Sprintf("TaskListStatus{%v}", strings.Join(fields[:i], ", ")) } +func _Map_String_IsolationGroupMetrics_Equals(lhs, rhs map[string]*IsolationGroupMetrics) bool { + if len(lhs) != len(rhs) { + return false + } + + for lk, lv := range lhs { + rv, ok := rhs[lk] + if !ok { + return false + } + if !lv.Equals(rv) { + return false + } + } + return true +} + // Equals returns true if all the fields of this TaskListStatus match the // provided TaskListStatus. // @@ -93006,10 +93523,27 @@ func (v *TaskListStatus) Equals(rhs *TaskListStatus) bool { if !((v.TaskIDBlock == nil && rhs.TaskIDBlock == nil) || (v.TaskIDBlock != nil && rhs.TaskIDBlock != nil && v.TaskIDBlock.Equals(rhs.TaskIDBlock))) { return false } + if !((v.IsolationGroupMetrics == nil && rhs.IsolationGroupMetrics == nil) || (v.IsolationGroupMetrics != nil && rhs.IsolationGroupMetrics != nil && _Map_String_IsolationGroupMetrics_Equals(v.IsolationGroupMetrics, rhs.IsolationGroupMetrics))) { + return false + } + if !_Double_EqualsPtr(v.NewTasksPerSecond, rhs.NewTasksPerSecond) { + return false + } return true } +type _Map_String_IsolationGroupMetrics_Zapper map[string]*IsolationGroupMetrics + +// MarshalLogObject implements zapcore.ObjectMarshaler, enabling +// fast logging of _Map_String_IsolationGroupMetrics_Zapper. +func (m _Map_String_IsolationGroupMetrics_Zapper) MarshalLogObject(enc zapcore.ObjectEncoder) (err error) { + for k, v := range m { + err = multierr.Append(err, enc.AddObject((string)(k), v)) + } + return err +} + // MarshalLogObject implements zapcore.ObjectMarshaler, enabling // fast logging of TaskListStatus. func (v *TaskListStatus) MarshalLogObject(enc zapcore.ObjectEncoder) (err error) { @@ -93031,6 +93565,12 @@ func (v *TaskListStatus) MarshalLogObject(enc zapcore.ObjectEncoder) (err error) if v.TaskIDBlock != nil { err = multierr.Append(err, enc.AddObject("taskIDBlock", v.TaskIDBlock)) } + if v.IsolationGroupMetrics != nil { + err = multierr.Append(err, enc.AddObject("isolationGroupMetrics", (_Map_String_IsolationGroupMetrics_Zapper)(v.IsolationGroupMetrics))) + } + if v.NewTasksPerSecond != nil { + enc.AddFloat64("newTasksPerSecond", *v.NewTasksPerSecond) + } return err } @@ -93109,6 +93649,36 @@ func (v *TaskListStatus) IsSetTaskIDBlock() bool { return v != nil && v.TaskIDBlock != nil } +// GetIsolationGroupMetrics returns the value of IsolationGroupMetrics if it is set or its +// zero value if it is unset. +func (v *TaskListStatus) GetIsolationGroupMetrics() (o map[string]*IsolationGroupMetrics) { + if v != nil && v.IsolationGroupMetrics != nil { + return v.IsolationGroupMetrics + } + + return +} + +// IsSetIsolationGroupMetrics returns true if IsolationGroupMetrics is not nil. +func (v *TaskListStatus) IsSetIsolationGroupMetrics() bool { + return v != nil && v.IsolationGroupMetrics != nil +} + +// GetNewTasksPerSecond returns the value of NewTasksPerSecond if it is set or its +// zero value if it is unset. +func (v *TaskListStatus) GetNewTasksPerSecond() (o float64) { + if v != nil && v.NewTasksPerSecond != nil { + return *v.NewTasksPerSecond + } + + return +} + +// IsSetNewTasksPerSecond returns true if NewTasksPerSecond is not nil. +func (v *TaskListStatus) IsSetNewTasksPerSecond() bool { + return v != nil && v.NewTasksPerSecond != nil +} + type TaskListType int32 const ( @@ -108044,8 +108614,8 @@ var ThriftModule = &thriftreflect.ThriftModule{ Name: "shared", Package: "github.com/uber/cadence/.gen/go/shared", FilePath: "shared.thrift", - SHA1: "c24af4a97d8b3051d71619467e1f84024a8f8757", + SHA1: "bf5034f668932edbcdf841c60ad09c82119c1a95", Raw: rawIDL, } -const rawIDL = "// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nnamespace java com.uber.cadence\n\nexception BadRequestError {\n 1: required string message\n}\n\nexception InternalServiceError {\n 1: required string message\n}\n\nexception InternalDataInconsistencyError {\n 1: required string message\n}\n\nexception DomainAlreadyExistsError {\n 1: required string message\n}\n\nexception WorkflowExecutionAlreadyStartedError {\n 10: optional string message\n 20: optional string startRequestId\n 30: optional string runId\n}\n\nexception WorkflowExecutionAlreadyCompletedError {\n 1: required string message\n}\n\nexception EntityNotExistsError {\n 1: required string message\n 2: optional string currentCluster\n 3: optional string activeCluster\n}\n\nexception ServiceBusyError {\n 1: required string message\n 2: optional string reason\n}\n\nexception CancellationAlreadyRequestedError {\n 1: required string message\n}\n\nexception QueryFailedError {\n 1: required string message\n}\n\nexception DomainNotActiveError {\n 1: required string message\n 2: required string domainName\n 3: required string currentCluster\n 4: required string activeCluster\n}\n\nexception LimitExceededError {\n 1: required string message\n}\n\nexception AccessDeniedError {\n 1: required string message\n}\n\nexception RetryTaskV2Error {\n 1: required string message\n 2: optional string domainId\n 3: optional string workflowId\n 4: optional string runId\n 5: optional i64 (js.type = \"Long\") startEventId\n 6: optional i64 (js.type = \"Long\") startEventVersion\n 7: optional i64 (js.type = \"Long\") endEventId\n 8: optional i64 (js.type = \"Long\") endEventVersion\n}\n\nexception ClientVersionNotSupportedError {\n 1: required string featureVersion\n 2: required string clientImpl\n 3: required string supportedVersions\n}\n\nexception FeatureNotEnabledError {\n 1: required string featureFlag\n}\n\nexception CurrentBranchChangedError {\n 10: required string message\n 20: required binary currentBranchToken\n}\n\nexception RemoteSyncMatchedError {\n 10: required string message\n}\n\nexception StickyWorkerUnavailableError {\n 1: required string message\n}\n\nexception TaskListNotOwnedByHostError {\n 1: required string ownedByIdentity\n 2: required string myIdentity\n 3: required string tasklistName\n}\n\nenum WorkflowIdReusePolicy {\n /*\n * allow start a workflow execution using the same workflow ID,\n * when workflow not running, and the last execution close state is in\n * [terminated, cancelled, timeouted, failed].\n */\n AllowDuplicateFailedOnly,\n /*\n * allow start a workflow execution using the same workflow ID,\n * when workflow not running.\n */\n AllowDuplicate,\n /*\n * do not allow start a workflow execution using the same workflow ID at all\n */\n RejectDuplicate,\n /*\n * if a workflow is running using the same workflow ID, terminate it and start a new one\n */\n TerminateIfRunning,\n}\n\nenum DomainStatus {\n REGISTERED,\n DEPRECATED,\n DELETED,\n}\n\nenum TimeoutType {\n START_TO_CLOSE,\n SCHEDULE_TO_START,\n SCHEDULE_TO_CLOSE,\n HEARTBEAT,\n}\n\nenum ParentClosePolicy {\n\tABANDON,\n\tREQUEST_CANCEL,\n\tTERMINATE,\n}\n\n\n// whenever this list of decision is changed\n// do change the mutableStateBuilder.go\n// function shouldBufferEvent\n// to make sure wo do the correct event ordering\nenum DecisionType {\n ScheduleActivityTask,\n RequestCancelActivityTask,\n StartTimer,\n CompleteWorkflowExecution,\n FailWorkflowExecution,\n CancelTimer,\n CancelWorkflowExecution,\n RequestCancelExternalWorkflowExecution,\n RecordMarker,\n ContinueAsNewWorkflowExecution,\n StartChildWorkflowExecution,\n SignalExternalWorkflowExecution,\n UpsertWorkflowSearchAttributes,\n}\n\nenum EventType {\n WorkflowExecutionStarted,\n WorkflowExecutionCompleted,\n WorkflowExecutionFailed,\n WorkflowExecutionTimedOut,\n DecisionTaskScheduled,\n DecisionTaskStarted,\n DecisionTaskCompleted,\n DecisionTaskTimedOut\n DecisionTaskFailed,\n ActivityTaskScheduled,\n ActivityTaskStarted,\n ActivityTaskCompleted,\n ActivityTaskFailed,\n ActivityTaskTimedOut,\n ActivityTaskCancelRequested,\n RequestCancelActivityTaskFailed,\n ActivityTaskCanceled,\n TimerStarted,\n TimerFired,\n CancelTimerFailed,\n TimerCanceled,\n WorkflowExecutionCancelRequested,\n WorkflowExecutionCanceled,\n RequestCancelExternalWorkflowExecutionInitiated,\n RequestCancelExternalWorkflowExecutionFailed,\n ExternalWorkflowExecutionCancelRequested,\n MarkerRecorded,\n WorkflowExecutionSignaled,\n WorkflowExecutionTerminated,\n WorkflowExecutionContinuedAsNew,\n StartChildWorkflowExecutionInitiated,\n StartChildWorkflowExecutionFailed,\n ChildWorkflowExecutionStarted,\n ChildWorkflowExecutionCompleted,\n ChildWorkflowExecutionFailed,\n ChildWorkflowExecutionCanceled,\n ChildWorkflowExecutionTimedOut,\n ChildWorkflowExecutionTerminated,\n SignalExternalWorkflowExecutionInitiated,\n SignalExternalWorkflowExecutionFailed,\n ExternalWorkflowExecutionSignaled,\n UpsertWorkflowSearchAttributes,\n}\n\nenum DecisionTaskFailedCause {\n UNHANDLED_DECISION,\n BAD_SCHEDULE_ACTIVITY_ATTRIBUTES,\n BAD_REQUEST_CANCEL_ACTIVITY_ATTRIBUTES,\n BAD_START_TIMER_ATTRIBUTES,\n BAD_CANCEL_TIMER_ATTRIBUTES,\n BAD_RECORD_MARKER_ATTRIBUTES,\n BAD_COMPLETE_WORKFLOW_EXECUTION_ATTRIBUTES,\n BAD_FAIL_WORKFLOW_EXECUTION_ATTRIBUTES,\n BAD_CANCEL_WORKFLOW_EXECUTION_ATTRIBUTES,\n BAD_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_ATTRIBUTES,\n BAD_CONTINUE_AS_NEW_ATTRIBUTES,\n START_TIMER_DUPLICATE_ID,\n RESET_STICKY_TASKLIST,\n WORKFLOW_WORKER_UNHANDLED_FAILURE,\n BAD_SIGNAL_WORKFLOW_EXECUTION_ATTRIBUTES,\n BAD_START_CHILD_EXECUTION_ATTRIBUTES,\n FORCE_CLOSE_DECISION,\n FAILOVER_CLOSE_DECISION,\n BAD_SIGNAL_INPUT_SIZE,\n RESET_WORKFLOW,\n BAD_BINARY,\n SCHEDULE_ACTIVITY_DUPLICATE_ID,\n BAD_SEARCH_ATTRIBUTES,\n}\n\nenum DecisionTaskTimedOutCause {\n TIMEOUT,\n RESET,\n}\n\nenum CancelExternalWorkflowExecutionFailedCause {\n UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION,\n WORKFLOW_ALREADY_COMPLETED,\n}\n\nenum SignalExternalWorkflowExecutionFailedCause {\n UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION,\n WORKFLOW_ALREADY_COMPLETED,\n}\n\nenum ChildWorkflowExecutionFailedCause {\n WORKFLOW_ALREADY_RUNNING,\n}\n\n// TODO: when migrating to gRPC, add a running / none status,\n// currently, customer is using null / nil as an indication\n// that workflow is still running\nenum WorkflowExecutionCloseStatus {\n COMPLETED,\n FAILED,\n CANCELED,\n TERMINATED,\n CONTINUED_AS_NEW,\n TIMED_OUT,\n}\n\nenum QueryTaskCompletedType {\n COMPLETED,\n FAILED,\n}\n\nenum QueryResultType {\n ANSWERED,\n FAILED,\n}\n\nenum PendingActivityState {\n SCHEDULED,\n STARTED,\n CANCEL_REQUESTED,\n}\n\nenum PendingDecisionState {\n SCHEDULED,\n STARTED,\n}\n\nenum HistoryEventFilterType {\n ALL_EVENT,\n CLOSE_EVENT,\n}\n\nenum TaskListKind {\n NORMAL,\n STICKY,\n}\n\nenum ArchivalStatus {\n DISABLED,\n ENABLED,\n}\n\nenum IndexedValueType {\n STRING,\n KEYWORD,\n INT,\n DOUBLE,\n BOOL,\n DATETIME,\n}\n\nstruct Header {\n 10: optional map fields\n}\n\nstruct WorkflowType {\n 10: optional string name\n}\n\nstruct ActivityType {\n 10: optional string name\n}\n\nstruct TaskList {\n 10: optional string name\n 20: optional TaskListKind kind\n}\n\nenum EncodingType {\n ThriftRW,\n JSON,\n}\n\nenum QueryRejectCondition {\n // NOT_OPEN indicates that query should be rejected if workflow is not open\n NOT_OPEN\n // NOT_COMPLETED_CLEANLY indicates that query should be rejected if workflow did not complete cleanly\n NOT_COMPLETED_CLEANLY\n}\n\nenum QueryConsistencyLevel {\n // EVENTUAL indicates that query should be eventually consistent\n EVENTUAL\n // STRONG indicates that any events that came before query should be reflected in workflow state before running query\n STRONG\n}\n\nstruct DataBlob {\n 10: optional EncodingType EncodingType\n 20: optional binary Data\n}\n\nstruct TaskListMetadata {\n 10: optional double maxTasksPerSecond\n}\n\nstruct WorkflowExecution {\n 10: optional string workflowId\n 20: optional string runId\n}\n\nstruct Memo {\n 10: optional map fields\n}\n\nstruct SearchAttributes {\n 10: optional map indexedFields\n}\n\nstruct WorkerVersionInfo {\n 10: optional string impl\n 20: optional string featureVersion\n}\n\nstruct WorkflowExecutionInfo {\n 10: optional WorkflowExecution execution\n 20: optional WorkflowType type\n 30: optional i64 (js.type = \"Long\") startTime\n 40: optional i64 (js.type = \"Long\") closeTime\n 50: optional WorkflowExecutionCloseStatus closeStatus\n 60: optional i64 (js.type = \"Long\") historyLength\n 70: optional string parentDomainId\n 71: optional string parentDomainName\n 72: optional i64 parentInitatedId\n 80: optional WorkflowExecution parentExecution\n 90: optional i64 (js.type = \"Long\") executionTime\n 100: optional Memo memo\n 101: optional SearchAttributes searchAttributes\n 110: optional ResetPoints autoResetPoints\n 120: optional string taskList\n 130: optional bool isCron\n 140: optional i64 (js.type = \"Long\") updateTime\n 150: optional map partitionConfig\n}\n\nstruct WorkflowExecutionConfiguration {\n 10: optional TaskList taskList\n 20: optional i32 executionStartToCloseTimeoutSeconds\n 30: optional i32 taskStartToCloseTimeoutSeconds\n// 40: optional ChildPolicy childPolicy -- Removed but reserve the IDL order number\n}\n\nstruct TransientDecisionInfo {\n 10: optional HistoryEvent scheduledEvent\n 20: optional HistoryEvent startedEvent\n}\n\nstruct ScheduleActivityTaskDecisionAttributes {\n 10: optional string activityId\n 20: optional ActivityType activityType\n 25: optional string domain\n 30: optional TaskList taskList\n 40: optional binary input\n 45: optional i32 scheduleToCloseTimeoutSeconds\n 50: optional i32 scheduleToStartTimeoutSeconds\n 55: optional i32 startToCloseTimeoutSeconds\n 60: optional i32 heartbeatTimeoutSeconds\n 70: optional RetryPolicy retryPolicy\n 80: optional Header header\n 90: optional bool requestLocalDispatch\n}\n\nstruct ActivityLocalDispatchInfo{\n 10: optional string activityId\n 20: optional i64 (js.type = \"Long\") scheduledTimestamp\n 30: optional i64 (js.type = \"Long\") startedTimestamp\n 40: optional i64 (js.type = \"Long\") scheduledTimestampOfThisAttempt\n 50: optional binary taskToken\n}\n\nstruct RequestCancelActivityTaskDecisionAttributes {\n 10: optional string activityId\n}\n\nstruct StartTimerDecisionAttributes {\n 10: optional string timerId\n 20: optional i64 (js.type = \"Long\") startToFireTimeoutSeconds\n}\n\nstruct CompleteWorkflowExecutionDecisionAttributes {\n 10: optional binary result\n}\n\nstruct FailWorkflowExecutionDecisionAttributes {\n 10: optional string reason\n 20: optional binary details\n}\n\nstruct CancelTimerDecisionAttributes {\n 10: optional string timerId\n}\n\nstruct CancelWorkflowExecutionDecisionAttributes {\n 10: optional binary details\n}\n\nstruct RequestCancelExternalWorkflowExecutionDecisionAttributes {\n 10: optional string domain\n 20: optional string workflowId\n 30: optional string runId\n 40: optional binary control\n 50: optional bool childWorkflowOnly\n}\n\nstruct SignalExternalWorkflowExecutionDecisionAttributes {\n 10: optional string domain\n 20: optional WorkflowExecution execution\n 30: optional string signalName\n 40: optional binary input\n 50: optional binary control\n 60: optional bool childWorkflowOnly\n}\n\nstruct UpsertWorkflowSearchAttributesDecisionAttributes {\n 10: optional SearchAttributes searchAttributes\n}\n\nstruct RecordMarkerDecisionAttributes {\n 10: optional string markerName\n 20: optional binary details\n 30: optional Header header\n}\n\nstruct ContinueAsNewWorkflowExecutionDecisionAttributes {\n 10: optional WorkflowType workflowType\n 20: optional TaskList taskList\n 30: optional binary input\n 40: optional i32 executionStartToCloseTimeoutSeconds\n 50: optional i32 taskStartToCloseTimeoutSeconds\n 60: optional i32 backoffStartIntervalInSeconds\n 70: optional RetryPolicy retryPolicy\n 80: optional ContinueAsNewInitiator initiator\n 90: optional string failureReason\n 100: optional binary failureDetails\n 110: optional binary lastCompletionResult\n 120: optional string cronSchedule\n 130: optional Header header\n 140: optional Memo memo\n 150: optional SearchAttributes searchAttributes\n 160: optional i32 jitterStartSeconds\n}\n\nstruct StartChildWorkflowExecutionDecisionAttributes {\n 10: optional string domain\n 20: optional string workflowId\n 30: optional WorkflowType workflowType\n 40: optional TaskList taskList\n 50: optional binary input\n 60: optional i32 executionStartToCloseTimeoutSeconds\n 70: optional i32 taskStartToCloseTimeoutSeconds\n// 80: optional ChildPolicy childPolicy -- Removed but reserve the IDL order number\n 81: optional ParentClosePolicy parentClosePolicy\n 90: optional binary control\n 100: optional WorkflowIdReusePolicy workflowIdReusePolicy\n 110: optional RetryPolicy retryPolicy\n 120: optional string cronSchedule\n 130: optional Header header\n 140: optional Memo memo\n 150: optional SearchAttributes searchAttributes\n}\n\nstruct Decision {\n 10: optional DecisionType decisionType\n 20: optional ScheduleActivityTaskDecisionAttributes scheduleActivityTaskDecisionAttributes\n 25: optional StartTimerDecisionAttributes startTimerDecisionAttributes\n 30: optional CompleteWorkflowExecutionDecisionAttributes completeWorkflowExecutionDecisionAttributes\n 35: optional FailWorkflowExecutionDecisionAttributes failWorkflowExecutionDecisionAttributes\n 40: optional RequestCancelActivityTaskDecisionAttributes requestCancelActivityTaskDecisionAttributes\n 50: optional CancelTimerDecisionAttributes cancelTimerDecisionAttributes\n 60: optional CancelWorkflowExecutionDecisionAttributes cancelWorkflowExecutionDecisionAttributes\n 70: optional RequestCancelExternalWorkflowExecutionDecisionAttributes requestCancelExternalWorkflowExecutionDecisionAttributes\n 80: optional RecordMarkerDecisionAttributes recordMarkerDecisionAttributes\n 90: optional ContinueAsNewWorkflowExecutionDecisionAttributes continueAsNewWorkflowExecutionDecisionAttributes\n 100: optional StartChildWorkflowExecutionDecisionAttributes startChildWorkflowExecutionDecisionAttributes\n 110: optional SignalExternalWorkflowExecutionDecisionAttributes signalExternalWorkflowExecutionDecisionAttributes\n 120: optional UpsertWorkflowSearchAttributesDecisionAttributes upsertWorkflowSearchAttributesDecisionAttributes\n}\n\nstruct WorkflowExecutionStartedEventAttributes {\n 10: optional WorkflowType workflowType\n 12: optional string parentWorkflowDomain\n 14: optional WorkflowExecution parentWorkflowExecution\n 16: optional i64 (js.type = \"Long\") parentInitiatedEventId\n 20: optional TaskList taskList\n 30: optional binary input\n 40: optional i32 executionStartToCloseTimeoutSeconds\n 50: optional i32 taskStartToCloseTimeoutSeconds\n// 52: optional ChildPolicy childPolicy -- Removed but reserve the IDL order number\n 54: optional string continuedExecutionRunId\n 55: optional ContinueAsNewInitiator initiator\n 56: optional string continuedFailureReason\n 57: optional binary continuedFailureDetails\n 58: optional binary lastCompletionResult\n 59: optional string originalExecutionRunId // This is the runID when the WorkflowExecutionStarted event is written\n 60: optional string identity\n 61: optional string firstExecutionRunId // This is the very first runID along the chain of ContinueAsNew and Reset.\n 62: optional i64 (js.type = \"Long\") firstScheduledTimeNano\n 70: optional RetryPolicy retryPolicy\n 80: optional i32 attempt\n 90: optional i64 (js.type = \"Long\") expirationTimestamp\n 100: optional string cronSchedule\n 110: optional i32 firstDecisionTaskBackoffSeconds\n 120: optional Memo memo\n 121: optional SearchAttributes searchAttributes\n 130: optional ResetPoints prevAutoResetPoints\n 140: optional Header header\n 150: optional map partitionConfig\n 160: optional string requestId\n}\n\nstruct ResetPoints{\n 10: optional list points\n}\n\n struct ResetPointInfo{\n 10: optional string binaryChecksum\n 20: optional string runId\n 30: optional i64 firstDecisionCompletedId\n 40: optional i64 (js.type = \"Long\") createdTimeNano\n 50: optional i64 (js.type = \"Long\") expiringTimeNano //the time that the run is deleted due to retention\n 60: optional bool resettable // false if the resset point has pending childWFs/reqCancels/signalExternals.\n}\n\nstruct WorkflowExecutionCompletedEventAttributes {\n 10: optional binary result\n 20: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n}\n\nstruct WorkflowExecutionFailedEventAttributes {\n 10: optional string reason\n 20: optional binary details\n 30: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n}\n\nstruct WorkflowExecutionTimedOutEventAttributes {\n 10: optional TimeoutType timeoutType\n}\n\nenum ContinueAsNewInitiator {\n Decider,\n RetryPolicy,\n CronSchedule,\n}\n\nstruct WorkflowExecutionContinuedAsNewEventAttributes {\n 10: optional string newExecutionRunId\n 20: optional WorkflowType workflowType\n 30: optional TaskList taskList\n 40: optional binary input\n 50: optional i32 executionStartToCloseTimeoutSeconds\n 60: optional i32 taskStartToCloseTimeoutSeconds\n 70: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 80: optional i32 backoffStartIntervalInSeconds\n 90: optional ContinueAsNewInitiator initiator\n 100: optional string failureReason\n 110: optional binary failureDetails\n 120: optional binary lastCompletionResult\n 130: optional Header header\n 140: optional Memo memo\n 150: optional SearchAttributes searchAttributes\n}\n\nstruct DecisionTaskScheduledEventAttributes {\n 10: optional TaskList taskList\n 20: optional i32 startToCloseTimeoutSeconds\n 30: optional i64 (js.type = \"Long\") attempt\n}\n\nstruct DecisionTaskStartedEventAttributes {\n 10: optional i64 (js.type = \"Long\") scheduledEventId\n 20: optional string identity\n 30: optional string requestId\n}\n\nstruct DecisionTaskCompletedEventAttributes {\n 10: optional binary executionContext\n 20: optional i64 (js.type = \"Long\") scheduledEventId\n 30: optional i64 (js.type = \"Long\") startedEventId\n 40: optional string identity\n 50: optional string binaryChecksum\n}\n\nstruct DecisionTaskTimedOutEventAttributes {\n 10: optional i64 (js.type = \"Long\") scheduledEventId\n 20: optional i64 (js.type = \"Long\") startedEventId\n 30: optional TimeoutType timeoutType\n // for reset workflow\n 40: optional string baseRunId\n 50: optional string newRunId\n 60: optional i64 (js.type = \"Long\") forkEventVersion\n 70: optional string reason\n 80: optional DecisionTaskTimedOutCause cause\n 90: optional string requestId\n}\n\nstruct DecisionTaskFailedEventAttributes {\n 10: optional i64 (js.type = \"Long\") scheduledEventId\n 20: optional i64 (js.type = \"Long\") startedEventId\n 30: optional DecisionTaskFailedCause cause\n 35: optional binary details\n 40: optional string identity\n 50: optional string reason\n // for reset workflow\n 60: optional string baseRunId\n 70: optional string newRunId\n 80: optional i64 (js.type = \"Long\") forkEventVersion\n 90: optional string binaryChecksum\n 100: optional string requestId\n}\n\nstruct ActivityTaskScheduledEventAttributes {\n 10: optional string activityId\n 20: optional ActivityType activityType\n 25: optional string domain\n 30: optional TaskList taskList\n 40: optional binary input\n 45: optional i32 scheduleToCloseTimeoutSeconds\n 50: optional i32 scheduleToStartTimeoutSeconds\n 55: optional i32 startToCloseTimeoutSeconds\n 60: optional i32 heartbeatTimeoutSeconds\n 90: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 110: optional RetryPolicy retryPolicy\n 120: optional Header header\n}\n\nstruct ActivityTaskStartedEventAttributes {\n 10: optional i64 (js.type = \"Long\") scheduledEventId\n 20: optional string identity\n 30: optional string requestId\n 40: optional i32 attempt\n 50: optional string lastFailureReason\n 60: optional binary lastFailureDetails\n}\n\nstruct ActivityTaskCompletedEventAttributes {\n 10: optional binary result\n 20: optional i64 (js.type = \"Long\") scheduledEventId\n 30: optional i64 (js.type = \"Long\") startedEventId\n 40: optional string identity\n}\n\nstruct ActivityTaskFailedEventAttributes {\n 10: optional string reason\n 20: optional binary details\n 30: optional i64 (js.type = \"Long\") scheduledEventId\n 40: optional i64 (js.type = \"Long\") startedEventId\n 50: optional string identity\n}\n\nstruct ActivityTaskTimedOutEventAttributes {\n 05: optional binary details\n 10: optional i64 (js.type = \"Long\") scheduledEventId\n 20: optional i64 (js.type = \"Long\") startedEventId\n 30: optional TimeoutType timeoutType\n // For retry activity, it may have a failure before timeout. It's important to keep those information for debug.\n // Client can also provide the info for making next decision\n 40: optional string lastFailureReason\n 50: optional binary lastFailureDetails\n}\n\nstruct ActivityTaskCancelRequestedEventAttributes {\n 10: optional string activityId\n 20: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n}\n\nstruct RequestCancelActivityTaskFailedEventAttributes{\n 10: optional string activityId\n 20: optional string cause\n 30: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n}\n\nstruct ActivityTaskCanceledEventAttributes {\n 10: optional binary details\n 20: optional i64 (js.type = \"Long\") latestCancelRequestedEventId\n 30: optional i64 (js.type = \"Long\") scheduledEventId\n 40: optional i64 (js.type = \"Long\") startedEventId\n 50: optional string identity\n}\n\nstruct TimerStartedEventAttributes {\n 10: optional string timerId\n 20: optional i64 (js.type = \"Long\") startToFireTimeoutSeconds\n 30: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n}\n\nstruct TimerFiredEventAttributes {\n 10: optional string timerId\n 20: optional i64 (js.type = \"Long\") startedEventId\n}\n\nstruct TimerCanceledEventAttributes {\n 10: optional string timerId\n 20: optional i64 (js.type = \"Long\") startedEventId\n 30: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 40: optional string identity\n}\n\nstruct CancelTimerFailedEventAttributes {\n 10: optional string timerId\n 20: optional string cause\n 30: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 40: optional string identity\n}\n\nstruct WorkflowExecutionCancelRequestedEventAttributes {\n 10: optional string cause\n 20: optional i64 (js.type = \"Long\") externalInitiatedEventId\n 30: optional WorkflowExecution externalWorkflowExecution\n 40: optional string identity\n 50: optional string requestId\n}\n\nstruct WorkflowExecutionCanceledEventAttributes {\n 10: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 20: optional binary details\n}\n\nstruct MarkerRecordedEventAttributes {\n 10: optional string markerName\n 20: optional binary details\n 30: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 40: optional Header header\n}\n\nstruct WorkflowExecutionSignaledEventAttributes {\n 10: optional string signalName\n 20: optional binary input\n 30: optional string identity\n 40: optional string requestId\n}\n\nstruct WorkflowExecutionTerminatedEventAttributes {\n 10: optional string reason\n 20: optional binary details\n 30: optional string identity\n}\n\nstruct RequestCancelExternalWorkflowExecutionInitiatedEventAttributes {\n 10: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 20: optional string domain\n 30: optional WorkflowExecution workflowExecution\n 40: optional binary control\n 50: optional bool childWorkflowOnly\n}\n\nstruct RequestCancelExternalWorkflowExecutionFailedEventAttributes {\n 10: optional CancelExternalWorkflowExecutionFailedCause cause\n 20: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 30: optional string domain\n 40: optional WorkflowExecution workflowExecution\n 50: optional i64 (js.type = \"Long\") initiatedEventId\n 60: optional binary control\n}\n\nstruct ExternalWorkflowExecutionCancelRequestedEventAttributes {\n 10: optional i64 (js.type = \"Long\") initiatedEventId\n 20: optional string domain\n 30: optional WorkflowExecution workflowExecution\n}\n\nstruct SignalExternalWorkflowExecutionInitiatedEventAttributes {\n 10: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 20: optional string domain\n 30: optional WorkflowExecution workflowExecution\n 40: optional string signalName\n 50: optional binary input\n 60: optional binary control\n 70: optional bool childWorkflowOnly\n}\n\nstruct SignalExternalWorkflowExecutionFailedEventAttributes {\n 10: optional SignalExternalWorkflowExecutionFailedCause cause\n 20: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 30: optional string domain\n 40: optional WorkflowExecution workflowExecution\n 50: optional i64 (js.type = \"Long\") initiatedEventId\n 60: optional binary control\n}\n\nstruct ExternalWorkflowExecutionSignaledEventAttributes {\n 10: optional i64 (js.type = \"Long\") initiatedEventId\n 20: optional string domain\n 30: optional WorkflowExecution workflowExecution\n 40: optional binary control\n}\n\nstruct UpsertWorkflowSearchAttributesEventAttributes {\n 10: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 20: optional SearchAttributes searchAttributes\n}\n\nstruct StartChildWorkflowExecutionInitiatedEventAttributes {\n 10: optional string domain\n 20: optional string workflowId\n 30: optional WorkflowType workflowType\n 40: optional TaskList taskList\n 50: optional binary input\n 60: optional i32 executionStartToCloseTimeoutSeconds\n 70: optional i32 taskStartToCloseTimeoutSeconds\n// 80: optional ChildPolicy childPolicy -- Removed but reserve the IDL order number\n 81: optional ParentClosePolicy parentClosePolicy\n 90: optional binary control\n 100: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 110: optional WorkflowIdReusePolicy workflowIdReusePolicy\n 120: optional RetryPolicy retryPolicy\n 130: optional string cronSchedule\n 140: optional Header header\n 150: optional Memo memo\n 160: optional SearchAttributes searchAttributes\n 170: optional i32 delayStartSeconds\n 180: optional i32 jitterStartSeconds\n 190: optional i64 (js.type = \"Long\") firstRunAtTimestamp\n}\n\nstruct StartChildWorkflowExecutionFailedEventAttributes {\n 10: optional string domain\n 20: optional string workflowId\n 30: optional WorkflowType workflowType\n 40: optional ChildWorkflowExecutionFailedCause cause\n 50: optional binary control\n 60: optional i64 (js.type = \"Long\") initiatedEventId\n 70: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n}\n\nstruct ChildWorkflowExecutionStartedEventAttributes {\n 10: optional string domain\n 20: optional i64 (js.type = \"Long\") initiatedEventId\n 30: optional WorkflowExecution workflowExecution\n 40: optional WorkflowType workflowType\n 50: optional Header header\n}\n\nstruct ChildWorkflowExecutionCompletedEventAttributes {\n 10: optional binary result\n 20: optional string domain\n 30: optional WorkflowExecution workflowExecution\n 40: optional WorkflowType workflowType\n 50: optional i64 (js.type = \"Long\") initiatedEventId\n 60: optional i64 (js.type = \"Long\") startedEventId\n}\n\nstruct ChildWorkflowExecutionFailedEventAttributes {\n 10: optional string reason\n 20: optional binary details\n 30: optional string domain\n 40: optional WorkflowExecution workflowExecution\n 50: optional WorkflowType workflowType\n 60: optional i64 (js.type = \"Long\") initiatedEventId\n 70: optional i64 (js.type = \"Long\") startedEventId\n}\n\nstruct ChildWorkflowExecutionCanceledEventAttributes {\n 10: optional binary details\n 20: optional string domain\n 30: optional WorkflowExecution workflowExecution\n 40: optional WorkflowType workflowType\n 50: optional i64 (js.type = \"Long\") initiatedEventId\n 60: optional i64 (js.type = \"Long\") startedEventId\n}\n\nstruct ChildWorkflowExecutionTimedOutEventAttributes {\n 10: optional TimeoutType timeoutType\n 20: optional string domain\n 30: optional WorkflowExecution workflowExecution\n 40: optional WorkflowType workflowType\n 50: optional i64 (js.type = \"Long\") initiatedEventId\n 60: optional i64 (js.type = \"Long\") startedEventId\n}\n\nstruct ChildWorkflowExecutionTerminatedEventAttributes {\n 10: optional string domain\n 20: optional WorkflowExecution workflowExecution\n 30: optional WorkflowType workflowType\n 40: optional i64 (js.type = \"Long\") initiatedEventId\n 50: optional i64 (js.type = \"Long\") startedEventId\n}\n\nstruct HistoryEvent {\n 10: optional i64 (js.type = \"Long\") eventId\n 20: optional i64 (js.type = \"Long\") timestamp\n 30: optional EventType eventType\n 35: optional i64 (js.type = \"Long\") version\n 36: optional i64 (js.type = \"Long\") taskId\n 40: optional WorkflowExecutionStartedEventAttributes workflowExecutionStartedEventAttributes\n 50: optional WorkflowExecutionCompletedEventAttributes workflowExecutionCompletedEventAttributes\n 60: optional WorkflowExecutionFailedEventAttributes workflowExecutionFailedEventAttributes\n 70: optional WorkflowExecutionTimedOutEventAttributes workflowExecutionTimedOutEventAttributes\n 80: optional DecisionTaskScheduledEventAttributes decisionTaskScheduledEventAttributes\n 90: optional DecisionTaskStartedEventAttributes decisionTaskStartedEventAttributes\n 100: optional DecisionTaskCompletedEventAttributes decisionTaskCompletedEventAttributes\n 110: optional DecisionTaskTimedOutEventAttributes decisionTaskTimedOutEventAttributes\n 120: optional DecisionTaskFailedEventAttributes decisionTaskFailedEventAttributes\n 130: optional ActivityTaskScheduledEventAttributes activityTaskScheduledEventAttributes\n 140: optional ActivityTaskStartedEventAttributes activityTaskStartedEventAttributes\n 150: optional ActivityTaskCompletedEventAttributes activityTaskCompletedEventAttributes\n 160: optional ActivityTaskFailedEventAttributes activityTaskFailedEventAttributes\n 170: optional ActivityTaskTimedOutEventAttributes activityTaskTimedOutEventAttributes\n 180: optional TimerStartedEventAttributes timerStartedEventAttributes\n 190: optional TimerFiredEventAttributes timerFiredEventAttributes\n 200: optional ActivityTaskCancelRequestedEventAttributes activityTaskCancelRequestedEventAttributes\n 210: optional RequestCancelActivityTaskFailedEventAttributes requestCancelActivityTaskFailedEventAttributes\n 220: optional ActivityTaskCanceledEventAttributes activityTaskCanceledEventAttributes\n 230: optional TimerCanceledEventAttributes timerCanceledEventAttributes\n 240: optional CancelTimerFailedEventAttributes cancelTimerFailedEventAttributes\n 250: optional MarkerRecordedEventAttributes markerRecordedEventAttributes\n 260: optional WorkflowExecutionSignaledEventAttributes workflowExecutionSignaledEventAttributes\n 270: optional WorkflowExecutionTerminatedEventAttributes workflowExecutionTerminatedEventAttributes\n 280: optional WorkflowExecutionCancelRequestedEventAttributes workflowExecutionCancelRequestedEventAttributes\n 290: optional WorkflowExecutionCanceledEventAttributes workflowExecutionCanceledEventAttributes\n 300: optional RequestCancelExternalWorkflowExecutionInitiatedEventAttributes requestCancelExternalWorkflowExecutionInitiatedEventAttributes\n 310: optional RequestCancelExternalWorkflowExecutionFailedEventAttributes requestCancelExternalWorkflowExecutionFailedEventAttributes\n 320: optional ExternalWorkflowExecutionCancelRequestedEventAttributes externalWorkflowExecutionCancelRequestedEventAttributes\n 330: optional WorkflowExecutionContinuedAsNewEventAttributes workflowExecutionContinuedAsNewEventAttributes\n 340: optional StartChildWorkflowExecutionInitiatedEventAttributes startChildWorkflowExecutionInitiatedEventAttributes\n 350: optional StartChildWorkflowExecutionFailedEventAttributes startChildWorkflowExecutionFailedEventAttributes\n 360: optional ChildWorkflowExecutionStartedEventAttributes childWorkflowExecutionStartedEventAttributes\n 370: optional ChildWorkflowExecutionCompletedEventAttributes childWorkflowExecutionCompletedEventAttributes\n 380: optional ChildWorkflowExecutionFailedEventAttributes childWorkflowExecutionFailedEventAttributes\n 390: optional ChildWorkflowExecutionCanceledEventAttributes childWorkflowExecutionCanceledEventAttributes\n 400: optional ChildWorkflowExecutionTimedOutEventAttributes childWorkflowExecutionTimedOutEventAttributes\n 410: optional ChildWorkflowExecutionTerminatedEventAttributes childWorkflowExecutionTerminatedEventAttributes\n 420: optional SignalExternalWorkflowExecutionInitiatedEventAttributes signalExternalWorkflowExecutionInitiatedEventAttributes\n 430: optional SignalExternalWorkflowExecutionFailedEventAttributes signalExternalWorkflowExecutionFailedEventAttributes\n 440: optional ExternalWorkflowExecutionSignaledEventAttributes externalWorkflowExecutionSignaledEventAttributes\n 450: optional UpsertWorkflowSearchAttributesEventAttributes upsertWorkflowSearchAttributesEventAttributes\n}\n\nstruct History {\n 10: optional list events\n}\n\nstruct WorkflowExecutionFilter {\n 10: optional string workflowId\n 20: optional string runId\n}\n\nstruct WorkflowTypeFilter {\n 10: optional string name\n}\n\nstruct StartTimeFilter {\n 10: optional i64 (js.type = \"Long\") earliestTime\n 20: optional i64 (js.type = \"Long\") latestTime\n}\n\nstruct DomainInfo {\n 10: optional string name\n 20: optional DomainStatus status\n 30: optional string description\n 40: optional string ownerEmail\n // A key-value map for any customized purpose\n 50: optional map data\n 60: optional string uuid\n}\n\nstruct DomainConfiguration {\n 10: optional i32 workflowExecutionRetentionPeriodInDays\n 20: optional bool emitMetric\n 60: optional IsolationGroupConfiguration isolationgroups\n 70: optional BadBinaries badBinaries\n 80: optional ArchivalStatus historyArchivalStatus\n 90: optional string historyArchivalURI\n 100: optional ArchivalStatus visibilityArchivalStatus\n 110: optional string visibilityArchivalURI\n 120: optional AsyncWorkflowConfiguration AsyncWorkflowConfiguration\n}\n\nstruct FailoverInfo {\n 10: optional i64 (js.type = \"Long\") failoverVersion\n 20: optional i64 (js.type = \"Long\") failoverStartTimestamp\n 30: optional i64 (js.type = \"Long\") failoverExpireTimestamp\n 40: optional i32 completedShardCount\n 50: optional list pendingShards\n}\n\nstruct BadBinaries{\n 10: optional map binaries\n}\n\nstruct BadBinaryInfo{\n 10: optional string reason\n 20: optional string operator\n 30: optional i64 (js.type = \"Long\") createdTimeNano\n}\n\nstruct UpdateDomainInfo {\n 10: optional string description\n 20: optional string ownerEmail\n // A key-value map for any customized purpose\n 30: optional map data\n}\n\nstruct ClusterReplicationConfiguration {\n 10: optional string clusterName\n}\n\nstruct DomainReplicationConfiguration {\n 10: optional string activeClusterName\n 20: optional list clusters\n}\n\nstruct RegisterDomainRequest {\n 10: optional string name\n 20: optional string description\n 30: optional string ownerEmail\n 40: optional i32 workflowExecutionRetentionPeriodInDays\n 50: optional bool emitMetric = true\n 60: optional list clusters\n 70: optional string activeClusterName\n // A key-value map for any customized purpose\n 80: optional map data\n 90: optional string securityToken\n 120: optional bool isGlobalDomain\n 130: optional ArchivalStatus historyArchivalStatus\n 140: optional string historyArchivalURI\n 150: optional ArchivalStatus visibilityArchivalStatus\n 160: optional string visibilityArchivalURI\n}\n\nstruct ListDomainsRequest {\n 10: optional i32 pageSize\n 20: optional binary nextPageToken\n}\n\nstruct ListDomainsResponse {\n 10: optional list domains\n 20: optional binary nextPageToken\n}\n\nstruct DescribeDomainRequest {\n 10: optional string name\n 20: optional string uuid\n}\n\nstruct DescribeDomainResponse {\n 10: optional DomainInfo domainInfo\n 20: optional DomainConfiguration configuration\n 30: optional DomainReplicationConfiguration replicationConfiguration\n 40: optional i64 (js.type = \"Long\") failoverVersion\n 50: optional bool isGlobalDomain\n 60: optional FailoverInfo failoverInfo\n}\n\nstruct UpdateDomainRequest {\n 10: optional string name\n 20: optional UpdateDomainInfo updatedInfo\n 30: optional DomainConfiguration configuration\n 40: optional DomainReplicationConfiguration replicationConfiguration\n 50: optional string securityToken\n 60: optional string deleteBadBinary\n 70: optional i32 failoverTimeoutInSeconds\n}\n\nstruct UpdateDomainResponse {\n 10: optional DomainInfo domainInfo\n 20: optional DomainConfiguration configuration\n 30: optional DomainReplicationConfiguration replicationConfiguration\n 40: optional i64 (js.type = \"Long\") failoverVersion\n 50: optional bool isGlobalDomain\n}\n\nstruct DeprecateDomainRequest {\n 10: optional string name\n 20: optional string securityToken\n}\n\nstruct StartWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional string workflowId\n 30: optional WorkflowType workflowType\n 40: optional TaskList taskList\n 50: optional binary input\n 60: optional i32 executionStartToCloseTimeoutSeconds\n 70: optional i32 taskStartToCloseTimeoutSeconds\n 80: optional string identity\n 90: optional string requestId\n 100: optional WorkflowIdReusePolicy workflowIdReusePolicy\n// 110: optional ChildPolicy childPolicy -- Removed but reserve the IDL order number\n 120: optional RetryPolicy retryPolicy\n 130: optional string cronSchedule\n 140: optional Memo memo\n 141: optional SearchAttributes searchAttributes\n 150: optional Header header\n 160: optional i32 delayStartSeconds\n 170: optional i32 jitterStartSeconds\n 180: optional i64 (js.type = \"Long\") firstRunAtTimestamp\n}\n\nstruct StartWorkflowExecutionResponse {\n 10: optional string runId\n}\n\nstruct StartWorkflowExecutionAsyncRequest {\n 10: optional StartWorkflowExecutionRequest request\n}\n\nstruct StartWorkflowExecutionAsyncResponse {\n}\n\nstruct RestartWorkflowExecutionResponse {\n 10: optional string runId\n}\n\nstruct DiagnoseWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional WorkflowExecution workflowExecution\n 30: optional string identity\n}\n\nstruct DiagnoseWorkflowExecutionResponse {\n 10: optional string domain\n 20: optional WorkflowExecution diagnosticWorkflowExecution\n}\n\nstruct PollForDecisionTaskRequest {\n 10: optional string domain\n 20: optional TaskList taskList\n 30: optional string identity\n 40: optional string binaryChecksum\n}\n\nstruct PollForDecisionTaskResponse {\n 10: optional binary taskToken\n 20: optional WorkflowExecution workflowExecution\n 30: optional WorkflowType workflowType\n 40: optional i64 (js.type = \"Long\") previousStartedEventId\n 50: optional i64 (js.type = \"Long\") startedEventId\n 51: optional i64 (js.type = 'Long') attempt\n 54: optional i64 (js.type = \"Long\") backlogCountHint\n 60: optional History history\n 70: optional binary nextPageToken\n 80: optional WorkflowQuery query\n 90: optional TaskList WorkflowExecutionTaskList\n 100: optional i64 (js.type = \"Long\") scheduledTimestamp\n 110: optional i64 (js.type = \"Long\") startedTimestamp\n 120: optional map queries\n 130: optional i64 (js.type = 'Long') nextEventId\n 140: optional i64 (js.type = 'Long') totalHistoryBytes\n 150: optional AutoConfigHint autoConfigHint\n}\n\nstruct StickyExecutionAttributes {\n 10: optional TaskList workerTaskList\n 20: optional i32 scheduleToStartTimeoutSeconds\n}\n\nstruct RespondDecisionTaskCompletedRequest {\n 10: optional binary taskToken\n 20: optional list decisions\n 30: optional binary executionContext\n 40: optional string identity\n 50: optional StickyExecutionAttributes stickyAttributes\n 60: optional bool returnNewDecisionTask\n 70: optional bool forceCreateNewDecisionTask\n 80: optional string binaryChecksum\n 90: optional map queryResults\n}\n\nstruct RespondDecisionTaskCompletedResponse {\n 10: optional PollForDecisionTaskResponse decisionTask\n 20: optional map activitiesToDispatchLocally\n}\n\nstruct RespondDecisionTaskFailedRequest {\n 10: optional binary taskToken\n 20: optional DecisionTaskFailedCause cause\n 30: optional binary details\n 40: optional string identity\n 50: optional string binaryChecksum\n}\n\nstruct PollForActivityTaskRequest {\n 10: optional string domain\n 20: optional TaskList taskList\n 30: optional string identity\n 40: optional TaskListMetadata taskListMetadata\n}\n\nstruct PollForActivityTaskResponse {\n 10: optional binary taskToken\n 20: optional WorkflowExecution workflowExecution\n 30: optional string activityId\n 40: optional ActivityType activityType\n 50: optional binary input\n 70: optional i64 (js.type = \"Long\") scheduledTimestamp\n 80: optional i32 scheduleToCloseTimeoutSeconds\n 90: optional i64 (js.type = \"Long\") startedTimestamp\n 100: optional i32 startToCloseTimeoutSeconds\n 110: optional i32 heartbeatTimeoutSeconds\n 120: optional i32 attempt\n 130: optional i64 (js.type = \"Long\") scheduledTimestampOfThisAttempt\n 140: optional binary heartbeatDetails\n 150: optional WorkflowType workflowType\n 160: optional string workflowDomain\n 170: optional Header header\n 180: optional AutoConfigHint autoConfigHint\n}\n\nstruct RecordActivityTaskHeartbeatRequest {\n 10: optional binary taskToken\n 20: optional binary details\n 30: optional string identity\n}\n\nstruct RecordActivityTaskHeartbeatByIDRequest {\n 10: optional string domain\n 20: optional string workflowID\n 30: optional string runID\n 40: optional string activityID\n 50: optional binary details\n 60: optional string identity\n}\n\nstruct RecordActivityTaskHeartbeatResponse {\n 10: optional bool cancelRequested\n}\n\nstruct RespondActivityTaskCompletedRequest {\n 10: optional binary taskToken\n 20: optional binary result\n 30: optional string identity\n}\n\nstruct RespondActivityTaskFailedRequest {\n 10: optional binary taskToken\n 20: optional string reason\n 30: optional binary details\n 40: optional string identity\n}\n\nstruct RespondActivityTaskCanceledRequest {\n 10: optional binary taskToken\n 20: optional binary details\n 30: optional string identity\n}\n\nstruct RespondActivityTaskCompletedByIDRequest {\n 10: optional string domain\n 20: optional string workflowID\n 30: optional string runID\n 40: optional string activityID\n 50: optional binary result\n 60: optional string identity\n}\n\nstruct RespondActivityTaskFailedByIDRequest {\n 10: optional string domain\n 20: optional string workflowID\n 30: optional string runID\n 40: optional string activityID\n 50: optional string reason\n 60: optional binary details\n 70: optional string identity\n}\n\nstruct RespondActivityTaskCanceledByIDRequest {\n 10: optional string domain\n 20: optional string workflowID\n 30: optional string runID\n 40: optional string activityID\n 50: optional binary details\n 60: optional string identity\n}\n\nstruct RequestCancelWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional WorkflowExecution workflowExecution\n 30: optional string identity\n 40: optional string requestId\n 50: optional string cause\n 60: optional string firstExecutionRunID\n}\n\nstruct GetWorkflowExecutionHistoryRequest {\n 10: optional string domain\n 20: optional WorkflowExecution execution\n 30: optional i32 maximumPageSize\n 40: optional binary nextPageToken\n 50: optional bool waitForNewEvent\n 60: optional HistoryEventFilterType HistoryEventFilterType\n 70: optional bool skipArchival\n}\n\nstruct GetWorkflowExecutionHistoryResponse {\n 10: optional History history\n 11: optional list rawHistory\n 20: optional binary nextPageToken\n 30: optional bool archived\n}\n\nstruct SignalWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional WorkflowExecution workflowExecution\n 30: optional string signalName\n 40: optional binary input\n 50: optional string identity\n 60: optional string requestId\n 70: optional binary control\n}\n\nstruct SignalWithStartWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional string workflowId\n 30: optional WorkflowType workflowType\n 40: optional TaskList taskList\n 50: optional binary input\n 60: optional i32 executionStartToCloseTimeoutSeconds\n 70: optional i32 taskStartToCloseTimeoutSeconds\n 80: optional string identity\n 90: optional string requestId\n 100: optional WorkflowIdReusePolicy workflowIdReusePolicy\n 110: optional string signalName\n 120: optional binary signalInput\n 130: optional binary control\n 140: optional RetryPolicy retryPolicy\n 150: optional string cronSchedule\n 160: optional Memo memo\n 161: optional SearchAttributes searchAttributes\n 170: optional Header header\n 180: optional i32 delayStartSeconds\n 190: optional i32 jitterStartSeconds\n 200: optional i64 (js.type = \"Long\") firstRunAtTimestamp\n}\n\nstruct SignalWithStartWorkflowExecutionAsyncRequest {\n 10: optional SignalWithStartWorkflowExecutionRequest request\n}\n\nstruct SignalWithStartWorkflowExecutionAsyncResponse {\n}\n\nstruct RestartWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional WorkflowExecution workflowExecution\n 30: optional string reason\n 40: optional string identity\n}\nstruct TerminateWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional WorkflowExecution workflowExecution\n 30: optional string reason\n 40: optional binary details\n 50: optional string identity\n 60: optional string firstExecutionRunID\n}\n\nstruct ResetWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional WorkflowExecution workflowExecution\n 30: optional string reason\n 40: optional i64 (js.type = \"Long\") decisionFinishEventId\n 50: optional string requestId\n 60: optional bool skipSignalReapply\n}\n\nstruct ResetWorkflowExecutionResponse {\n 10: optional string runId\n}\n\nstruct ListOpenWorkflowExecutionsRequest {\n 10: optional string domain\n 20: optional i32 maximumPageSize\n 30: optional binary nextPageToken\n 40: optional StartTimeFilter StartTimeFilter\n 50: optional WorkflowExecutionFilter executionFilter\n 60: optional WorkflowTypeFilter typeFilter\n}\n\nstruct ListOpenWorkflowExecutionsResponse {\n 10: optional list executions\n 20: optional binary nextPageToken\n}\n\nstruct ListClosedWorkflowExecutionsRequest {\n 10: optional string domain\n 20: optional i32 maximumPageSize\n 30: optional binary nextPageToken\n 40: optional StartTimeFilter StartTimeFilter\n 50: optional WorkflowExecutionFilter executionFilter\n 60: optional WorkflowTypeFilter typeFilter\n 70: optional WorkflowExecutionCloseStatus statusFilter\n}\n\nstruct ListClosedWorkflowExecutionsResponse {\n 10: optional list executions\n 20: optional binary nextPageToken\n}\n\nstruct ListWorkflowExecutionsRequest {\n 10: optional string domain\n 20: optional i32 pageSize\n 30: optional binary nextPageToken\n 40: optional string query\n}\n\nstruct ListWorkflowExecutionsResponse {\n 10: optional list executions\n 20: optional binary nextPageToken\n}\n\nstruct ListArchivedWorkflowExecutionsRequest {\n 10: optional string domain\n 20: optional i32 pageSize\n 30: optional binary nextPageToken\n 40: optional string query\n}\n\nstruct ListArchivedWorkflowExecutionsResponse {\n 10: optional list executions\n 20: optional binary nextPageToken\n}\n\nstruct CountWorkflowExecutionsRequest {\n 10: optional string domain\n 20: optional string query\n}\n\nstruct CountWorkflowExecutionsResponse {\n 10: optional i64 count\n}\n\nstruct GetSearchAttributesResponse {\n 10: optional map keys\n}\n\nstruct QueryWorkflowRequest {\n 10: optional string domain\n 20: optional WorkflowExecution execution\n 30: optional WorkflowQuery query\n // QueryRejectCondition can used to reject the query if workflow state does not satisify condition\n 40: optional QueryRejectCondition queryRejectCondition\n 50: optional QueryConsistencyLevel queryConsistencyLevel\n}\n\nstruct QueryRejected {\n 10: optional WorkflowExecutionCloseStatus closeStatus\n}\n\nstruct QueryWorkflowResponse {\n 10: optional binary queryResult\n 20: optional QueryRejected queryRejected\n}\n\nstruct WorkflowQuery {\n 10: optional string queryType\n 20: optional binary queryArgs\n}\n\nstruct ResetStickyTaskListRequest {\n 10: optional string domain\n 20: optional WorkflowExecution execution\n}\n\nstruct ResetStickyTaskListResponse {\n // The reason to keep this response is to allow returning\n // information in the future.\n}\n\nstruct RespondQueryTaskCompletedRequest {\n 10: optional binary taskToken\n 20: optional QueryTaskCompletedType completedType\n 30: optional binary queryResult\n 40: optional string errorMessage\n 50: optional WorkerVersionInfo workerVersionInfo\n}\n\nstruct WorkflowQueryResult {\n 10: optional QueryResultType resultType\n 20: optional binary answer\n 30: optional string errorMessage\n}\n\nstruct DescribeWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional WorkflowExecution execution\n}\n\nstruct PendingActivityInfo {\n 10: optional string activityID\n 20: optional ActivityType activityType\n 30: optional PendingActivityState state\n 40: optional binary heartbeatDetails\n 50: optional i64 (js.type = \"Long\") lastHeartbeatTimestamp\n 60: optional i64 (js.type = \"Long\") lastStartedTimestamp\n 70: optional i32 attempt\n 80: optional i32 maximumAttempts\n 90: optional i64 (js.type = \"Long\") scheduledTimestamp\n 100: optional i64 (js.type = \"Long\") expirationTimestamp\n 110: optional string lastFailureReason\n 120: optional string lastWorkerIdentity\n 130: optional binary lastFailureDetails\n 140: optional string startedWorkerIdentity\n 150: optional i64 (js.type = \"Long\") scheduleID\n}\n\nstruct PendingDecisionInfo {\n 10: optional PendingDecisionState state\n 20: optional i64 (js.type = \"Long\") scheduledTimestamp\n 30: optional i64 (js.type = \"Long\") startedTimestamp\n 40: optional i64 attempt\n 50: optional i64 (js.type = \"Long\") originalScheduledTimestamp\n 60: optional i64 (js.type = \"Long\") scheduleID\n}\n\nstruct PendingChildExecutionInfo {\n 1: optional string domain\n 10: optional string workflowID\n 20: optional string runID\n 30: optional string workflowTypName\n 40: optional i64 (js.type = \"Long\") initiatedID\n 50: optional ParentClosePolicy parentClosePolicy\n}\n\nstruct DescribeWorkflowExecutionResponse {\n 10: optional WorkflowExecutionConfiguration executionConfiguration\n 20: optional WorkflowExecutionInfo workflowExecutionInfo\n 30: optional list pendingActivities\n 40: optional list pendingChildren\n 50: optional PendingDecisionInfo pendingDecision\n}\n\nstruct DescribeTaskListRequest {\n 10: optional string domain\n 20: optional TaskList taskList\n 30: optional TaskListType taskListType\n 40: optional bool includeTaskListStatus\n}\n\nstruct DescribeTaskListResponse {\n 10: optional list pollers\n 20: optional TaskListStatus taskListStatus\n}\n\nstruct GetTaskListsByDomainRequest {\n 10: optional string domainName\n}\n\nstruct GetTaskListsByDomainResponse {\n 10: optional map decisionTaskListMap\n 20: optional map activityTaskListMap\n}\n\nstruct ListTaskListPartitionsRequest {\n 10: optional string domain\n 20: optional TaskList taskList\n}\n\nstruct TaskListPartitionMetadata {\n 10: optional string key\n 20: optional string ownerHostName\n}\n\nstruct ListTaskListPartitionsResponse {\n 10: optional list activityTaskListPartitions\n 20: optional list decisionTaskListPartitions\n}\n\nstruct TaskListStatus {\n 10: optional i64 (js.type = \"Long\") backlogCountHint\n 20: optional i64 (js.type = \"Long\") readLevel\n 30: optional i64 (js.type = \"Long\") ackLevel\n 35: optional double ratePerSecond\n 40: optional TaskIDBlock taskIDBlock\n}\n\nstruct TaskIDBlock {\n 10: optional i64 (js.type = \"Long\") startID\n 20: optional i64 (js.type = \"Long\") endID\n}\n\n//At least one of the parameters needs to be provided\nstruct DescribeHistoryHostRequest {\n 10: optional string hostAddress //ip:port\n 20: optional i32 shardIdForHost\n 30: optional WorkflowExecution executionForHost\n}\n\nstruct RemoveTaskRequest {\n 10: optional i32 shardID\n 20: optional i32 type\n 30: optional i64 (js.type = \"Long\") taskID\n 40: optional i64 (js.type = \"Long\") visibilityTimestamp\n 50: optional string clusterName\n}\n\nstruct CloseShardRequest {\n 10: optional i32 shardID\n}\n\nstruct ResetQueueRequest {\n 10: optional i32 shardID\n 20: optional string clusterName\n 30: optional i32 type\n}\n\nstruct DescribeQueueRequest {\n 10: optional i32 shardID\n 20: optional string clusterName\n 30: optional i32 type\n}\n\nstruct DescribeQueueResponse {\n 10: optional list processingQueueStates\n}\n\nstruct DescribeShardDistributionRequest {\n 10: optional i32 pageSize\n 20: optional i32 pageID\n}\n\nstruct DescribeShardDistributionResponse {\n 10: optional i32 numberOfShards\n\n // ShardID to Address (ip:port) map\n 20: optional map shards\n}\n\nstruct DescribeHistoryHostResponse{\n 10: optional i32 numberOfShards\n 20: optional list shardIDs\n 30: optional DomainCacheInfo domainCache\n 40: optional string shardControllerStatus\n 50: optional string address\n}\n\nstruct DomainCacheInfo{\n 10: optional i64 numOfItemsInCacheByID\n 20: optional i64 numOfItemsInCacheByName\n}\n\nenum TaskListType {\n /*\n * Decision type of tasklist\n */\n Decision,\n /*\n * Activity type of tasklist\n */\n Activity,\n}\n\nstruct PollerInfo {\n // Unix Nano\n 10: optional i64 (js.type = \"Long\") lastAccessTime\n 20: optional string identity\n 30: optional double ratePerSecond\n}\n\nstruct RetryPolicy {\n // Interval of the first retry. If coefficient is 1.0 then it is used for all retries.\n 10: optional i32 initialIntervalInSeconds\n\n // Coefficient used to calculate the next retry interval.\n // The next retry interval is previous interval multiplied by the coefficient.\n // Must be 1 or larger.\n 20: optional double backoffCoefficient\n\n // Maximum interval between retries. Exponential backoff leads to interval increase.\n // This value is the cap of the increase. Default is 100x of initial interval.\n 30: optional i32 maximumIntervalInSeconds\n\n // Maximum number of attempts. When exceeded the retries stop even if not expired yet.\n // Must be 1 or bigger. Default is unlimited.\n 40: optional i32 maximumAttempts\n\n // Non-Retriable errors. Will stop retrying if error matches this list.\n 50: optional list nonRetriableErrorReasons\n\n // Expiration time for the whole retry process.\n 60: optional i32 expirationIntervalInSeconds\n}\n\n// HistoryBranchRange represents a piece of range for a branch.\nstruct HistoryBranchRange{\n // branchID of original branch forked from\n 10: optional string branchID\n // beinning node for the range, inclusive\n 20: optional i64 beginNodeID\n // ending node for the range, exclusive\n 30: optional i64 endNodeID\n}\n\n// For history persistence to serialize/deserialize branch details\nstruct HistoryBranch{\n 10: optional string treeID\n 20: optional string branchID\n 30: optional list ancestors\n}\n\n// VersionHistoryItem contains signal eventID and the corresponding version\nstruct VersionHistoryItem{\n 10: optional i64 (js.type = \"Long\") eventID\n 20: optional i64 (js.type = \"Long\") version\n}\n\n// VersionHistory contains the version history of a branch\nstruct VersionHistory{\n 10: optional binary branchToken\n 20: optional list items\n}\n\n// VersionHistories contains all version histories from all branches\nstruct VersionHistories{\n 10: optional i32 currentVersionHistoryIndex\n 20: optional list histories\n}\n\n// ReapplyEventsRequest is the request for reapply events API\nstruct ReapplyEventsRequest{\n 10: optional string domainName\n 20: optional WorkflowExecution workflowExecution\n 30: optional DataBlob events\n}\n\n// SupportedClientVersions contains the support versions for client library\nstruct SupportedClientVersions{\n 10: optional string goSdk\n 20: optional string javaSdk\n}\n\n// ClusterInfo contains information about cadence cluster\nstruct ClusterInfo{\n 10: optional SupportedClientVersions supportedClientVersions\n}\n\nstruct RefreshWorkflowTasksRequest {\n 10: optional string domain\n 20: optional WorkflowExecution execution\n}\n\nstruct FeatureFlags {\n\t10: optional bool WorkflowExecutionAlreadyCompletedErrorEnabled\n}\n\nenum CrossClusterTaskType {\n StartChildExecution\n CancelExecution\n SignalExecution\n RecordChildWorkflowExecutionComplete\n ApplyParentClosePolicy\n}\n\nenum CrossClusterTaskFailedCause {\n DOMAIN_NOT_ACTIVE\n DOMAIN_NOT_EXISTS\n WORKFLOW_ALREADY_RUNNING\n WORKFLOW_NOT_EXISTS\n WORKFLOW_ALREADY_COMPLETED\n UNCATEGORIZED\n}\n\nenum GetTaskFailedCause {\n SERVICE_BUSY\n TIMEOUT\n SHARD_OWNERSHIP_LOST\n UNCATEGORIZED\n}\n\nstruct CrossClusterTaskInfo {\n 10: optional string domainID\n 20: optional string workflowID\n 30: optional string runID\n 40: optional CrossClusterTaskType taskType\n 50: optional i16 taskState\n 60: optional i64 (js.type = \"Long\") taskID\n 70: optional i64 (js.type = \"Long\") visibilityTimestamp\n}\n\nstruct CrossClusterStartChildExecutionRequestAttributes {\n 10: optional string targetDomainID\n 20: optional string requestID\n 30: optional i64 (js.type = \"Long\") initiatedEventID\n 40: optional StartChildWorkflowExecutionInitiatedEventAttributes initiatedEventAttributes\n // targetRunID is for scheduling first decision task\n // targetWorkflowID is available in initiatedEventAttributes\n 50: optional string targetRunID\n 60: optional map partitionConfig\n}\n\nstruct CrossClusterStartChildExecutionResponseAttributes {\n 10: optional string runID\n}\n\nstruct CrossClusterCancelExecutionRequestAttributes {\n 10: optional string targetDomainID\n 20: optional string targetWorkflowID\n 30: optional string targetRunID\n 40: optional string requestID\n 50: optional i64 (js.type = \"Long\") initiatedEventID\n 60: optional bool childWorkflowOnly\n}\n\nstruct CrossClusterCancelExecutionResponseAttributes {\n}\n\nstruct CrossClusterSignalExecutionRequestAttributes {\n 10: optional string targetDomainID\n 20: optional string targetWorkflowID\n 30: optional string targetRunID\n 40: optional string requestID\n 50: optional i64 (js.type = \"Long\") initiatedEventID\n 60: optional bool childWorkflowOnly\n 70: optional string signalName\n 80: optional binary signalInput\n 90: optional binary control\n}\n\nstruct CrossClusterSignalExecutionResponseAttributes {\n}\n\nstruct CrossClusterRecordChildWorkflowExecutionCompleteRequestAttributes {\n 10: optional string targetDomainID\n 20: optional string targetWorkflowID\n 30: optional string targetRunID\n 40: optional i64 (js.type = \"Long\") initiatedEventID\n 50: optional HistoryEvent completionEvent\n}\n\nstruct CrossClusterRecordChildWorkflowExecutionCompleteResponseAttributes {\n}\n\nstruct ApplyParentClosePolicyAttributes {\n 10: optional string childDomainID\n 20: optional string childWorkflowID\n 30: optional string childRunID\n 40: optional ParentClosePolicy parentClosePolicy\n}\n\nstruct ApplyParentClosePolicyStatus {\n 10: optional bool completed\n 20: optional CrossClusterTaskFailedCause failedCause\n}\n\nstruct ApplyParentClosePolicyRequest {\n 10: optional ApplyParentClosePolicyAttributes child\n 20: optional ApplyParentClosePolicyStatus status\n}\n\nstruct CrossClusterApplyParentClosePolicyRequestAttributes {\n 10: optional list children\n}\n\nstruct ApplyParentClosePolicyResult {\n 10: optional ApplyParentClosePolicyAttributes child\n 20: optional CrossClusterTaskFailedCause failedCause\n}\n\nstruct CrossClusterApplyParentClosePolicyResponseAttributes {\n 10: optional list childrenStatus\n}\n\nstruct CrossClusterTaskRequest {\n 10: optional CrossClusterTaskInfo taskInfo\n 20: optional CrossClusterStartChildExecutionRequestAttributes startChildExecutionAttributes\n 30: optional CrossClusterCancelExecutionRequestAttributes cancelExecutionAttributes\n 40: optional CrossClusterSignalExecutionRequestAttributes signalExecutionAttributes\n 50: optional CrossClusterRecordChildWorkflowExecutionCompleteRequestAttributes recordChildWorkflowExecutionCompleteAttributes\n 60: optional CrossClusterApplyParentClosePolicyRequestAttributes applyParentClosePolicyAttributes\n}\n\nstruct CrossClusterTaskResponse {\n 10: optional i64 (js.type = \"Long\") taskID\n 20: optional CrossClusterTaskType taskType\n 30: optional i16 taskState\n 40: optional CrossClusterTaskFailedCause failedCause\n 50: optional CrossClusterStartChildExecutionResponseAttributes startChildExecutionAttributes\n 60: optional CrossClusterCancelExecutionResponseAttributes cancelExecutionAttributes\n 70: optional CrossClusterSignalExecutionResponseAttributes signalExecutionAttributes\n 80: optional CrossClusterRecordChildWorkflowExecutionCompleteResponseAttributes recordChildWorkflowExecutionCompleteAttributes\n 90: optional CrossClusterApplyParentClosePolicyResponseAttributes applyParentClosePolicyAttributes\n}\n\nstruct GetCrossClusterTasksRequest {\n 10: optional list shardIDs\n 20: optional string targetCluster\n}\n\nstruct GetCrossClusterTasksResponse {\n 10: optional map> tasksByShard\n 20: optional map failedCauseByShard\n}\n\nstruct RespondCrossClusterTasksCompletedRequest {\n 10: optional i32 shardID\n 20: optional string targetCluster\n 30: optional list taskResponses\n 40: optional bool fetchNewTasks\n}\n\nstruct RespondCrossClusterTasksCompletedResponse {\n 10: optional list tasks\n}\n\nenum IsolationGroupState {\n INVALID,\n HEALTHY,\n DRAINED,\n}\n\nstruct IsolationGroupPartition {\n 10: optional string name\n 20: optional IsolationGroupState state\n}\n\nstruct IsolationGroupConfiguration {\n 10: optional list isolationGroups\n}\n\nstruct AsyncWorkflowConfiguration {\n 10: optional bool enabled\n // PredefinedQueueName is the name of the predefined queue in cadence server config's asyncWorkflowQueues\n 20: optional string predefinedQueueName\n // queueType is the type of the queue if predefined_queue_name is not used\n 30: optional string queueType\n // queueConfig is the configuration for the queue if predefined_queue_name is not used\n 40: optional DataBlob queueConfig\n}\n\n/**\n* Any is a logical duplicate of google.protobuf.Any.\n*\n* The intent of the type is the same, but it is not intended to be directly\n* compatible with google.protobuf.Any or any Thrift equivalent - this blob is\n* RPC-type agnostic by design (as the underlying data may be transported over\n* proto or thrift), and the data-bytes may be in any encoding.\n*\n* This is intentionally different from DataBlob, which supports only a handful\n* of known encodings so it can be interpreted everywhere. Any supports literally\n* any contents, and needs to be considered opaque until it is given to something\n* that is expecting it.\n*\n* See ValueType to interpret the contents.\n**/\nstruct Any {\n // Type-string describing value's contents, and intentionally avoiding the\n // name \"type\" as it is often a special term.\n // This should usually be a hard-coded string of some kind.\n 10: optional string ValueType\n // Arbitrarily-encoded bytes, to be deserialized by a runtime implementation.\n // The contents are described by ValueType.\n 20: optional binary Value\n}\n\nstruct AutoConfigHint {\n 10: optional bool enableAutoConfig\n 20: optional i64 pollerWaitTimeInMs\n}\n" +const rawIDL = "// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nnamespace java com.uber.cadence\n\nexception BadRequestError {\n 1: required string message\n}\n\nexception InternalServiceError {\n 1: required string message\n}\n\nexception InternalDataInconsistencyError {\n 1: required string message\n}\n\nexception DomainAlreadyExistsError {\n 1: required string message\n}\n\nexception WorkflowExecutionAlreadyStartedError {\n 10: optional string message\n 20: optional string startRequestId\n 30: optional string runId\n}\n\nexception WorkflowExecutionAlreadyCompletedError {\n 1: required string message\n}\n\nexception EntityNotExistsError {\n 1: required string message\n 2: optional string currentCluster\n 3: optional string activeCluster\n}\n\nexception ServiceBusyError {\n 1: required string message\n 2: optional string reason\n}\n\nexception CancellationAlreadyRequestedError {\n 1: required string message\n}\n\nexception QueryFailedError {\n 1: required string message\n}\n\nexception DomainNotActiveError {\n 1: required string message\n 2: required string domainName\n 3: required string currentCluster\n 4: required string activeCluster\n}\n\nexception LimitExceededError {\n 1: required string message\n}\n\nexception AccessDeniedError {\n 1: required string message\n}\n\nexception RetryTaskV2Error {\n 1: required string message\n 2: optional string domainId\n 3: optional string workflowId\n 4: optional string runId\n 5: optional i64 (js.type = \"Long\") startEventId\n 6: optional i64 (js.type = \"Long\") startEventVersion\n 7: optional i64 (js.type = \"Long\") endEventId\n 8: optional i64 (js.type = \"Long\") endEventVersion\n}\n\nexception ClientVersionNotSupportedError {\n 1: required string featureVersion\n 2: required string clientImpl\n 3: required string supportedVersions\n}\n\nexception FeatureNotEnabledError {\n 1: required string featureFlag\n}\n\nexception CurrentBranchChangedError {\n 10: required string message\n 20: required binary currentBranchToken\n}\n\nexception RemoteSyncMatchedError {\n 10: required string message\n}\n\nexception StickyWorkerUnavailableError {\n 1: required string message\n}\n\nexception TaskListNotOwnedByHostError {\n 1: required string ownedByIdentity\n 2: required string myIdentity\n 3: required string tasklistName\n}\n\nenum WorkflowIdReusePolicy {\n /*\n * allow start a workflow execution using the same workflow ID,\n * when workflow not running, and the last execution close state is in\n * [terminated, cancelled, timeouted, failed].\n */\n AllowDuplicateFailedOnly,\n /*\n * allow start a workflow execution using the same workflow ID,\n * when workflow not running.\n */\n AllowDuplicate,\n /*\n * do not allow start a workflow execution using the same workflow ID at all\n */\n RejectDuplicate,\n /*\n * if a workflow is running using the same workflow ID, terminate it and start a new one\n */\n TerminateIfRunning,\n}\n\nenum DomainStatus {\n REGISTERED,\n DEPRECATED,\n DELETED,\n}\n\nenum TimeoutType {\n START_TO_CLOSE,\n SCHEDULE_TO_START,\n SCHEDULE_TO_CLOSE,\n HEARTBEAT,\n}\n\nenum ParentClosePolicy {\n\tABANDON,\n\tREQUEST_CANCEL,\n\tTERMINATE,\n}\n\n\n// whenever this list of decision is changed\n// do change the mutableStateBuilder.go\n// function shouldBufferEvent\n// to make sure wo do the correct event ordering\nenum DecisionType {\n ScheduleActivityTask,\n RequestCancelActivityTask,\n StartTimer,\n CompleteWorkflowExecution,\n FailWorkflowExecution,\n CancelTimer,\n CancelWorkflowExecution,\n RequestCancelExternalWorkflowExecution,\n RecordMarker,\n ContinueAsNewWorkflowExecution,\n StartChildWorkflowExecution,\n SignalExternalWorkflowExecution,\n UpsertWorkflowSearchAttributes,\n}\n\nenum EventType {\n WorkflowExecutionStarted,\n WorkflowExecutionCompleted,\n WorkflowExecutionFailed,\n WorkflowExecutionTimedOut,\n DecisionTaskScheduled,\n DecisionTaskStarted,\n DecisionTaskCompleted,\n DecisionTaskTimedOut\n DecisionTaskFailed,\n ActivityTaskScheduled,\n ActivityTaskStarted,\n ActivityTaskCompleted,\n ActivityTaskFailed,\n ActivityTaskTimedOut,\n ActivityTaskCancelRequested,\n RequestCancelActivityTaskFailed,\n ActivityTaskCanceled,\n TimerStarted,\n TimerFired,\n CancelTimerFailed,\n TimerCanceled,\n WorkflowExecutionCancelRequested,\n WorkflowExecutionCanceled,\n RequestCancelExternalWorkflowExecutionInitiated,\n RequestCancelExternalWorkflowExecutionFailed,\n ExternalWorkflowExecutionCancelRequested,\n MarkerRecorded,\n WorkflowExecutionSignaled,\n WorkflowExecutionTerminated,\n WorkflowExecutionContinuedAsNew,\n StartChildWorkflowExecutionInitiated,\n StartChildWorkflowExecutionFailed,\n ChildWorkflowExecutionStarted,\n ChildWorkflowExecutionCompleted,\n ChildWorkflowExecutionFailed,\n ChildWorkflowExecutionCanceled,\n ChildWorkflowExecutionTimedOut,\n ChildWorkflowExecutionTerminated,\n SignalExternalWorkflowExecutionInitiated,\n SignalExternalWorkflowExecutionFailed,\n ExternalWorkflowExecutionSignaled,\n UpsertWorkflowSearchAttributes,\n}\n\nenum DecisionTaskFailedCause {\n UNHANDLED_DECISION,\n BAD_SCHEDULE_ACTIVITY_ATTRIBUTES,\n BAD_REQUEST_CANCEL_ACTIVITY_ATTRIBUTES,\n BAD_START_TIMER_ATTRIBUTES,\n BAD_CANCEL_TIMER_ATTRIBUTES,\n BAD_RECORD_MARKER_ATTRIBUTES,\n BAD_COMPLETE_WORKFLOW_EXECUTION_ATTRIBUTES,\n BAD_FAIL_WORKFLOW_EXECUTION_ATTRIBUTES,\n BAD_CANCEL_WORKFLOW_EXECUTION_ATTRIBUTES,\n BAD_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_ATTRIBUTES,\n BAD_CONTINUE_AS_NEW_ATTRIBUTES,\n START_TIMER_DUPLICATE_ID,\n RESET_STICKY_TASKLIST,\n WORKFLOW_WORKER_UNHANDLED_FAILURE,\n BAD_SIGNAL_WORKFLOW_EXECUTION_ATTRIBUTES,\n BAD_START_CHILD_EXECUTION_ATTRIBUTES,\n FORCE_CLOSE_DECISION,\n FAILOVER_CLOSE_DECISION,\n BAD_SIGNAL_INPUT_SIZE,\n RESET_WORKFLOW,\n BAD_BINARY,\n SCHEDULE_ACTIVITY_DUPLICATE_ID,\n BAD_SEARCH_ATTRIBUTES,\n}\n\nenum DecisionTaskTimedOutCause {\n TIMEOUT,\n RESET,\n}\n\nenum CancelExternalWorkflowExecutionFailedCause {\n UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION,\n WORKFLOW_ALREADY_COMPLETED,\n}\n\nenum SignalExternalWorkflowExecutionFailedCause {\n UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION,\n WORKFLOW_ALREADY_COMPLETED,\n}\n\nenum ChildWorkflowExecutionFailedCause {\n WORKFLOW_ALREADY_RUNNING,\n}\n\n// TODO: when migrating to gRPC, add a running / none status,\n// currently, customer is using null / nil as an indication\n// that workflow is still running\nenum WorkflowExecutionCloseStatus {\n COMPLETED,\n FAILED,\n CANCELED,\n TERMINATED,\n CONTINUED_AS_NEW,\n TIMED_OUT,\n}\n\nenum QueryTaskCompletedType {\n COMPLETED,\n FAILED,\n}\n\nenum QueryResultType {\n ANSWERED,\n FAILED,\n}\n\nenum PendingActivityState {\n SCHEDULED,\n STARTED,\n CANCEL_REQUESTED,\n}\n\nenum PendingDecisionState {\n SCHEDULED,\n STARTED,\n}\n\nenum HistoryEventFilterType {\n ALL_EVENT,\n CLOSE_EVENT,\n}\n\nenum TaskListKind {\n NORMAL,\n STICKY,\n}\n\nenum ArchivalStatus {\n DISABLED,\n ENABLED,\n}\n\nenum IndexedValueType {\n STRING,\n KEYWORD,\n INT,\n DOUBLE,\n BOOL,\n DATETIME,\n}\n\nstruct Header {\n 10: optional map fields\n}\n\nstruct WorkflowType {\n 10: optional string name\n}\n\nstruct ActivityType {\n 10: optional string name\n}\n\nstruct TaskList {\n 10: optional string name\n 20: optional TaskListKind kind\n}\n\nenum EncodingType {\n ThriftRW,\n JSON,\n}\n\nenum QueryRejectCondition {\n // NOT_OPEN indicates that query should be rejected if workflow is not open\n NOT_OPEN\n // NOT_COMPLETED_CLEANLY indicates that query should be rejected if workflow did not complete cleanly\n NOT_COMPLETED_CLEANLY\n}\n\nenum QueryConsistencyLevel {\n // EVENTUAL indicates that query should be eventually consistent\n EVENTUAL\n // STRONG indicates that any events that came before query should be reflected in workflow state before running query\n STRONG\n}\n\nstruct DataBlob {\n 10: optional EncodingType EncodingType\n 20: optional binary Data\n}\n\nstruct TaskListMetadata {\n 10: optional double maxTasksPerSecond\n}\n\nstruct WorkflowExecution {\n 10: optional string workflowId\n 20: optional string runId\n}\n\nstruct Memo {\n 10: optional map fields\n}\n\nstruct SearchAttributes {\n 10: optional map indexedFields\n}\n\nstruct WorkerVersionInfo {\n 10: optional string impl\n 20: optional string featureVersion\n}\n\nstruct WorkflowExecutionInfo {\n 10: optional WorkflowExecution execution\n 20: optional WorkflowType type\n 30: optional i64 (js.type = \"Long\") startTime\n 40: optional i64 (js.type = \"Long\") closeTime\n 50: optional WorkflowExecutionCloseStatus closeStatus\n 60: optional i64 (js.type = \"Long\") historyLength\n 70: optional string parentDomainId\n 71: optional string parentDomainName\n 72: optional i64 parentInitatedId\n 80: optional WorkflowExecution parentExecution\n 90: optional i64 (js.type = \"Long\") executionTime\n 100: optional Memo memo\n 101: optional SearchAttributes searchAttributes\n 110: optional ResetPoints autoResetPoints\n 120: optional string taskList\n 130: optional bool isCron\n 140: optional i64 (js.type = \"Long\") updateTime\n 150: optional map partitionConfig\n}\n\nstruct WorkflowExecutionConfiguration {\n 10: optional TaskList taskList\n 20: optional i32 executionStartToCloseTimeoutSeconds\n 30: optional i32 taskStartToCloseTimeoutSeconds\n// 40: optional ChildPolicy childPolicy -- Removed but reserve the IDL order number\n}\n\nstruct TransientDecisionInfo {\n 10: optional HistoryEvent scheduledEvent\n 20: optional HistoryEvent startedEvent\n}\n\nstruct ScheduleActivityTaskDecisionAttributes {\n 10: optional string activityId\n 20: optional ActivityType activityType\n 25: optional string domain\n 30: optional TaskList taskList\n 40: optional binary input\n 45: optional i32 scheduleToCloseTimeoutSeconds\n 50: optional i32 scheduleToStartTimeoutSeconds\n 55: optional i32 startToCloseTimeoutSeconds\n 60: optional i32 heartbeatTimeoutSeconds\n 70: optional RetryPolicy retryPolicy\n 80: optional Header header\n 90: optional bool requestLocalDispatch\n}\n\nstruct ActivityLocalDispatchInfo{\n 10: optional string activityId\n 20: optional i64 (js.type = \"Long\") scheduledTimestamp\n 30: optional i64 (js.type = \"Long\") startedTimestamp\n 40: optional i64 (js.type = \"Long\") scheduledTimestampOfThisAttempt\n 50: optional binary taskToken\n}\n\nstruct RequestCancelActivityTaskDecisionAttributes {\n 10: optional string activityId\n}\n\nstruct StartTimerDecisionAttributes {\n 10: optional string timerId\n 20: optional i64 (js.type = \"Long\") startToFireTimeoutSeconds\n}\n\nstruct CompleteWorkflowExecutionDecisionAttributes {\n 10: optional binary result\n}\n\nstruct FailWorkflowExecutionDecisionAttributes {\n 10: optional string reason\n 20: optional binary details\n}\n\nstruct CancelTimerDecisionAttributes {\n 10: optional string timerId\n}\n\nstruct CancelWorkflowExecutionDecisionAttributes {\n 10: optional binary details\n}\n\nstruct RequestCancelExternalWorkflowExecutionDecisionAttributes {\n 10: optional string domain\n 20: optional string workflowId\n 30: optional string runId\n 40: optional binary control\n 50: optional bool childWorkflowOnly\n}\n\nstruct SignalExternalWorkflowExecutionDecisionAttributes {\n 10: optional string domain\n 20: optional WorkflowExecution execution\n 30: optional string signalName\n 40: optional binary input\n 50: optional binary control\n 60: optional bool childWorkflowOnly\n}\n\nstruct UpsertWorkflowSearchAttributesDecisionAttributes {\n 10: optional SearchAttributes searchAttributes\n}\n\nstruct RecordMarkerDecisionAttributes {\n 10: optional string markerName\n 20: optional binary details\n 30: optional Header header\n}\n\nstruct ContinueAsNewWorkflowExecutionDecisionAttributes {\n 10: optional WorkflowType workflowType\n 20: optional TaskList taskList\n 30: optional binary input\n 40: optional i32 executionStartToCloseTimeoutSeconds\n 50: optional i32 taskStartToCloseTimeoutSeconds\n 60: optional i32 backoffStartIntervalInSeconds\n 70: optional RetryPolicy retryPolicy\n 80: optional ContinueAsNewInitiator initiator\n 90: optional string failureReason\n 100: optional binary failureDetails\n 110: optional binary lastCompletionResult\n 120: optional string cronSchedule\n 130: optional Header header\n 140: optional Memo memo\n 150: optional SearchAttributes searchAttributes\n 160: optional i32 jitterStartSeconds\n}\n\nstruct StartChildWorkflowExecutionDecisionAttributes {\n 10: optional string domain\n 20: optional string workflowId\n 30: optional WorkflowType workflowType\n 40: optional TaskList taskList\n 50: optional binary input\n 60: optional i32 executionStartToCloseTimeoutSeconds\n 70: optional i32 taskStartToCloseTimeoutSeconds\n// 80: optional ChildPolicy childPolicy -- Removed but reserve the IDL order number\n 81: optional ParentClosePolicy parentClosePolicy\n 90: optional binary control\n 100: optional WorkflowIdReusePolicy workflowIdReusePolicy\n 110: optional RetryPolicy retryPolicy\n 120: optional string cronSchedule\n 130: optional Header header\n 140: optional Memo memo\n 150: optional SearchAttributes searchAttributes\n}\n\nstruct Decision {\n 10: optional DecisionType decisionType\n 20: optional ScheduleActivityTaskDecisionAttributes scheduleActivityTaskDecisionAttributes\n 25: optional StartTimerDecisionAttributes startTimerDecisionAttributes\n 30: optional CompleteWorkflowExecutionDecisionAttributes completeWorkflowExecutionDecisionAttributes\n 35: optional FailWorkflowExecutionDecisionAttributes failWorkflowExecutionDecisionAttributes\n 40: optional RequestCancelActivityTaskDecisionAttributes requestCancelActivityTaskDecisionAttributes\n 50: optional CancelTimerDecisionAttributes cancelTimerDecisionAttributes\n 60: optional CancelWorkflowExecutionDecisionAttributes cancelWorkflowExecutionDecisionAttributes\n 70: optional RequestCancelExternalWorkflowExecutionDecisionAttributes requestCancelExternalWorkflowExecutionDecisionAttributes\n 80: optional RecordMarkerDecisionAttributes recordMarkerDecisionAttributes\n 90: optional ContinueAsNewWorkflowExecutionDecisionAttributes continueAsNewWorkflowExecutionDecisionAttributes\n 100: optional StartChildWorkflowExecutionDecisionAttributes startChildWorkflowExecutionDecisionAttributes\n 110: optional SignalExternalWorkflowExecutionDecisionAttributes signalExternalWorkflowExecutionDecisionAttributes\n 120: optional UpsertWorkflowSearchAttributesDecisionAttributes upsertWorkflowSearchAttributesDecisionAttributes\n}\n\nstruct WorkflowExecutionStartedEventAttributes {\n 10: optional WorkflowType workflowType\n 12: optional string parentWorkflowDomain\n 14: optional WorkflowExecution parentWorkflowExecution\n 16: optional i64 (js.type = \"Long\") parentInitiatedEventId\n 20: optional TaskList taskList\n 30: optional binary input\n 40: optional i32 executionStartToCloseTimeoutSeconds\n 50: optional i32 taskStartToCloseTimeoutSeconds\n// 52: optional ChildPolicy childPolicy -- Removed but reserve the IDL order number\n 54: optional string continuedExecutionRunId\n 55: optional ContinueAsNewInitiator initiator\n 56: optional string continuedFailureReason\n 57: optional binary continuedFailureDetails\n 58: optional binary lastCompletionResult\n 59: optional string originalExecutionRunId // This is the runID when the WorkflowExecutionStarted event is written\n 60: optional string identity\n 61: optional string firstExecutionRunId // This is the very first runID along the chain of ContinueAsNew and Reset.\n 62: optional i64 (js.type = \"Long\") firstScheduledTimeNano\n 70: optional RetryPolicy retryPolicy\n 80: optional i32 attempt\n 90: optional i64 (js.type = \"Long\") expirationTimestamp\n 100: optional string cronSchedule\n 110: optional i32 firstDecisionTaskBackoffSeconds\n 120: optional Memo memo\n 121: optional SearchAttributes searchAttributes\n 130: optional ResetPoints prevAutoResetPoints\n 140: optional Header header\n 150: optional map partitionConfig\n 160: optional string requestId\n}\n\nstruct ResetPoints{\n 10: optional list points\n}\n\n struct ResetPointInfo{\n 10: optional string binaryChecksum\n 20: optional string runId\n 30: optional i64 firstDecisionCompletedId\n 40: optional i64 (js.type = \"Long\") createdTimeNano\n 50: optional i64 (js.type = \"Long\") expiringTimeNano //the time that the run is deleted due to retention\n 60: optional bool resettable // false if the resset point has pending childWFs/reqCancels/signalExternals.\n}\n\nstruct WorkflowExecutionCompletedEventAttributes {\n 10: optional binary result\n 20: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n}\n\nstruct WorkflowExecutionFailedEventAttributes {\n 10: optional string reason\n 20: optional binary details\n 30: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n}\n\nstruct WorkflowExecutionTimedOutEventAttributes {\n 10: optional TimeoutType timeoutType\n}\n\nenum ContinueAsNewInitiator {\n Decider,\n RetryPolicy,\n CronSchedule,\n}\n\nstruct WorkflowExecutionContinuedAsNewEventAttributes {\n 10: optional string newExecutionRunId\n 20: optional WorkflowType workflowType\n 30: optional TaskList taskList\n 40: optional binary input\n 50: optional i32 executionStartToCloseTimeoutSeconds\n 60: optional i32 taskStartToCloseTimeoutSeconds\n 70: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 80: optional i32 backoffStartIntervalInSeconds\n 90: optional ContinueAsNewInitiator initiator\n 100: optional string failureReason\n 110: optional binary failureDetails\n 120: optional binary lastCompletionResult\n 130: optional Header header\n 140: optional Memo memo\n 150: optional SearchAttributes searchAttributes\n}\n\nstruct DecisionTaskScheduledEventAttributes {\n 10: optional TaskList taskList\n 20: optional i32 startToCloseTimeoutSeconds\n 30: optional i64 (js.type = \"Long\") attempt\n}\n\nstruct DecisionTaskStartedEventAttributes {\n 10: optional i64 (js.type = \"Long\") scheduledEventId\n 20: optional string identity\n 30: optional string requestId\n}\n\nstruct DecisionTaskCompletedEventAttributes {\n 10: optional binary executionContext\n 20: optional i64 (js.type = \"Long\") scheduledEventId\n 30: optional i64 (js.type = \"Long\") startedEventId\n 40: optional string identity\n 50: optional string binaryChecksum\n}\n\nstruct DecisionTaskTimedOutEventAttributes {\n 10: optional i64 (js.type = \"Long\") scheduledEventId\n 20: optional i64 (js.type = \"Long\") startedEventId\n 30: optional TimeoutType timeoutType\n // for reset workflow\n 40: optional string baseRunId\n 50: optional string newRunId\n 60: optional i64 (js.type = \"Long\") forkEventVersion\n 70: optional string reason\n 80: optional DecisionTaskTimedOutCause cause\n 90: optional string requestId\n}\n\nstruct DecisionTaskFailedEventAttributes {\n 10: optional i64 (js.type = \"Long\") scheduledEventId\n 20: optional i64 (js.type = \"Long\") startedEventId\n 30: optional DecisionTaskFailedCause cause\n 35: optional binary details\n 40: optional string identity\n 50: optional string reason\n // for reset workflow\n 60: optional string baseRunId\n 70: optional string newRunId\n 80: optional i64 (js.type = \"Long\") forkEventVersion\n 90: optional string binaryChecksum\n 100: optional string requestId\n}\n\nstruct ActivityTaskScheduledEventAttributes {\n 10: optional string activityId\n 20: optional ActivityType activityType\n 25: optional string domain\n 30: optional TaskList taskList\n 40: optional binary input\n 45: optional i32 scheduleToCloseTimeoutSeconds\n 50: optional i32 scheduleToStartTimeoutSeconds\n 55: optional i32 startToCloseTimeoutSeconds\n 60: optional i32 heartbeatTimeoutSeconds\n 90: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 110: optional RetryPolicy retryPolicy\n 120: optional Header header\n}\n\nstruct ActivityTaskStartedEventAttributes {\n 10: optional i64 (js.type = \"Long\") scheduledEventId\n 20: optional string identity\n 30: optional string requestId\n 40: optional i32 attempt\n 50: optional string lastFailureReason\n 60: optional binary lastFailureDetails\n}\n\nstruct ActivityTaskCompletedEventAttributes {\n 10: optional binary result\n 20: optional i64 (js.type = \"Long\") scheduledEventId\n 30: optional i64 (js.type = \"Long\") startedEventId\n 40: optional string identity\n}\n\nstruct ActivityTaskFailedEventAttributes {\n 10: optional string reason\n 20: optional binary details\n 30: optional i64 (js.type = \"Long\") scheduledEventId\n 40: optional i64 (js.type = \"Long\") startedEventId\n 50: optional string identity\n}\n\nstruct ActivityTaskTimedOutEventAttributes {\n 05: optional binary details\n 10: optional i64 (js.type = \"Long\") scheduledEventId\n 20: optional i64 (js.type = \"Long\") startedEventId\n 30: optional TimeoutType timeoutType\n // For retry activity, it may have a failure before timeout. It's important to keep those information for debug.\n // Client can also provide the info for making next decision\n 40: optional string lastFailureReason\n 50: optional binary lastFailureDetails\n}\n\nstruct ActivityTaskCancelRequestedEventAttributes {\n 10: optional string activityId\n 20: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n}\n\nstruct RequestCancelActivityTaskFailedEventAttributes{\n 10: optional string activityId\n 20: optional string cause\n 30: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n}\n\nstruct ActivityTaskCanceledEventAttributes {\n 10: optional binary details\n 20: optional i64 (js.type = \"Long\") latestCancelRequestedEventId\n 30: optional i64 (js.type = \"Long\") scheduledEventId\n 40: optional i64 (js.type = \"Long\") startedEventId\n 50: optional string identity\n}\n\nstruct TimerStartedEventAttributes {\n 10: optional string timerId\n 20: optional i64 (js.type = \"Long\") startToFireTimeoutSeconds\n 30: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n}\n\nstruct TimerFiredEventAttributes {\n 10: optional string timerId\n 20: optional i64 (js.type = \"Long\") startedEventId\n}\n\nstruct TimerCanceledEventAttributes {\n 10: optional string timerId\n 20: optional i64 (js.type = \"Long\") startedEventId\n 30: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 40: optional string identity\n}\n\nstruct CancelTimerFailedEventAttributes {\n 10: optional string timerId\n 20: optional string cause\n 30: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 40: optional string identity\n}\n\nstruct WorkflowExecutionCancelRequestedEventAttributes {\n 10: optional string cause\n 20: optional i64 (js.type = \"Long\") externalInitiatedEventId\n 30: optional WorkflowExecution externalWorkflowExecution\n 40: optional string identity\n 50: optional string requestId\n}\n\nstruct WorkflowExecutionCanceledEventAttributes {\n 10: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 20: optional binary details\n}\n\nstruct MarkerRecordedEventAttributes {\n 10: optional string markerName\n 20: optional binary details\n 30: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 40: optional Header header\n}\n\nstruct WorkflowExecutionSignaledEventAttributes {\n 10: optional string signalName\n 20: optional binary input\n 30: optional string identity\n 40: optional string requestId\n}\n\nstruct WorkflowExecutionTerminatedEventAttributes {\n 10: optional string reason\n 20: optional binary details\n 30: optional string identity\n}\n\nstruct RequestCancelExternalWorkflowExecutionInitiatedEventAttributes {\n 10: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 20: optional string domain\n 30: optional WorkflowExecution workflowExecution\n 40: optional binary control\n 50: optional bool childWorkflowOnly\n}\n\nstruct RequestCancelExternalWorkflowExecutionFailedEventAttributes {\n 10: optional CancelExternalWorkflowExecutionFailedCause cause\n 20: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 30: optional string domain\n 40: optional WorkflowExecution workflowExecution\n 50: optional i64 (js.type = \"Long\") initiatedEventId\n 60: optional binary control\n}\n\nstruct ExternalWorkflowExecutionCancelRequestedEventAttributes {\n 10: optional i64 (js.type = \"Long\") initiatedEventId\n 20: optional string domain\n 30: optional WorkflowExecution workflowExecution\n}\n\nstruct SignalExternalWorkflowExecutionInitiatedEventAttributes {\n 10: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 20: optional string domain\n 30: optional WorkflowExecution workflowExecution\n 40: optional string signalName\n 50: optional binary input\n 60: optional binary control\n 70: optional bool childWorkflowOnly\n}\n\nstruct SignalExternalWorkflowExecutionFailedEventAttributes {\n 10: optional SignalExternalWorkflowExecutionFailedCause cause\n 20: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 30: optional string domain\n 40: optional WorkflowExecution workflowExecution\n 50: optional i64 (js.type = \"Long\") initiatedEventId\n 60: optional binary control\n}\n\nstruct ExternalWorkflowExecutionSignaledEventAttributes {\n 10: optional i64 (js.type = \"Long\") initiatedEventId\n 20: optional string domain\n 30: optional WorkflowExecution workflowExecution\n 40: optional binary control\n}\n\nstruct UpsertWorkflowSearchAttributesEventAttributes {\n 10: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 20: optional SearchAttributes searchAttributes\n}\n\nstruct StartChildWorkflowExecutionInitiatedEventAttributes {\n 10: optional string domain\n 20: optional string workflowId\n 30: optional WorkflowType workflowType\n 40: optional TaskList taskList\n 50: optional binary input\n 60: optional i32 executionStartToCloseTimeoutSeconds\n 70: optional i32 taskStartToCloseTimeoutSeconds\n// 80: optional ChildPolicy childPolicy -- Removed but reserve the IDL order number\n 81: optional ParentClosePolicy parentClosePolicy\n 90: optional binary control\n 100: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n 110: optional WorkflowIdReusePolicy workflowIdReusePolicy\n 120: optional RetryPolicy retryPolicy\n 130: optional string cronSchedule\n 140: optional Header header\n 150: optional Memo memo\n 160: optional SearchAttributes searchAttributes\n 170: optional i32 delayStartSeconds\n 180: optional i32 jitterStartSeconds\n 190: optional i64 (js.type = \"Long\") firstRunAtTimestamp\n}\n\nstruct StartChildWorkflowExecutionFailedEventAttributes {\n 10: optional string domain\n 20: optional string workflowId\n 30: optional WorkflowType workflowType\n 40: optional ChildWorkflowExecutionFailedCause cause\n 50: optional binary control\n 60: optional i64 (js.type = \"Long\") initiatedEventId\n 70: optional i64 (js.type = \"Long\") decisionTaskCompletedEventId\n}\n\nstruct ChildWorkflowExecutionStartedEventAttributes {\n 10: optional string domain\n 20: optional i64 (js.type = \"Long\") initiatedEventId\n 30: optional WorkflowExecution workflowExecution\n 40: optional WorkflowType workflowType\n 50: optional Header header\n}\n\nstruct ChildWorkflowExecutionCompletedEventAttributes {\n 10: optional binary result\n 20: optional string domain\n 30: optional WorkflowExecution workflowExecution\n 40: optional WorkflowType workflowType\n 50: optional i64 (js.type = \"Long\") initiatedEventId\n 60: optional i64 (js.type = \"Long\") startedEventId\n}\n\nstruct ChildWorkflowExecutionFailedEventAttributes {\n 10: optional string reason\n 20: optional binary details\n 30: optional string domain\n 40: optional WorkflowExecution workflowExecution\n 50: optional WorkflowType workflowType\n 60: optional i64 (js.type = \"Long\") initiatedEventId\n 70: optional i64 (js.type = \"Long\") startedEventId\n}\n\nstruct ChildWorkflowExecutionCanceledEventAttributes {\n 10: optional binary details\n 20: optional string domain\n 30: optional WorkflowExecution workflowExecution\n 40: optional WorkflowType workflowType\n 50: optional i64 (js.type = \"Long\") initiatedEventId\n 60: optional i64 (js.type = \"Long\") startedEventId\n}\n\nstruct ChildWorkflowExecutionTimedOutEventAttributes {\n 10: optional TimeoutType timeoutType\n 20: optional string domain\n 30: optional WorkflowExecution workflowExecution\n 40: optional WorkflowType workflowType\n 50: optional i64 (js.type = \"Long\") initiatedEventId\n 60: optional i64 (js.type = \"Long\") startedEventId\n}\n\nstruct ChildWorkflowExecutionTerminatedEventAttributes {\n 10: optional string domain\n 20: optional WorkflowExecution workflowExecution\n 30: optional WorkflowType workflowType\n 40: optional i64 (js.type = \"Long\") initiatedEventId\n 50: optional i64 (js.type = \"Long\") startedEventId\n}\n\nstruct HistoryEvent {\n 10: optional i64 (js.type = \"Long\") eventId\n 20: optional i64 (js.type = \"Long\") timestamp\n 30: optional EventType eventType\n 35: optional i64 (js.type = \"Long\") version\n 36: optional i64 (js.type = \"Long\") taskId\n 40: optional WorkflowExecutionStartedEventAttributes workflowExecutionStartedEventAttributes\n 50: optional WorkflowExecutionCompletedEventAttributes workflowExecutionCompletedEventAttributes\n 60: optional WorkflowExecutionFailedEventAttributes workflowExecutionFailedEventAttributes\n 70: optional WorkflowExecutionTimedOutEventAttributes workflowExecutionTimedOutEventAttributes\n 80: optional DecisionTaskScheduledEventAttributes decisionTaskScheduledEventAttributes\n 90: optional DecisionTaskStartedEventAttributes decisionTaskStartedEventAttributes\n 100: optional DecisionTaskCompletedEventAttributes decisionTaskCompletedEventAttributes\n 110: optional DecisionTaskTimedOutEventAttributes decisionTaskTimedOutEventAttributes\n 120: optional DecisionTaskFailedEventAttributes decisionTaskFailedEventAttributes\n 130: optional ActivityTaskScheduledEventAttributes activityTaskScheduledEventAttributes\n 140: optional ActivityTaskStartedEventAttributes activityTaskStartedEventAttributes\n 150: optional ActivityTaskCompletedEventAttributes activityTaskCompletedEventAttributes\n 160: optional ActivityTaskFailedEventAttributes activityTaskFailedEventAttributes\n 170: optional ActivityTaskTimedOutEventAttributes activityTaskTimedOutEventAttributes\n 180: optional TimerStartedEventAttributes timerStartedEventAttributes\n 190: optional TimerFiredEventAttributes timerFiredEventAttributes\n 200: optional ActivityTaskCancelRequestedEventAttributes activityTaskCancelRequestedEventAttributes\n 210: optional RequestCancelActivityTaskFailedEventAttributes requestCancelActivityTaskFailedEventAttributes\n 220: optional ActivityTaskCanceledEventAttributes activityTaskCanceledEventAttributes\n 230: optional TimerCanceledEventAttributes timerCanceledEventAttributes\n 240: optional CancelTimerFailedEventAttributes cancelTimerFailedEventAttributes\n 250: optional MarkerRecordedEventAttributes markerRecordedEventAttributes\n 260: optional WorkflowExecutionSignaledEventAttributes workflowExecutionSignaledEventAttributes\n 270: optional WorkflowExecutionTerminatedEventAttributes workflowExecutionTerminatedEventAttributes\n 280: optional WorkflowExecutionCancelRequestedEventAttributes workflowExecutionCancelRequestedEventAttributes\n 290: optional WorkflowExecutionCanceledEventAttributes workflowExecutionCanceledEventAttributes\n 300: optional RequestCancelExternalWorkflowExecutionInitiatedEventAttributes requestCancelExternalWorkflowExecutionInitiatedEventAttributes\n 310: optional RequestCancelExternalWorkflowExecutionFailedEventAttributes requestCancelExternalWorkflowExecutionFailedEventAttributes\n 320: optional ExternalWorkflowExecutionCancelRequestedEventAttributes externalWorkflowExecutionCancelRequestedEventAttributes\n 330: optional WorkflowExecutionContinuedAsNewEventAttributes workflowExecutionContinuedAsNewEventAttributes\n 340: optional StartChildWorkflowExecutionInitiatedEventAttributes startChildWorkflowExecutionInitiatedEventAttributes\n 350: optional StartChildWorkflowExecutionFailedEventAttributes startChildWorkflowExecutionFailedEventAttributes\n 360: optional ChildWorkflowExecutionStartedEventAttributes childWorkflowExecutionStartedEventAttributes\n 370: optional ChildWorkflowExecutionCompletedEventAttributes childWorkflowExecutionCompletedEventAttributes\n 380: optional ChildWorkflowExecutionFailedEventAttributes childWorkflowExecutionFailedEventAttributes\n 390: optional ChildWorkflowExecutionCanceledEventAttributes childWorkflowExecutionCanceledEventAttributes\n 400: optional ChildWorkflowExecutionTimedOutEventAttributes childWorkflowExecutionTimedOutEventAttributes\n 410: optional ChildWorkflowExecutionTerminatedEventAttributes childWorkflowExecutionTerminatedEventAttributes\n 420: optional SignalExternalWorkflowExecutionInitiatedEventAttributes signalExternalWorkflowExecutionInitiatedEventAttributes\n 430: optional SignalExternalWorkflowExecutionFailedEventAttributes signalExternalWorkflowExecutionFailedEventAttributes\n 440: optional ExternalWorkflowExecutionSignaledEventAttributes externalWorkflowExecutionSignaledEventAttributes\n 450: optional UpsertWorkflowSearchAttributesEventAttributes upsertWorkflowSearchAttributesEventAttributes\n}\n\nstruct History {\n 10: optional list events\n}\n\nstruct WorkflowExecutionFilter {\n 10: optional string workflowId\n 20: optional string runId\n}\n\nstruct WorkflowTypeFilter {\n 10: optional string name\n}\n\nstruct StartTimeFilter {\n 10: optional i64 (js.type = \"Long\") earliestTime\n 20: optional i64 (js.type = \"Long\") latestTime\n}\n\nstruct DomainInfo {\n 10: optional string name\n 20: optional DomainStatus status\n 30: optional string description\n 40: optional string ownerEmail\n // A key-value map for any customized purpose\n 50: optional map data\n 60: optional string uuid\n}\n\nstruct DomainConfiguration {\n 10: optional i32 workflowExecutionRetentionPeriodInDays\n 20: optional bool emitMetric\n 60: optional IsolationGroupConfiguration isolationgroups\n 70: optional BadBinaries badBinaries\n 80: optional ArchivalStatus historyArchivalStatus\n 90: optional string historyArchivalURI\n 100: optional ArchivalStatus visibilityArchivalStatus\n 110: optional string visibilityArchivalURI\n 120: optional AsyncWorkflowConfiguration AsyncWorkflowConfiguration\n}\n\nstruct FailoverInfo {\n 10: optional i64 (js.type = \"Long\") failoverVersion\n 20: optional i64 (js.type = \"Long\") failoverStartTimestamp\n 30: optional i64 (js.type = \"Long\") failoverExpireTimestamp\n 40: optional i32 completedShardCount\n 50: optional list pendingShards\n}\n\nstruct BadBinaries{\n 10: optional map binaries\n}\n\nstruct BadBinaryInfo{\n 10: optional string reason\n 20: optional string operator\n 30: optional i64 (js.type = \"Long\") createdTimeNano\n}\n\nstruct UpdateDomainInfo {\n 10: optional string description\n 20: optional string ownerEmail\n // A key-value map for any customized purpose\n 30: optional map data\n}\n\nstruct ClusterReplicationConfiguration {\n 10: optional string clusterName\n}\n\nstruct DomainReplicationConfiguration {\n 10: optional string activeClusterName\n 20: optional list clusters\n}\n\nstruct RegisterDomainRequest {\n 10: optional string name\n 20: optional string description\n 30: optional string ownerEmail\n 40: optional i32 workflowExecutionRetentionPeriodInDays\n 50: optional bool emitMetric = true\n 60: optional list clusters\n 70: optional string activeClusterName\n // A key-value map for any customized purpose\n 80: optional map data\n 90: optional string securityToken\n 120: optional bool isGlobalDomain\n 130: optional ArchivalStatus historyArchivalStatus\n 140: optional string historyArchivalURI\n 150: optional ArchivalStatus visibilityArchivalStatus\n 160: optional string visibilityArchivalURI\n}\n\nstruct ListDomainsRequest {\n 10: optional i32 pageSize\n 20: optional binary nextPageToken\n}\n\nstruct ListDomainsResponse {\n 10: optional list domains\n 20: optional binary nextPageToken\n}\n\nstruct DescribeDomainRequest {\n 10: optional string name\n 20: optional string uuid\n}\n\nstruct DescribeDomainResponse {\n 10: optional DomainInfo domainInfo\n 20: optional DomainConfiguration configuration\n 30: optional DomainReplicationConfiguration replicationConfiguration\n 40: optional i64 (js.type = \"Long\") failoverVersion\n 50: optional bool isGlobalDomain\n 60: optional FailoverInfo failoverInfo\n}\n\nstruct UpdateDomainRequest {\n 10: optional string name\n 20: optional UpdateDomainInfo updatedInfo\n 30: optional DomainConfiguration configuration\n 40: optional DomainReplicationConfiguration replicationConfiguration\n 50: optional string securityToken\n 60: optional string deleteBadBinary\n 70: optional i32 failoverTimeoutInSeconds\n}\n\nstruct UpdateDomainResponse {\n 10: optional DomainInfo domainInfo\n 20: optional DomainConfiguration configuration\n 30: optional DomainReplicationConfiguration replicationConfiguration\n 40: optional i64 (js.type = \"Long\") failoverVersion\n 50: optional bool isGlobalDomain\n}\n\nstruct DeprecateDomainRequest {\n 10: optional string name\n 20: optional string securityToken\n}\n\nstruct StartWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional string workflowId\n 30: optional WorkflowType workflowType\n 40: optional TaskList taskList\n 50: optional binary input\n 60: optional i32 executionStartToCloseTimeoutSeconds\n 70: optional i32 taskStartToCloseTimeoutSeconds\n 80: optional string identity\n 90: optional string requestId\n 100: optional WorkflowIdReusePolicy workflowIdReusePolicy\n// 110: optional ChildPolicy childPolicy -- Removed but reserve the IDL order number\n 120: optional RetryPolicy retryPolicy\n 130: optional string cronSchedule\n 140: optional Memo memo\n 141: optional SearchAttributes searchAttributes\n 150: optional Header header\n 160: optional i32 delayStartSeconds\n 170: optional i32 jitterStartSeconds\n 180: optional i64 (js.type = \"Long\") firstRunAtTimestamp\n}\n\nstruct StartWorkflowExecutionResponse {\n 10: optional string runId\n}\n\nstruct StartWorkflowExecutionAsyncRequest {\n 10: optional StartWorkflowExecutionRequest request\n}\n\nstruct StartWorkflowExecutionAsyncResponse {\n}\n\nstruct RestartWorkflowExecutionResponse {\n 10: optional string runId\n}\n\nstruct DiagnoseWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional WorkflowExecution workflowExecution\n 30: optional string identity\n}\n\nstruct DiagnoseWorkflowExecutionResponse {\n 10: optional string domain\n 20: optional WorkflowExecution diagnosticWorkflowExecution\n}\n\nstruct PollForDecisionTaskRequest {\n 10: optional string domain\n 20: optional TaskList taskList\n 30: optional string identity\n 40: optional string binaryChecksum\n}\n\nstruct PollForDecisionTaskResponse {\n 10: optional binary taskToken\n 20: optional WorkflowExecution workflowExecution\n 30: optional WorkflowType workflowType\n 40: optional i64 (js.type = \"Long\") previousStartedEventId\n 50: optional i64 (js.type = \"Long\") startedEventId\n 51: optional i64 (js.type = 'Long') attempt\n 54: optional i64 (js.type = \"Long\") backlogCountHint\n 60: optional History history\n 70: optional binary nextPageToken\n 80: optional WorkflowQuery query\n 90: optional TaskList WorkflowExecutionTaskList\n 100: optional i64 (js.type = \"Long\") scheduledTimestamp\n 110: optional i64 (js.type = \"Long\") startedTimestamp\n 120: optional map queries\n 130: optional i64 (js.type = 'Long') nextEventId\n 140: optional i64 (js.type = 'Long') totalHistoryBytes\n 150: optional AutoConfigHint autoConfigHint\n}\n\nstruct StickyExecutionAttributes {\n 10: optional TaskList workerTaskList\n 20: optional i32 scheduleToStartTimeoutSeconds\n}\n\nstruct RespondDecisionTaskCompletedRequest {\n 10: optional binary taskToken\n 20: optional list decisions\n 30: optional binary executionContext\n 40: optional string identity\n 50: optional StickyExecutionAttributes stickyAttributes\n 60: optional bool returnNewDecisionTask\n 70: optional bool forceCreateNewDecisionTask\n 80: optional string binaryChecksum\n 90: optional map queryResults\n}\n\nstruct RespondDecisionTaskCompletedResponse {\n 10: optional PollForDecisionTaskResponse decisionTask\n 20: optional map activitiesToDispatchLocally\n}\n\nstruct RespondDecisionTaskFailedRequest {\n 10: optional binary taskToken\n 20: optional DecisionTaskFailedCause cause\n 30: optional binary details\n 40: optional string identity\n 50: optional string binaryChecksum\n}\n\nstruct PollForActivityTaskRequest {\n 10: optional string domain\n 20: optional TaskList taskList\n 30: optional string identity\n 40: optional TaskListMetadata taskListMetadata\n}\n\nstruct PollForActivityTaskResponse {\n 10: optional binary taskToken\n 20: optional WorkflowExecution workflowExecution\n 30: optional string activityId\n 40: optional ActivityType activityType\n 50: optional binary input\n 70: optional i64 (js.type = \"Long\") scheduledTimestamp\n 80: optional i32 scheduleToCloseTimeoutSeconds\n 90: optional i64 (js.type = \"Long\") startedTimestamp\n 100: optional i32 startToCloseTimeoutSeconds\n 110: optional i32 heartbeatTimeoutSeconds\n 120: optional i32 attempt\n 130: optional i64 (js.type = \"Long\") scheduledTimestampOfThisAttempt\n 140: optional binary heartbeatDetails\n 150: optional WorkflowType workflowType\n 160: optional string workflowDomain\n 170: optional Header header\n 180: optional AutoConfigHint autoConfigHint\n}\n\nstruct RecordActivityTaskHeartbeatRequest {\n 10: optional binary taskToken\n 20: optional binary details\n 30: optional string identity\n}\n\nstruct RecordActivityTaskHeartbeatByIDRequest {\n 10: optional string domain\n 20: optional string workflowID\n 30: optional string runID\n 40: optional string activityID\n 50: optional binary details\n 60: optional string identity\n}\n\nstruct RecordActivityTaskHeartbeatResponse {\n 10: optional bool cancelRequested\n}\n\nstruct RespondActivityTaskCompletedRequest {\n 10: optional binary taskToken\n 20: optional binary result\n 30: optional string identity\n}\n\nstruct RespondActivityTaskFailedRequest {\n 10: optional binary taskToken\n 20: optional string reason\n 30: optional binary details\n 40: optional string identity\n}\n\nstruct RespondActivityTaskCanceledRequest {\n 10: optional binary taskToken\n 20: optional binary details\n 30: optional string identity\n}\n\nstruct RespondActivityTaskCompletedByIDRequest {\n 10: optional string domain\n 20: optional string workflowID\n 30: optional string runID\n 40: optional string activityID\n 50: optional binary result\n 60: optional string identity\n}\n\nstruct RespondActivityTaskFailedByIDRequest {\n 10: optional string domain\n 20: optional string workflowID\n 30: optional string runID\n 40: optional string activityID\n 50: optional string reason\n 60: optional binary details\n 70: optional string identity\n}\n\nstruct RespondActivityTaskCanceledByIDRequest {\n 10: optional string domain\n 20: optional string workflowID\n 30: optional string runID\n 40: optional string activityID\n 50: optional binary details\n 60: optional string identity\n}\n\nstruct RequestCancelWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional WorkflowExecution workflowExecution\n 30: optional string identity\n 40: optional string requestId\n 50: optional string cause\n 60: optional string firstExecutionRunID\n}\n\nstruct GetWorkflowExecutionHistoryRequest {\n 10: optional string domain\n 20: optional WorkflowExecution execution\n 30: optional i32 maximumPageSize\n 40: optional binary nextPageToken\n 50: optional bool waitForNewEvent\n 60: optional HistoryEventFilterType HistoryEventFilterType\n 70: optional bool skipArchival\n}\n\nstruct GetWorkflowExecutionHistoryResponse {\n 10: optional History history\n 11: optional list rawHistory\n 20: optional binary nextPageToken\n 30: optional bool archived\n}\n\nstruct SignalWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional WorkflowExecution workflowExecution\n 30: optional string signalName\n 40: optional binary input\n 50: optional string identity\n 60: optional string requestId\n 70: optional binary control\n}\n\nstruct SignalWithStartWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional string workflowId\n 30: optional WorkflowType workflowType\n 40: optional TaskList taskList\n 50: optional binary input\n 60: optional i32 executionStartToCloseTimeoutSeconds\n 70: optional i32 taskStartToCloseTimeoutSeconds\n 80: optional string identity\n 90: optional string requestId\n 100: optional WorkflowIdReusePolicy workflowIdReusePolicy\n 110: optional string signalName\n 120: optional binary signalInput\n 130: optional binary control\n 140: optional RetryPolicy retryPolicy\n 150: optional string cronSchedule\n 160: optional Memo memo\n 161: optional SearchAttributes searchAttributes\n 170: optional Header header\n 180: optional i32 delayStartSeconds\n 190: optional i32 jitterStartSeconds\n 200: optional i64 (js.type = \"Long\") firstRunAtTimestamp\n}\n\nstruct SignalWithStartWorkflowExecutionAsyncRequest {\n 10: optional SignalWithStartWorkflowExecutionRequest request\n}\n\nstruct SignalWithStartWorkflowExecutionAsyncResponse {\n}\n\nstruct RestartWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional WorkflowExecution workflowExecution\n 30: optional string reason\n 40: optional string identity\n}\nstruct TerminateWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional WorkflowExecution workflowExecution\n 30: optional string reason\n 40: optional binary details\n 50: optional string identity\n 60: optional string firstExecutionRunID\n}\n\nstruct ResetWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional WorkflowExecution workflowExecution\n 30: optional string reason\n 40: optional i64 (js.type = \"Long\") decisionFinishEventId\n 50: optional string requestId\n 60: optional bool skipSignalReapply\n}\n\nstruct ResetWorkflowExecutionResponse {\n 10: optional string runId\n}\n\nstruct ListOpenWorkflowExecutionsRequest {\n 10: optional string domain\n 20: optional i32 maximumPageSize\n 30: optional binary nextPageToken\n 40: optional StartTimeFilter StartTimeFilter\n 50: optional WorkflowExecutionFilter executionFilter\n 60: optional WorkflowTypeFilter typeFilter\n}\n\nstruct ListOpenWorkflowExecutionsResponse {\n 10: optional list executions\n 20: optional binary nextPageToken\n}\n\nstruct ListClosedWorkflowExecutionsRequest {\n 10: optional string domain\n 20: optional i32 maximumPageSize\n 30: optional binary nextPageToken\n 40: optional StartTimeFilter StartTimeFilter\n 50: optional WorkflowExecutionFilter executionFilter\n 60: optional WorkflowTypeFilter typeFilter\n 70: optional WorkflowExecutionCloseStatus statusFilter\n}\n\nstruct ListClosedWorkflowExecutionsResponse {\n 10: optional list executions\n 20: optional binary nextPageToken\n}\n\nstruct ListWorkflowExecutionsRequest {\n 10: optional string domain\n 20: optional i32 pageSize\n 30: optional binary nextPageToken\n 40: optional string query\n}\n\nstruct ListWorkflowExecutionsResponse {\n 10: optional list executions\n 20: optional binary nextPageToken\n}\n\nstruct ListArchivedWorkflowExecutionsRequest {\n 10: optional string domain\n 20: optional i32 pageSize\n 30: optional binary nextPageToken\n 40: optional string query\n}\n\nstruct ListArchivedWorkflowExecutionsResponse {\n 10: optional list executions\n 20: optional binary nextPageToken\n}\n\nstruct CountWorkflowExecutionsRequest {\n 10: optional string domain\n 20: optional string query\n}\n\nstruct CountWorkflowExecutionsResponse {\n 10: optional i64 count\n}\n\nstruct GetSearchAttributesResponse {\n 10: optional map keys\n}\n\nstruct QueryWorkflowRequest {\n 10: optional string domain\n 20: optional WorkflowExecution execution\n 30: optional WorkflowQuery query\n // QueryRejectCondition can used to reject the query if workflow state does not satisify condition\n 40: optional QueryRejectCondition queryRejectCondition\n 50: optional QueryConsistencyLevel queryConsistencyLevel\n}\n\nstruct QueryRejected {\n 10: optional WorkflowExecutionCloseStatus closeStatus\n}\n\nstruct QueryWorkflowResponse {\n 10: optional binary queryResult\n 20: optional QueryRejected queryRejected\n}\n\nstruct WorkflowQuery {\n 10: optional string queryType\n 20: optional binary queryArgs\n}\n\nstruct ResetStickyTaskListRequest {\n 10: optional string domain\n 20: optional WorkflowExecution execution\n}\n\nstruct ResetStickyTaskListResponse {\n // The reason to keep this response is to allow returning\n // information in the future.\n}\n\nstruct RespondQueryTaskCompletedRequest {\n 10: optional binary taskToken\n 20: optional QueryTaskCompletedType completedType\n 30: optional binary queryResult\n 40: optional string errorMessage\n 50: optional WorkerVersionInfo workerVersionInfo\n}\n\nstruct WorkflowQueryResult {\n 10: optional QueryResultType resultType\n 20: optional binary answer\n 30: optional string errorMessage\n}\n\nstruct DescribeWorkflowExecutionRequest {\n 10: optional string domain\n 20: optional WorkflowExecution execution\n}\n\nstruct PendingActivityInfo {\n 10: optional string activityID\n 20: optional ActivityType activityType\n 30: optional PendingActivityState state\n 40: optional binary heartbeatDetails\n 50: optional i64 (js.type = \"Long\") lastHeartbeatTimestamp\n 60: optional i64 (js.type = \"Long\") lastStartedTimestamp\n 70: optional i32 attempt\n 80: optional i32 maximumAttempts\n 90: optional i64 (js.type = \"Long\") scheduledTimestamp\n 100: optional i64 (js.type = \"Long\") expirationTimestamp\n 110: optional string lastFailureReason\n 120: optional string lastWorkerIdentity\n 130: optional binary lastFailureDetails\n 140: optional string startedWorkerIdentity\n 150: optional i64 (js.type = \"Long\") scheduleID\n}\n\nstruct PendingDecisionInfo {\n 10: optional PendingDecisionState state\n 20: optional i64 (js.type = \"Long\") scheduledTimestamp\n 30: optional i64 (js.type = \"Long\") startedTimestamp\n 40: optional i64 attempt\n 50: optional i64 (js.type = \"Long\") originalScheduledTimestamp\n 60: optional i64 (js.type = \"Long\") scheduleID\n}\n\nstruct PendingChildExecutionInfo {\n 1: optional string domain\n 10: optional string workflowID\n 20: optional string runID\n 30: optional string workflowTypName\n 40: optional i64 (js.type = \"Long\") initiatedID\n 50: optional ParentClosePolicy parentClosePolicy\n}\n\nstruct DescribeWorkflowExecutionResponse {\n 10: optional WorkflowExecutionConfiguration executionConfiguration\n 20: optional WorkflowExecutionInfo workflowExecutionInfo\n 30: optional list pendingActivities\n 40: optional list pendingChildren\n 50: optional PendingDecisionInfo pendingDecision\n}\n\nstruct DescribeTaskListRequest {\n 10: optional string domain\n 20: optional TaskList taskList\n 30: optional TaskListType taskListType\n 40: optional bool includeTaskListStatus\n}\n\nstruct DescribeTaskListResponse {\n 10: optional list pollers\n 20: optional TaskListStatus taskListStatus\n}\n\nstruct GetTaskListsByDomainRequest {\n 10: optional string domainName\n}\n\nstruct GetTaskListsByDomainResponse {\n 10: optional map decisionTaskListMap\n 20: optional map activityTaskListMap\n}\n\nstruct ListTaskListPartitionsRequest {\n 10: optional string domain\n 20: optional TaskList taskList\n}\n\nstruct TaskListPartitionMetadata {\n 10: optional string key\n 20: optional string ownerHostName\n}\n\nstruct ListTaskListPartitionsResponse {\n 10: optional list activityTaskListPartitions\n 20: optional list decisionTaskListPartitions\n}\n\nstruct IsolationGroupMetrics {\n 10: optional double newTasksPerSecond\n 20: optional i64 (js.type = \"Long\") pollerCount\n}\n\nstruct TaskListStatus {\n 10: optional i64 (js.type = \"Long\") backlogCountHint\n 20: optional i64 (js.type = \"Long\") readLevel\n 30: optional i64 (js.type = \"Long\") ackLevel\n 35: optional double ratePerSecond\n 40: optional TaskIDBlock taskIDBlock\n 50: optional map isolationGroupMetrics\n 60: optional double newTasksPerSecond\n}\n\nstruct TaskIDBlock {\n 10: optional i64 (js.type = \"Long\") startID\n 20: optional i64 (js.type = \"Long\") endID\n}\n\n//At least one of the parameters needs to be provided\nstruct DescribeHistoryHostRequest {\n 10: optional string hostAddress //ip:port\n 20: optional i32 shardIdForHost\n 30: optional WorkflowExecution executionForHost\n}\n\nstruct RemoveTaskRequest {\n 10: optional i32 shardID\n 20: optional i32 type\n 30: optional i64 (js.type = \"Long\") taskID\n 40: optional i64 (js.type = \"Long\") visibilityTimestamp\n 50: optional string clusterName\n}\n\nstruct CloseShardRequest {\n 10: optional i32 shardID\n}\n\nstruct ResetQueueRequest {\n 10: optional i32 shardID\n 20: optional string clusterName\n 30: optional i32 type\n}\n\nstruct DescribeQueueRequest {\n 10: optional i32 shardID\n 20: optional string clusterName\n 30: optional i32 type\n}\n\nstruct DescribeQueueResponse {\n 10: optional list processingQueueStates\n}\n\nstruct DescribeShardDistributionRequest {\n 10: optional i32 pageSize\n 20: optional i32 pageID\n}\n\nstruct DescribeShardDistributionResponse {\n 10: optional i32 numberOfShards\n\n // ShardID to Address (ip:port) map\n 20: optional map shards\n}\n\nstruct DescribeHistoryHostResponse{\n 10: optional i32 numberOfShards\n 20: optional list shardIDs\n 30: optional DomainCacheInfo domainCache\n 40: optional string shardControllerStatus\n 50: optional string address\n}\n\nstruct DomainCacheInfo{\n 10: optional i64 numOfItemsInCacheByID\n 20: optional i64 numOfItemsInCacheByName\n}\n\nenum TaskListType {\n /*\n * Decision type of tasklist\n */\n Decision,\n /*\n * Activity type of tasklist\n */\n Activity,\n}\n\nstruct PollerInfo {\n // Unix Nano\n 10: optional i64 (js.type = \"Long\") lastAccessTime\n 20: optional string identity\n 30: optional double ratePerSecond\n}\n\nstruct RetryPolicy {\n // Interval of the first retry. If coefficient is 1.0 then it is used for all retries.\n 10: optional i32 initialIntervalInSeconds\n\n // Coefficient used to calculate the next retry interval.\n // The next retry interval is previous interval multiplied by the coefficient.\n // Must be 1 or larger.\n 20: optional double backoffCoefficient\n\n // Maximum interval between retries. Exponential backoff leads to interval increase.\n // This value is the cap of the increase. Default is 100x of initial interval.\n 30: optional i32 maximumIntervalInSeconds\n\n // Maximum number of attempts. When exceeded the retries stop even if not expired yet.\n // Must be 1 or bigger. Default is unlimited.\n 40: optional i32 maximumAttempts\n\n // Non-Retriable errors. Will stop retrying if error matches this list.\n 50: optional list nonRetriableErrorReasons\n\n // Expiration time for the whole retry process.\n 60: optional i32 expirationIntervalInSeconds\n}\n\n// HistoryBranchRange represents a piece of range for a branch.\nstruct HistoryBranchRange{\n // branchID of original branch forked from\n 10: optional string branchID\n // beinning node for the range, inclusive\n 20: optional i64 beginNodeID\n // ending node for the range, exclusive\n 30: optional i64 endNodeID\n}\n\n// For history persistence to serialize/deserialize branch details\nstruct HistoryBranch{\n 10: optional string treeID\n 20: optional string branchID\n 30: optional list ancestors\n}\n\n// VersionHistoryItem contains signal eventID and the corresponding version\nstruct VersionHistoryItem{\n 10: optional i64 (js.type = \"Long\") eventID\n 20: optional i64 (js.type = \"Long\") version\n}\n\n// VersionHistory contains the version history of a branch\nstruct VersionHistory{\n 10: optional binary branchToken\n 20: optional list items\n}\n\n// VersionHistories contains all version histories from all branches\nstruct VersionHistories{\n 10: optional i32 currentVersionHistoryIndex\n 20: optional list histories\n}\n\n// ReapplyEventsRequest is the request for reapply events API\nstruct ReapplyEventsRequest{\n 10: optional string domainName\n 20: optional WorkflowExecution workflowExecution\n 30: optional DataBlob events\n}\n\n// SupportedClientVersions contains the support versions for client library\nstruct SupportedClientVersions{\n 10: optional string goSdk\n 20: optional string javaSdk\n}\n\n// ClusterInfo contains information about cadence cluster\nstruct ClusterInfo{\n 10: optional SupportedClientVersions supportedClientVersions\n}\n\nstruct RefreshWorkflowTasksRequest {\n 10: optional string domain\n 20: optional WorkflowExecution execution\n}\n\nstruct FeatureFlags {\n\t10: optional bool WorkflowExecutionAlreadyCompletedErrorEnabled\n}\n\nenum CrossClusterTaskType {\n StartChildExecution\n CancelExecution\n SignalExecution\n RecordChildWorkflowExecutionComplete\n ApplyParentClosePolicy\n}\n\nenum CrossClusterTaskFailedCause {\n DOMAIN_NOT_ACTIVE\n DOMAIN_NOT_EXISTS\n WORKFLOW_ALREADY_RUNNING\n WORKFLOW_NOT_EXISTS\n WORKFLOW_ALREADY_COMPLETED\n UNCATEGORIZED\n}\n\nenum GetTaskFailedCause {\n SERVICE_BUSY\n TIMEOUT\n SHARD_OWNERSHIP_LOST\n UNCATEGORIZED\n}\n\nstruct CrossClusterTaskInfo {\n 10: optional string domainID\n 20: optional string workflowID\n 30: optional string runID\n 40: optional CrossClusterTaskType taskType\n 50: optional i16 taskState\n 60: optional i64 (js.type = \"Long\") taskID\n 70: optional i64 (js.type = \"Long\") visibilityTimestamp\n}\n\nstruct CrossClusterStartChildExecutionRequestAttributes {\n 10: optional string targetDomainID\n 20: optional string requestID\n 30: optional i64 (js.type = \"Long\") initiatedEventID\n 40: optional StartChildWorkflowExecutionInitiatedEventAttributes initiatedEventAttributes\n // targetRunID is for scheduling first decision task\n // targetWorkflowID is available in initiatedEventAttributes\n 50: optional string targetRunID\n 60: optional map partitionConfig\n}\n\nstruct CrossClusterStartChildExecutionResponseAttributes {\n 10: optional string runID\n}\n\nstruct CrossClusterCancelExecutionRequestAttributes {\n 10: optional string targetDomainID\n 20: optional string targetWorkflowID\n 30: optional string targetRunID\n 40: optional string requestID\n 50: optional i64 (js.type = \"Long\") initiatedEventID\n 60: optional bool childWorkflowOnly\n}\n\nstruct CrossClusterCancelExecutionResponseAttributes {\n}\n\nstruct CrossClusterSignalExecutionRequestAttributes {\n 10: optional string targetDomainID\n 20: optional string targetWorkflowID\n 30: optional string targetRunID\n 40: optional string requestID\n 50: optional i64 (js.type = \"Long\") initiatedEventID\n 60: optional bool childWorkflowOnly\n 70: optional string signalName\n 80: optional binary signalInput\n 90: optional binary control\n}\n\nstruct CrossClusterSignalExecutionResponseAttributes {\n}\n\nstruct CrossClusterRecordChildWorkflowExecutionCompleteRequestAttributes {\n 10: optional string targetDomainID\n 20: optional string targetWorkflowID\n 30: optional string targetRunID\n 40: optional i64 (js.type = \"Long\") initiatedEventID\n 50: optional HistoryEvent completionEvent\n}\n\nstruct CrossClusterRecordChildWorkflowExecutionCompleteResponseAttributes {\n}\n\nstruct ApplyParentClosePolicyAttributes {\n 10: optional string childDomainID\n 20: optional string childWorkflowID\n 30: optional string childRunID\n 40: optional ParentClosePolicy parentClosePolicy\n}\n\nstruct ApplyParentClosePolicyStatus {\n 10: optional bool completed\n 20: optional CrossClusterTaskFailedCause failedCause\n}\n\nstruct ApplyParentClosePolicyRequest {\n 10: optional ApplyParentClosePolicyAttributes child\n 20: optional ApplyParentClosePolicyStatus status\n}\n\nstruct CrossClusterApplyParentClosePolicyRequestAttributes {\n 10: optional list children\n}\n\nstruct ApplyParentClosePolicyResult {\n 10: optional ApplyParentClosePolicyAttributes child\n 20: optional CrossClusterTaskFailedCause failedCause\n}\n\nstruct CrossClusterApplyParentClosePolicyResponseAttributes {\n 10: optional list childrenStatus\n}\n\nstruct CrossClusterTaskRequest {\n 10: optional CrossClusterTaskInfo taskInfo\n 20: optional CrossClusterStartChildExecutionRequestAttributes startChildExecutionAttributes\n 30: optional CrossClusterCancelExecutionRequestAttributes cancelExecutionAttributes\n 40: optional CrossClusterSignalExecutionRequestAttributes signalExecutionAttributes\n 50: optional CrossClusterRecordChildWorkflowExecutionCompleteRequestAttributes recordChildWorkflowExecutionCompleteAttributes\n 60: optional CrossClusterApplyParentClosePolicyRequestAttributes applyParentClosePolicyAttributes\n}\n\nstruct CrossClusterTaskResponse {\n 10: optional i64 (js.type = \"Long\") taskID\n 20: optional CrossClusterTaskType taskType\n 30: optional i16 taskState\n 40: optional CrossClusterTaskFailedCause failedCause\n 50: optional CrossClusterStartChildExecutionResponseAttributes startChildExecutionAttributes\n 60: optional CrossClusterCancelExecutionResponseAttributes cancelExecutionAttributes\n 70: optional CrossClusterSignalExecutionResponseAttributes signalExecutionAttributes\n 80: optional CrossClusterRecordChildWorkflowExecutionCompleteResponseAttributes recordChildWorkflowExecutionCompleteAttributes\n 90: optional CrossClusterApplyParentClosePolicyResponseAttributes applyParentClosePolicyAttributes\n}\n\nstruct GetCrossClusterTasksRequest {\n 10: optional list shardIDs\n 20: optional string targetCluster\n}\n\nstruct GetCrossClusterTasksResponse {\n 10: optional map> tasksByShard\n 20: optional map failedCauseByShard\n}\n\nstruct RespondCrossClusterTasksCompletedRequest {\n 10: optional i32 shardID\n 20: optional string targetCluster\n 30: optional list taskResponses\n 40: optional bool fetchNewTasks\n}\n\nstruct RespondCrossClusterTasksCompletedResponse {\n 10: optional list tasks\n}\n\nenum IsolationGroupState {\n INVALID,\n HEALTHY,\n DRAINED,\n}\n\nstruct IsolationGroupPartition {\n 10: optional string name\n 20: optional IsolationGroupState state\n}\n\nstruct IsolationGroupConfiguration {\n 10: optional list isolationGroups\n}\n\nstruct AsyncWorkflowConfiguration {\n 10: optional bool enabled\n // PredefinedQueueName is the name of the predefined queue in cadence server config's asyncWorkflowQueues\n 20: optional string predefinedQueueName\n // queueType is the type of the queue if predefined_queue_name is not used\n 30: optional string queueType\n // queueConfig is the configuration for the queue if predefined_queue_name is not used\n 40: optional DataBlob queueConfig\n}\n\n/**\n* Any is a logical duplicate of google.protobuf.Any.\n*\n* The intent of the type is the same, but it is not intended to be directly\n* compatible with google.protobuf.Any or any Thrift equivalent - this blob is\n* RPC-type agnostic by design (as the underlying data may be transported over\n* proto or thrift), and the data-bytes may be in any encoding.\n*\n* This is intentionally different from DataBlob, which supports only a handful\n* of known encodings so it can be interpreted everywhere. Any supports literally\n* any contents, and needs to be considered opaque until it is given to something\n* that is expecting it.\n*\n* See ValueType to interpret the contents.\n**/\nstruct Any {\n // Type-string describing value's contents, and intentionally avoiding the\n // name \"type\" as it is often a special term.\n // This should usually be a hard-coded string of some kind.\n 10: optional string ValueType\n // Arbitrarily-encoded bytes, to be deserialized by a runtime implementation.\n // The contents are described by ValueType.\n 20: optional binary Value\n}\n\nstruct AutoConfigHint {\n 10: optional bool enableAutoConfig\n 20: optional i64 pollerWaitTimeInMs\n}\n" diff --git a/.gen/go/sqlblobs/sqlblobs.go b/.gen/go/sqlblobs/sqlblobs.go index 6ed30164fff..40e90c4d0a0 100644 --- a/.gen/go/sqlblobs/sqlblobs.go +++ b/.gen/go/sqlblobs/sqlblobs.go @@ -10900,12 +10900,258 @@ func (v *TaskListInfo) IsSetAdaptivePartitionConfig() bool { return v != nil && v.AdaptivePartitionConfig != nil } +type TaskListPartition struct { + IsolationGroups []string `json:"isolationGroups,omitempty"` +} + +// ToWire translates a TaskListPartition struct into a Thrift-level intermediate +// representation. This intermediate representation may be serialized +// into bytes using a ThriftRW protocol implementation. +// +// An error is returned if the struct or any of its fields failed to +// validate. +// +// x, err := v.ToWire() +// if err != nil { +// return err +// } +// +// if err := binaryProtocol.Encode(x, writer); err != nil { +// return err +// } +func (v *TaskListPartition) ToWire() (wire.Value, error) { + var ( + fields [1]wire.Field + i int = 0 + w wire.Value + err error + ) + + if v.IsolationGroups != nil { + w, err = wire.NewValueList(_List_String_ValueList(v.IsolationGroups)), error(nil) + if err != nil { + return w, err + } + fields[i] = wire.Field{ID: 10, Value: w} + i++ + } + + return wire.NewValueStruct(wire.Struct{Fields: fields[:i]}), nil +} + +// FromWire deserializes a TaskListPartition struct from its Thrift-level +// representation. The Thrift-level representation may be obtained +// from a ThriftRW protocol implementation. +// +// An error is returned if we were unable to build a TaskListPartition struct +// from the provided intermediate representation. +// +// x, err := binaryProtocol.Decode(reader, wire.TStruct) +// if err != nil { +// return nil, err +// } +// +// var v TaskListPartition +// if err := v.FromWire(x); err != nil { +// return nil, err +// } +// return &v, nil +func (v *TaskListPartition) FromWire(w wire.Value) error { + var err error + + for _, field := range w.GetStruct().Fields { + switch field.ID { + case 10: + if field.Value.Type() == wire.TList { + v.IsolationGroups, err = _List_String_Read(field.Value.GetList()) + if err != nil { + return err + } + + } + } + } + + return nil +} + +// Encode serializes a TaskListPartition struct directly into bytes, without going +// through an intermediary type. +// +// An error is returned if a TaskListPartition struct could not be encoded. +func (v *TaskListPartition) Encode(sw stream.Writer) error { + if err := sw.WriteStructBegin(); err != nil { + return err + } + + if v.IsolationGroups != nil { + if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 10, Type: wire.TList}); err != nil { + return err + } + if err := _List_String_Encode(v.IsolationGroups, sw); err != nil { + return err + } + if err := sw.WriteFieldEnd(); err != nil { + return err + } + } + + return sw.WriteStructEnd() +} + +// Decode deserializes a TaskListPartition struct directly from its Thrift-level +// representation, without going through an intemediary type. +// +// An error is returned if a TaskListPartition struct could not be generated from the wire +// representation. +func (v *TaskListPartition) Decode(sr stream.Reader) error { + + if err := sr.ReadStructBegin(); err != nil { + return err + } + + fh, ok, err := sr.ReadFieldBegin() + if err != nil { + return err + } + + for ok { + switch { + case fh.ID == 10 && fh.Type == wire.TList: + v.IsolationGroups, err = _List_String_Decode(sr) + if err != nil { + return err + } + + default: + if err := sr.Skip(fh.Type); err != nil { + return err + } + } + + if err := sr.ReadFieldEnd(); err != nil { + return err + } + + if fh, ok, err = sr.ReadFieldBegin(); err != nil { + return err + } + } + + if err := sr.ReadStructEnd(); err != nil { + return err + } + + return nil +} + +// String returns a readable string representation of a TaskListPartition +// struct. +func (v *TaskListPartition) String() string { + if v == nil { + return "" + } + + var fields [1]string + i := 0 + if v.IsolationGroups != nil { + fields[i] = fmt.Sprintf("IsolationGroups: %v", v.IsolationGroups) + i++ + } + + return fmt.Sprintf("TaskListPartition{%v}", strings.Join(fields[:i], ", ")) +} + +// Equals returns true if all the fields of this TaskListPartition match the +// provided TaskListPartition. +// +// This function performs a deep comparison. +func (v *TaskListPartition) Equals(rhs *TaskListPartition) bool { + if v == nil { + return rhs == nil + } else if rhs == nil { + return false + } + if !((v.IsolationGroups == nil && rhs.IsolationGroups == nil) || (v.IsolationGroups != nil && rhs.IsolationGroups != nil && _List_String_Equals(v.IsolationGroups, rhs.IsolationGroups))) { + return false + } + + return true +} + +// MarshalLogObject implements zapcore.ObjectMarshaler, enabling +// fast logging of TaskListPartition. +func (v *TaskListPartition) MarshalLogObject(enc zapcore.ObjectEncoder) (err error) { + if v == nil { + return nil + } + if v.IsolationGroups != nil { + err = multierr.Append(err, enc.AddArray("isolationGroups", (_List_String_Zapper)(v.IsolationGroups))) + } + return err +} + +// GetIsolationGroups returns the value of IsolationGroups if it is set or its +// zero value if it is unset. +func (v *TaskListPartition) GetIsolationGroups() (o []string) { + if v != nil && v.IsolationGroups != nil { + return v.IsolationGroups + } + + return +} + +// IsSetIsolationGroups returns true if IsolationGroups is not nil. +func (v *TaskListPartition) IsSetIsolationGroups() bool { + return v != nil && v.IsolationGroups != nil +} + type TaskListPartitionConfig struct { - Version *int64 `json:"version,omitempty"` - NumReadPartitions *int32 `json:"numReadPartitions,omitempty"` - NumWritePartitions *int32 `json:"numWritePartitions,omitempty"` + Version *int64 `json:"version,omitempty"` + NumReadPartitions *int32 `json:"numReadPartitions,omitempty"` + NumWritePartitions *int32 `json:"numWritePartitions,omitempty"` + ReadPartitions map[int32]*TaskListPartition `json:"readPartitions,omitempty"` + WritePartitions map[int32]*TaskListPartition `json:"writePartitions,omitempty"` +} + +type _Map_I32_TaskListPartition_MapItemList map[int32]*TaskListPartition + +func (m _Map_I32_TaskListPartition_MapItemList) ForEach(f func(wire.MapItem) error) error { + for k, v := range m { + if v == nil { + return fmt.Errorf("invalid map 'map[int32]*TaskListPartition', key [%v]: value is nil", k) + } + kw, err := wire.NewValueI32(k), error(nil) + if err != nil { + return err + } + + vw, err := v.ToWire() + if err != nil { + return err + } + err = f(wire.MapItem{Key: kw, Value: vw}) + if err != nil { + return err + } + } + return nil +} + +func (m _Map_I32_TaskListPartition_MapItemList) Size() int { + return len(m) +} + +func (_Map_I32_TaskListPartition_MapItemList) KeyType() wire.Type { + return wire.TI32 +} + +func (_Map_I32_TaskListPartition_MapItemList) ValueType() wire.Type { + return wire.TStruct } +func (_Map_I32_TaskListPartition_MapItemList) Close() {} + // ToWire translates a TaskListPartitionConfig struct into a Thrift-level intermediate // representation. This intermediate representation may be serialized // into bytes using a ThriftRW protocol implementation. @@ -10923,7 +11169,7 @@ type TaskListPartitionConfig struct { // } func (v *TaskListPartitionConfig) ToWire() (wire.Value, error) { var ( - fields [3]wire.Field + fields [5]wire.Field i int = 0 w wire.Value err error @@ -10953,10 +11199,60 @@ func (v *TaskListPartitionConfig) ToWire() (wire.Value, error) { fields[i] = wire.Field{ID: 14, Value: w} i++ } + if v.ReadPartitions != nil { + w, err = wire.NewValueMap(_Map_I32_TaskListPartition_MapItemList(v.ReadPartitions)), error(nil) + if err != nil { + return w, err + } + fields[i] = wire.Field{ID: 16, Value: w} + i++ + } + if v.WritePartitions != nil { + w, err = wire.NewValueMap(_Map_I32_TaskListPartition_MapItemList(v.WritePartitions)), error(nil) + if err != nil { + return w, err + } + fields[i] = wire.Field{ID: 18, Value: w} + i++ + } return wire.NewValueStruct(wire.Struct{Fields: fields[:i]}), nil } +func _TaskListPartition_Read(w wire.Value) (*TaskListPartition, error) { + var v TaskListPartition + err := v.FromWire(w) + return &v, err +} + +func _Map_I32_TaskListPartition_Read(m wire.MapItemList) (map[int32]*TaskListPartition, error) { + if m.KeyType() != wire.TI32 { + return nil, nil + } + + if m.ValueType() != wire.TStruct { + return nil, nil + } + + o := make(map[int32]*TaskListPartition, m.Size()) + err := m.ForEach(func(x wire.MapItem) error { + k, err := x.Key.GetI32(), error(nil) + if err != nil { + return err + } + + v, err := _TaskListPartition_Read(x.Value) + if err != nil { + return err + } + + o[k] = v + return nil + }) + m.Close() + return o, err +} + // FromWire deserializes a TaskListPartitionConfig struct from its Thrift-level // representation. The Thrift-level representation may be obtained // from a ThriftRW protocol implementation. @@ -11008,6 +11304,22 @@ func (v *TaskListPartitionConfig) FromWire(w wire.Value) error { return err } + } + case 16: + if field.Value.Type() == wire.TMap { + v.ReadPartitions, err = _Map_I32_TaskListPartition_Read(field.Value.GetMap()) + if err != nil { + return err + } + + } + case 18: + if field.Value.Type() == wire.TMap { + v.WritePartitions, err = _Map_I32_TaskListPartition_Read(field.Value.GetMap()) + if err != nil { + return err + } + } } } @@ -11015,6 +11327,32 @@ func (v *TaskListPartitionConfig) FromWire(w wire.Value) error { return nil } +func _Map_I32_TaskListPartition_Encode(val map[int32]*TaskListPartition, sw stream.Writer) error { + + mh := stream.MapHeader{ + KeyType: wire.TI32, + ValueType: wire.TStruct, + Length: len(val), + } + if err := sw.WriteMapBegin(mh); err != nil { + return err + } + + for k, v := range val { + if v == nil { + return fmt.Errorf("invalid map 'map[int32]*TaskListPartition', key [%v]: value is nil", k) + } + if err := sw.WriteInt32(k); err != nil { + return err + } + if err := v.Encode(sw); err != nil { + return err + } + } + + return sw.WriteMapEnd() +} + // Encode serializes a TaskListPartitionConfig struct directly into bytes, without going // through an intermediary type. // @@ -11060,9 +11398,79 @@ func (v *TaskListPartitionConfig) Encode(sw stream.Writer) error { } } + if v.ReadPartitions != nil { + if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 16, Type: wire.TMap}); err != nil { + return err + } + if err := _Map_I32_TaskListPartition_Encode(v.ReadPartitions, sw); err != nil { + return err + } + if err := sw.WriteFieldEnd(); err != nil { + return err + } + } + + if v.WritePartitions != nil { + if err := sw.WriteFieldBegin(stream.FieldHeader{ID: 18, Type: wire.TMap}); err != nil { + return err + } + if err := _Map_I32_TaskListPartition_Encode(v.WritePartitions, sw); err != nil { + return err + } + if err := sw.WriteFieldEnd(); err != nil { + return err + } + } + return sw.WriteStructEnd() } +func _TaskListPartition_Decode(sr stream.Reader) (*TaskListPartition, error) { + var v TaskListPartition + err := v.Decode(sr) + return &v, err +} + +func _Map_I32_TaskListPartition_Decode(sr stream.Reader) (map[int32]*TaskListPartition, error) { + mh, err := sr.ReadMapBegin() + if err != nil { + return nil, err + } + + if mh.KeyType != wire.TI32 || mh.ValueType != wire.TStruct { + for i := 0; i < mh.Length; i++ { + if err := sr.Skip(mh.KeyType); err != nil { + return nil, err + } + + if err := sr.Skip(mh.ValueType); err != nil { + return nil, err + } + } + return nil, sr.ReadMapEnd() + } + + o := make(map[int32]*TaskListPartition, mh.Length) + for i := 0; i < mh.Length; i++ { + k, err := sr.ReadInt32() + if err != nil { + return nil, err + } + + v, err := _TaskListPartition_Decode(sr) + if err != nil { + return nil, err + } + + o[k] = v + } + + if err = sr.ReadMapEnd(); err != nil { + return nil, err + } + return o, err +} + // Decode deserializes a TaskListPartitionConfig struct directly from its Thrift-level // representation, without going through an intemediary type. // @@ -11105,6 +11513,18 @@ func (v *TaskListPartitionConfig) Decode(sr stream.Reader) error { return err } + case fh.ID == 16 && fh.Type == wire.TMap: + v.ReadPartitions, err = _Map_I32_TaskListPartition_Decode(sr) + if err != nil { + return err + } + + case fh.ID == 18 && fh.Type == wire.TMap: + v.WritePartitions, err = _Map_I32_TaskListPartition_Decode(sr) + if err != nil { + return err + } + default: if err := sr.Skip(fh.Type); err != nil { return err @@ -11134,7 +11554,7 @@ func (v *TaskListPartitionConfig) String() string { return "" } - var fields [3]string + var fields [5]string i := 0 if v.Version != nil { fields[i] = fmt.Sprintf("Version: %v", *(v.Version)) @@ -11148,10 +11568,35 @@ func (v *TaskListPartitionConfig) String() string { fields[i] = fmt.Sprintf("NumWritePartitions: %v", *(v.NumWritePartitions)) i++ } + if v.ReadPartitions != nil { + fields[i] = fmt.Sprintf("ReadPartitions: %v", v.ReadPartitions) + i++ + } + if v.WritePartitions != nil { + fields[i] = fmt.Sprintf("WritePartitions: %v", v.WritePartitions) + i++ + } return fmt.Sprintf("TaskListPartitionConfig{%v}", strings.Join(fields[:i], ", ")) } +func _Map_I32_TaskListPartition_Equals(lhs, rhs map[int32]*TaskListPartition) bool { + if len(lhs) != len(rhs) { + return false + } + + for lk, lv := range lhs { + rv, ok := rhs[lk] + if !ok { + return false + } + if !lv.Equals(rv) { + return false + } + } + return true +} + // Equals returns true if all the fields of this TaskListPartitionConfig match the // provided TaskListPartitionConfig. // @@ -11171,10 +11616,40 @@ func (v *TaskListPartitionConfig) Equals(rhs *TaskListPartitionConfig) bool { if !_I32_EqualsPtr(v.NumWritePartitions, rhs.NumWritePartitions) { return false } + if !((v.ReadPartitions == nil && rhs.ReadPartitions == nil) || (v.ReadPartitions != nil && rhs.ReadPartitions != nil && _Map_I32_TaskListPartition_Equals(v.ReadPartitions, rhs.ReadPartitions))) { + return false + } + if !((v.WritePartitions == nil && rhs.WritePartitions == nil) || (v.WritePartitions != nil && rhs.WritePartitions != nil && _Map_I32_TaskListPartition_Equals(v.WritePartitions, rhs.WritePartitions))) { + return false + } return true } +type _Map_I32_TaskListPartition_Item_Zapper struct { + Key int32 + Value *TaskListPartition +} + +// MarshalLogArray implements zapcore.ArrayMarshaler, enabling +// fast logging of _Map_I32_TaskListPartition_Item_Zapper. +func (v _Map_I32_TaskListPartition_Item_Zapper) MarshalLogObject(enc zapcore.ObjectEncoder) (err error) { + enc.AddInt32("key", v.Key) + err = multierr.Append(err, enc.AddObject("value", v.Value)) + return err +} + +type _Map_I32_TaskListPartition_Zapper map[int32]*TaskListPartition + +// MarshalLogArray implements zapcore.ArrayMarshaler, enabling +// fast logging of _Map_I32_TaskListPartition_Zapper. +func (m _Map_I32_TaskListPartition_Zapper) MarshalLogArray(enc zapcore.ArrayEncoder) (err error) { + for k, v := range m { + err = multierr.Append(err, enc.AppendObject(_Map_I32_TaskListPartition_Item_Zapper{Key: k, Value: v})) + } + return err +} + // MarshalLogObject implements zapcore.ObjectMarshaler, enabling // fast logging of TaskListPartitionConfig. func (v *TaskListPartitionConfig) MarshalLogObject(enc zapcore.ObjectEncoder) (err error) { @@ -11190,6 +11665,12 @@ func (v *TaskListPartitionConfig) MarshalLogObject(enc zapcore.ObjectEncoder) (e if v.NumWritePartitions != nil { enc.AddInt32("numWritePartitions", *v.NumWritePartitions) } + if v.ReadPartitions != nil { + err = multierr.Append(err, enc.AddArray("readPartitions", (_Map_I32_TaskListPartition_Zapper)(v.ReadPartitions))) + } + if v.WritePartitions != nil { + err = multierr.Append(err, enc.AddArray("writePartitions", (_Map_I32_TaskListPartition_Zapper)(v.WritePartitions))) + } return err } @@ -11238,6 +11719,36 @@ func (v *TaskListPartitionConfig) IsSetNumWritePartitions() bool { return v != nil && v.NumWritePartitions != nil } +// GetReadPartitions returns the value of ReadPartitions if it is set or its +// zero value if it is unset. +func (v *TaskListPartitionConfig) GetReadPartitions() (o map[int32]*TaskListPartition) { + if v != nil && v.ReadPartitions != nil { + return v.ReadPartitions + } + + return +} + +// IsSetReadPartitions returns true if ReadPartitions is not nil. +func (v *TaskListPartitionConfig) IsSetReadPartitions() bool { + return v != nil && v.ReadPartitions != nil +} + +// GetWritePartitions returns the value of WritePartitions if it is set or its +// zero value if it is unset. +func (v *TaskListPartitionConfig) GetWritePartitions() (o map[int32]*TaskListPartition) { + if v != nil && v.WritePartitions != nil { + return v.WritePartitions + } + + return +} + +// IsSetWritePartitions returns true if WritePartitions is not nil. +func (v *TaskListPartitionConfig) IsSetWritePartitions() bool { + return v != nil && v.WritePartitions != nil +} + type TimerInfo struct { Version *int64 `json:"version,omitempty"` StartedID *int64 `json:"startedID,omitempty"` @@ -17609,11 +18120,11 @@ var ThriftModule = &thriftreflect.ThriftModule{ Name: "sqlblobs", Package: "github.com/uber/cadence/.gen/go/sqlblobs", FilePath: "sqlblobs.thrift", - SHA1: "9c854b8a522aa30664f56e3bf0e1c54c413d84ff", + SHA1: "07563bc49d96c73d414ed5ce6fd4a74202911035", Includes: []*thriftreflect.ThriftModule{ shared.ThriftModule, }, Raw: rawIDL, } -const rawIDL = "// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nnamespace java com.uber.cadence.sqlblobs\n\ninclude \"shared.thrift\"\n\nstruct ShardInfo {\n 10: optional i32 stolenSinceRenew\n 12: optional i64 (js.type = \"Long\") updatedAtNanos\n 14: optional i64 (js.type = \"Long\") replicationAckLevel\n 16: optional i64 (js.type = \"Long\") transferAckLevel\n 18: optional i64 (js.type = \"Long\") timerAckLevelNanos\n 24: optional i64 (js.type = \"Long\") domainNotificationVersion\n 34: optional map clusterTransferAckLevel\n 36: optional map clusterTimerAckLevel\n 38: optional string owner\n 40: optional map clusterReplicationLevel\n 42: optional binary pendingFailoverMarkers\n 44: optional string pendingFailoverMarkersEncoding\n 46: optional map replicationDlqAckLevel\n 50: optional binary transferProcessingQueueStates\n 51: optional string transferProcessingQueueStatesEncoding\n 55: optional binary timerProcessingQueueStates\n 56: optional string timerProcessingQueueStatesEncoding\n 60: optional binary crossClusterProcessingQueueStates\n 61: optional string crossClusterProcessingQueueStatesEncoding\n}\n\nstruct DomainInfo {\n 10: optional string name\n 12: optional string description\n 14: optional string owner\n 16: optional i32 status\n 18: optional i16 retentionDays\n 20: optional bool emitMetric\n 22: optional string archivalBucket\n 24: optional i16 archivalStatus\n 26: optional i64 (js.type = \"Long\") configVersion\n 28: optional i64 (js.type = \"Long\") notificationVersion\n 30: optional i64 (js.type = \"Long\") failoverNotificationVersion\n 32: optional i64 (js.type = \"Long\") failoverVersion\n 34: optional string activeClusterName\n 36: optional list clusters\n 38: optional map data\n 39: optional binary badBinaries\n 40: optional string badBinariesEncoding\n 42: optional i16 historyArchivalStatus\n 44: optional string historyArchivalURI\n 46: optional i16 visibilityArchivalStatus\n 48: optional string visibilityArchivalURI\n 50: optional i64 (js.type = \"Long\") failoverEndTime\n 52: optional i64 (js.type = \"Long\") previousFailoverVersion\n 54: optional i64 (js.type = \"Long\") lastUpdatedTime\n 56: optional binary isolationGroupsConfiguration\n 58: optional string isolationGroupsConfigurationEncoding\n 60: optional binary asyncWorkflowConfiguration\n 62: optional string asyncWorkflowConfigurationEncoding\n}\n\nstruct HistoryTreeInfo {\n 10: optional i64 (js.type = \"Long\") createdTimeNanos // For fork operation to prevent race condition of leaking event data when forking branches fail. Also can be used for clean up leaked data\n 12: optional list ancestors\n 14: optional string info // For lookup back to workflow during debugging, also background cleanup when fork operation cannot finish self cleanup due to crash.\n}\n\nstruct WorkflowExecutionInfo {\n 10: optional binary parentDomainID\n 12: optional string parentWorkflowID\n 14: optional binary parentRunID\n 16: optional i64 (js.type = \"Long\") initiatedID\n 18: optional i64 (js.type = \"Long\") completionEventBatchID\n 20: optional binary completionEvent\n 22: optional string completionEventEncoding\n 24: optional string taskList\n 26: optional string workflowTypeName\n 28: optional i32 workflowTimeoutSeconds\n 30: optional i32 decisionTaskTimeoutSeconds\n 32: optional binary executionContext\n 34: optional i32 state\n 36: optional i32 closeStatus\n 38: optional i64 (js.type = \"Long\") startVersion\n 44: optional i64 (js.type = \"Long\") lastWriteEventID\n 48: optional i64 (js.type = \"Long\") lastEventTaskID\n 50: optional i64 (js.type = \"Long\") lastFirstEventID\n 52: optional i64 (js.type = \"Long\") lastProcessedEvent\n 54: optional i64 (js.type = \"Long\") startTimeNanos\n 56: optional i64 (js.type = \"Long\") lastUpdatedTimeNanos\n 58: optional i64 (js.type = \"Long\") decisionVersion\n 60: optional i64 (js.type = \"Long\") decisionScheduleID\n 62: optional i64 (js.type = \"Long\") decisionStartedID\n 64: optional i32 decisionTimeout\n 66: optional i64 (js.type = \"Long\") decisionAttempt\n 68: optional i64 (js.type = \"Long\") decisionStartedTimestampNanos\n 69: optional i64 (js.type = \"Long\") decisionScheduledTimestampNanos\n 70: optional bool cancelRequested\n 71: optional i64 (js.type = \"Long\") decisionOriginalScheduledTimestampNanos\n 72: optional string createRequestID\n 74: optional string decisionRequestID\n 76: optional string cancelRequestID\n 78: optional string stickyTaskList\n 80: optional i64 (js.type = \"Long\") stickyScheduleToStartTimeout\n 82: optional i64 (js.type = \"Long\") retryAttempt\n 84: optional i32 retryInitialIntervalSeconds\n 86: optional i32 retryMaximumIntervalSeconds\n 88: optional i32 retryMaximumAttempts\n 90: optional i32 retryExpirationSeconds\n 92: optional double retryBackoffCoefficient\n 94: optional i64 (js.type = \"Long\") retryExpirationTimeNanos\n 96: optional list retryNonRetryableErrors\n 98: optional bool hasRetryPolicy\n 100: optional string cronSchedule\n 102: optional i32 eventStoreVersion\n 104: optional binary eventBranchToken\n 106: optional i64 (js.type = \"Long\") signalCount\n 108: optional i64 (js.type = \"Long\") historySize\n 110: optional string clientLibraryVersion\n 112: optional string clientFeatureVersion\n 114: optional string clientImpl\n 115: optional binary autoResetPoints\n 116: optional string autoResetPointsEncoding\n 118: optional map searchAttributes\n 120: optional map memo\n 122: optional binary versionHistories\n 124: optional string versionHistoriesEncoding\n 126: optional binary firstExecutionRunID\n 128: optional map partitionConfig\n 130: optional binary checksum\n 132: optional string checksumEncoding\n}\n\nstruct ActivityInfo {\n 10: optional i64 (js.type = \"Long\") version\n 12: optional i64 (js.type = \"Long\") scheduledEventBatchID\n 14: optional binary scheduledEvent\n 16: optional string scheduledEventEncoding\n 18: optional i64 (js.type = \"Long\") scheduledTimeNanos\n 20: optional i64 (js.type = \"Long\") startedID\n 22: optional binary startedEvent\n 24: optional string startedEventEncoding\n 26: optional i64 (js.type = \"Long\") startedTimeNanos\n 28: optional string activityID\n 30: optional string requestID\n 32: optional i32 scheduleToStartTimeoutSeconds\n 34: optional i32 scheduleToCloseTimeoutSeconds\n 36: optional i32 startToCloseTimeoutSeconds\n 38: optional i32 heartbeatTimeoutSeconds\n 40: optional bool cancelRequested\n 42: optional i64 (js.type = \"Long\") cancelRequestID\n 44: optional i32 timerTaskStatus\n 46: optional i32 attempt\n 48: optional string taskList\n 50: optional string startedIdentity\n 52: optional bool hasRetryPolicy\n 54: optional i32 retryInitialIntervalSeconds\n 56: optional i32 retryMaximumIntervalSeconds\n 58: optional i32 retryMaximumAttempts\n 60: optional i64 (js.type = \"Long\") retryExpirationTimeNanos\n 62: optional double retryBackoffCoefficient\n 64: optional list retryNonRetryableErrors\n 66: optional string retryLastFailureReason\n 68: optional string retryLastWorkerIdentity\n 70: optional binary retryLastFailureDetails\n}\n\nstruct ChildExecutionInfo {\n 10: optional i64 (js.type = \"Long\") version\n 12: optional i64 (js.type = \"Long\") initiatedEventBatchID\n 14: optional i64 (js.type = \"Long\") startedID\n 16: optional binary initiatedEvent\n 18: optional string initiatedEventEncoding\n 20: optional string startedWorkflowID\n 22: optional binary startedRunID\n 24: optional binary startedEvent\n 26: optional string startedEventEncoding\n 28: optional string createRequestID\n 29: optional string domainID\n 30: optional string domainName // deprecated\n 32: optional string workflowTypeName\n 35: optional i32 parentClosePolicy\n}\n\nstruct SignalInfo {\n 10: optional i64 (js.type = \"Long\") version\n 11: optional i64 (js.type = \"Long\") initiatedEventBatchID\n 12: optional string requestID\n 14: optional string name\n 16: optional binary input\n 18: optional binary control\n}\n\nstruct RequestCancelInfo {\n 10: optional i64 (js.type = \"Long\") version\n 11: optional i64 (js.type = \"Long\") initiatedEventBatchID\n 12: optional string cancelRequestID\n}\n\nstruct TimerInfo {\n 10: optional i64 (js.type = \"Long\") version\n 12: optional i64 (js.type = \"Long\") startedID\n 14: optional i64 (js.type = \"Long\") expiryTimeNanos\n // TaskID is a misleading variable, it actually serves\n // the purpose of indicating whether a timer task is\n // generated for this timer info\n 16: optional i64 (js.type = \"Long\") taskID\n}\n\nstruct TaskInfo {\n 10: optional string workflowID\n 12: optional binary runID\n 13: optional i64 (js.type = \"Long\") scheduleID\n 14: optional i64 (js.type = \"Long\") expiryTimeNanos\n 15: optional i64 (js.type = \"Long\") createdTimeNanos\n 17: optional map partitionConfig\n}\n\nstruct TaskListPartitionConfig {\n 10: optional i64 (js.type = \"Long\") version\n 12: optional i32 numReadPartitions\n 14: optional i32 numWritePartitions\n}\n\nstruct TaskListInfo {\n 10: optional i16 kind // {Normal, Sticky}\n 12: optional i64 (js.type = \"Long\") ackLevel\n 14: optional i64 (js.type = \"Long\") expiryTimeNanos\n 16: optional i64 (js.type = \"Long\") lastUpdatedNanos\n 18: optional TaskListPartitionConfig adaptivePartitionConfig\n}\n\nstruct TransferTaskInfo {\n 10: optional binary domainID\n 12: optional string workflowID\n 14: optional binary runID\n 16: optional i16 taskType\n 18: optional binary targetDomainID\n 20: optional string targetWorkflowID\n 22: optional binary targetRunID\n 24: optional string taskList\n 26: optional bool targetChildWorkflowOnly\n 28: optional i64 (js.type = \"Long\") scheduleID\n 30: optional i64 (js.type = \"Long\") version\n 32: optional i64 (js.type = \"Long\") visibilityTimestampNanos\n 34: optional set targetDomainIDs\n}\n\nstruct TimerTaskInfo {\n 10: optional binary domainID\n 12: optional string workflowID\n 14: optional binary runID\n 16: optional i16 taskType\n 18: optional i16 timeoutType\n 20: optional i64 (js.type = \"Long\") version\n 22: optional i64 (js.type = \"Long\") scheduleAttempt\n 24: optional i64 (js.type = \"Long\") eventID\n}\n\nstruct ReplicationTaskInfo {\n 10: optional binary domainID\n 12: optional string workflowID\n 14: optional binary runID\n 16: optional i16 taskType\n 18: optional i64 (js.type = \"Long\") version\n 20: optional i64 (js.type = \"Long\") firstEventID\n 22: optional i64 (js.type = \"Long\") nextEventID\n 24: optional i64 (js.type = \"Long\") scheduledID\n 26: optional i32 eventStoreVersion\n 28: optional i32 newRunEventStoreVersion\n 30: optional binary branch_token\n 34: optional binary newRunBranchToken\n 38: optional i64 (js.type = \"Long\") creationTime\n}\n\nenum AsyncRequestType {\n StartWorkflowExecutionAsyncRequest\n SignalWithStartWorkflowExecutionAsyncRequest\n}\n\nstruct AsyncRequestMessage {\n 10: optional string partitionKey\n 12: optional AsyncRequestType type\n 14: optional shared.Header header\n 16: optional string encoding\n 18: optional binary payload\n}\n" +const rawIDL = "// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nnamespace java com.uber.cadence.sqlblobs\n\ninclude \"shared.thrift\"\n\nstruct ShardInfo {\n 10: optional i32 stolenSinceRenew\n 12: optional i64 (js.type = \"Long\") updatedAtNanos\n 14: optional i64 (js.type = \"Long\") replicationAckLevel\n 16: optional i64 (js.type = \"Long\") transferAckLevel\n 18: optional i64 (js.type = \"Long\") timerAckLevelNanos\n 24: optional i64 (js.type = \"Long\") domainNotificationVersion\n 34: optional map clusterTransferAckLevel\n 36: optional map clusterTimerAckLevel\n 38: optional string owner\n 40: optional map clusterReplicationLevel\n 42: optional binary pendingFailoverMarkers\n 44: optional string pendingFailoverMarkersEncoding\n 46: optional map replicationDlqAckLevel\n 50: optional binary transferProcessingQueueStates\n 51: optional string transferProcessingQueueStatesEncoding\n 55: optional binary timerProcessingQueueStates\n 56: optional string timerProcessingQueueStatesEncoding\n 60: optional binary crossClusterProcessingQueueStates\n 61: optional string crossClusterProcessingQueueStatesEncoding\n}\n\nstruct DomainInfo {\n 10: optional string name\n 12: optional string description\n 14: optional string owner\n 16: optional i32 status\n 18: optional i16 retentionDays\n 20: optional bool emitMetric\n 22: optional string archivalBucket\n 24: optional i16 archivalStatus\n 26: optional i64 (js.type = \"Long\") configVersion\n 28: optional i64 (js.type = \"Long\") notificationVersion\n 30: optional i64 (js.type = \"Long\") failoverNotificationVersion\n 32: optional i64 (js.type = \"Long\") failoverVersion\n 34: optional string activeClusterName\n 36: optional list clusters\n 38: optional map data\n 39: optional binary badBinaries\n 40: optional string badBinariesEncoding\n 42: optional i16 historyArchivalStatus\n 44: optional string historyArchivalURI\n 46: optional i16 visibilityArchivalStatus\n 48: optional string visibilityArchivalURI\n 50: optional i64 (js.type = \"Long\") failoverEndTime\n 52: optional i64 (js.type = \"Long\") previousFailoverVersion\n 54: optional i64 (js.type = \"Long\") lastUpdatedTime\n 56: optional binary isolationGroupsConfiguration\n 58: optional string isolationGroupsConfigurationEncoding\n 60: optional binary asyncWorkflowConfiguration\n 62: optional string asyncWorkflowConfigurationEncoding\n}\n\nstruct HistoryTreeInfo {\n 10: optional i64 (js.type = \"Long\") createdTimeNanos // For fork operation to prevent race condition of leaking event data when forking branches fail. Also can be used for clean up leaked data\n 12: optional list ancestors\n 14: optional string info // For lookup back to workflow during debugging, also background cleanup when fork operation cannot finish self cleanup due to crash.\n}\n\nstruct WorkflowExecutionInfo {\n 10: optional binary parentDomainID\n 12: optional string parentWorkflowID\n 14: optional binary parentRunID\n 16: optional i64 (js.type = \"Long\") initiatedID\n 18: optional i64 (js.type = \"Long\") completionEventBatchID\n 20: optional binary completionEvent\n 22: optional string completionEventEncoding\n 24: optional string taskList\n 26: optional string workflowTypeName\n 28: optional i32 workflowTimeoutSeconds\n 30: optional i32 decisionTaskTimeoutSeconds\n 32: optional binary executionContext\n 34: optional i32 state\n 36: optional i32 closeStatus\n 38: optional i64 (js.type = \"Long\") startVersion\n 44: optional i64 (js.type = \"Long\") lastWriteEventID\n 48: optional i64 (js.type = \"Long\") lastEventTaskID\n 50: optional i64 (js.type = \"Long\") lastFirstEventID\n 52: optional i64 (js.type = \"Long\") lastProcessedEvent\n 54: optional i64 (js.type = \"Long\") startTimeNanos\n 56: optional i64 (js.type = \"Long\") lastUpdatedTimeNanos\n 58: optional i64 (js.type = \"Long\") decisionVersion\n 60: optional i64 (js.type = \"Long\") decisionScheduleID\n 62: optional i64 (js.type = \"Long\") decisionStartedID\n 64: optional i32 decisionTimeout\n 66: optional i64 (js.type = \"Long\") decisionAttempt\n 68: optional i64 (js.type = \"Long\") decisionStartedTimestampNanos\n 69: optional i64 (js.type = \"Long\") decisionScheduledTimestampNanos\n 70: optional bool cancelRequested\n 71: optional i64 (js.type = \"Long\") decisionOriginalScheduledTimestampNanos\n 72: optional string createRequestID\n 74: optional string decisionRequestID\n 76: optional string cancelRequestID\n 78: optional string stickyTaskList\n 80: optional i64 (js.type = \"Long\") stickyScheduleToStartTimeout\n 82: optional i64 (js.type = \"Long\") retryAttempt\n 84: optional i32 retryInitialIntervalSeconds\n 86: optional i32 retryMaximumIntervalSeconds\n 88: optional i32 retryMaximumAttempts\n 90: optional i32 retryExpirationSeconds\n 92: optional double retryBackoffCoefficient\n 94: optional i64 (js.type = \"Long\") retryExpirationTimeNanos\n 96: optional list retryNonRetryableErrors\n 98: optional bool hasRetryPolicy\n 100: optional string cronSchedule\n 102: optional i32 eventStoreVersion\n 104: optional binary eventBranchToken\n 106: optional i64 (js.type = \"Long\") signalCount\n 108: optional i64 (js.type = \"Long\") historySize\n 110: optional string clientLibraryVersion\n 112: optional string clientFeatureVersion\n 114: optional string clientImpl\n 115: optional binary autoResetPoints\n 116: optional string autoResetPointsEncoding\n 118: optional map searchAttributes\n 120: optional map memo\n 122: optional binary versionHistories\n 124: optional string versionHistoriesEncoding\n 126: optional binary firstExecutionRunID\n 128: optional map partitionConfig\n 130: optional binary checksum\n 132: optional string checksumEncoding\n}\n\nstruct ActivityInfo {\n 10: optional i64 (js.type = \"Long\") version\n 12: optional i64 (js.type = \"Long\") scheduledEventBatchID\n 14: optional binary scheduledEvent\n 16: optional string scheduledEventEncoding\n 18: optional i64 (js.type = \"Long\") scheduledTimeNanos\n 20: optional i64 (js.type = \"Long\") startedID\n 22: optional binary startedEvent\n 24: optional string startedEventEncoding\n 26: optional i64 (js.type = \"Long\") startedTimeNanos\n 28: optional string activityID\n 30: optional string requestID\n 32: optional i32 scheduleToStartTimeoutSeconds\n 34: optional i32 scheduleToCloseTimeoutSeconds\n 36: optional i32 startToCloseTimeoutSeconds\n 38: optional i32 heartbeatTimeoutSeconds\n 40: optional bool cancelRequested\n 42: optional i64 (js.type = \"Long\") cancelRequestID\n 44: optional i32 timerTaskStatus\n 46: optional i32 attempt\n 48: optional string taskList\n 50: optional string startedIdentity\n 52: optional bool hasRetryPolicy\n 54: optional i32 retryInitialIntervalSeconds\n 56: optional i32 retryMaximumIntervalSeconds\n 58: optional i32 retryMaximumAttempts\n 60: optional i64 (js.type = \"Long\") retryExpirationTimeNanos\n 62: optional double retryBackoffCoefficient\n 64: optional list retryNonRetryableErrors\n 66: optional string retryLastFailureReason\n 68: optional string retryLastWorkerIdentity\n 70: optional binary retryLastFailureDetails\n}\n\nstruct ChildExecutionInfo {\n 10: optional i64 (js.type = \"Long\") version\n 12: optional i64 (js.type = \"Long\") initiatedEventBatchID\n 14: optional i64 (js.type = \"Long\") startedID\n 16: optional binary initiatedEvent\n 18: optional string initiatedEventEncoding\n 20: optional string startedWorkflowID\n 22: optional binary startedRunID\n 24: optional binary startedEvent\n 26: optional string startedEventEncoding\n 28: optional string createRequestID\n 29: optional string domainID\n 30: optional string domainName // deprecated\n 32: optional string workflowTypeName\n 35: optional i32 parentClosePolicy\n}\n\nstruct SignalInfo {\n 10: optional i64 (js.type = \"Long\") version\n 11: optional i64 (js.type = \"Long\") initiatedEventBatchID\n 12: optional string requestID\n 14: optional string name\n 16: optional binary input\n 18: optional binary control\n}\n\nstruct RequestCancelInfo {\n 10: optional i64 (js.type = \"Long\") version\n 11: optional i64 (js.type = \"Long\") initiatedEventBatchID\n 12: optional string cancelRequestID\n}\n\nstruct TimerInfo {\n 10: optional i64 (js.type = \"Long\") version\n 12: optional i64 (js.type = \"Long\") startedID\n 14: optional i64 (js.type = \"Long\") expiryTimeNanos\n // TaskID is a misleading variable, it actually serves\n // the purpose of indicating whether a timer task is\n // generated for this timer info\n 16: optional i64 (js.type = \"Long\") taskID\n}\n\nstruct TaskInfo {\n 10: optional string workflowID\n 12: optional binary runID\n 13: optional i64 (js.type = \"Long\") scheduleID\n 14: optional i64 (js.type = \"Long\") expiryTimeNanos\n 15: optional i64 (js.type = \"Long\") createdTimeNanos\n 17: optional map partitionConfig\n}\n\nstruct TaskListPartition {\n 10: optional list isolationGroups\n}\n\nstruct TaskListPartitionConfig {\n 10: optional i64 (js.type = \"Long\") version\n 12: optional i32 numReadPartitions\n 14: optional i32 numWritePartitions\n 16: optional map readPartitions\n 18: optional map writePartitions\n}\n\nstruct TaskListInfo {\n 10: optional i16 kind // {Normal, Sticky}\n 12: optional i64 (js.type = \"Long\") ackLevel\n 14: optional i64 (js.type = \"Long\") expiryTimeNanos\n 16: optional i64 (js.type = \"Long\") lastUpdatedNanos\n 18: optional TaskListPartitionConfig adaptivePartitionConfig\n}\n\nstruct TransferTaskInfo {\n 10: optional binary domainID\n 12: optional string workflowID\n 14: optional binary runID\n 16: optional i16 taskType\n 18: optional binary targetDomainID\n 20: optional string targetWorkflowID\n 22: optional binary targetRunID\n 24: optional string taskList\n 26: optional bool targetChildWorkflowOnly\n 28: optional i64 (js.type = \"Long\") scheduleID\n 30: optional i64 (js.type = \"Long\") version\n 32: optional i64 (js.type = \"Long\") visibilityTimestampNanos\n 34: optional set targetDomainIDs\n}\n\nstruct TimerTaskInfo {\n 10: optional binary domainID\n 12: optional string workflowID\n 14: optional binary runID\n 16: optional i16 taskType\n 18: optional i16 timeoutType\n 20: optional i64 (js.type = \"Long\") version\n 22: optional i64 (js.type = \"Long\") scheduleAttempt\n 24: optional i64 (js.type = \"Long\") eventID\n}\n\nstruct ReplicationTaskInfo {\n 10: optional binary domainID\n 12: optional string workflowID\n 14: optional binary runID\n 16: optional i16 taskType\n 18: optional i64 (js.type = \"Long\") version\n 20: optional i64 (js.type = \"Long\") firstEventID\n 22: optional i64 (js.type = \"Long\") nextEventID\n 24: optional i64 (js.type = \"Long\") scheduledID\n 26: optional i32 eventStoreVersion\n 28: optional i32 newRunEventStoreVersion\n 30: optional binary branch_token\n 34: optional binary newRunBranchToken\n 38: optional i64 (js.type = \"Long\") creationTime\n}\n\nenum AsyncRequestType {\n StartWorkflowExecutionAsyncRequest\n SignalWithStartWorkflowExecutionAsyncRequest\n}\n\nstruct AsyncRequestMessage {\n 10: optional string partitionKey\n 12: optional AsyncRequestType type\n 14: optional shared.Header header\n 16: optional string encoding\n 18: optional binary payload\n}\n" diff --git a/.gen/proto/history/v1/service.pb.yarpc.go b/.gen/proto/history/v1/service.pb.yarpc.go index 19f5100987e..e1006c89004 100644 --- a/.gen/proto/history/v1/service.pb.yarpc.go +++ b/.gen/proto/history/v1/service.pb.yarpc.go @@ -3075,58 +3075,71 @@ var yarpcFileDescriptorClosurefee8ff76963a38ed = [][]byte{ }, // uber/cadence/api/v1/tasklist.proto []byte{ - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0xdd, 0x4e, 0x23, 0x37, - 0x14, 0xee, 0x10, 0xd8, 0x85, 0x43, 0x61, 0x67, 0xbd, 0x3f, 0x90, 0x6c, 0xb7, 0xa5, 0xb9, 0x58, - 0xa1, 0x55, 0x3b, 0x29, 0x54, 0xbd, 0xea, 0x45, 0x15, 0x12, 0xd4, 0x1d, 0x11, 0xb2, 0xd1, 0x64, - 0x96, 0x8a, 0x4a, 0x95, 0xeb, 0x8c, 0x4d, 0xb0, 0x66, 0xc6, 0x1e, 0xd9, 0x9e, 0x00, 0x0f, 0xd2, - 0x3e, 0x4c, 0x9f, 0xa8, 0x8f, 0x51, 0xd9, 0x99, 0x09, 0x29, 0xa4, 0xbd, 0xb3, 0xcf, 0x77, 0xbe, - 0xf3, 0xf3, 0x9d, 0x63, 0x43, 0xbb, 0x9c, 0x30, 0xd5, 0x49, 0x08, 0x65, 0x22, 0x61, 0x1d, 0x52, - 0xf0, 0xce, 0xec, 0xa8, 0x63, 0x88, 0x4e, 0x33, 0xae, 0x4d, 0x50, 0x28, 0x69, 0x24, 0x7a, 0x61, - 0x7d, 0x82, 0xca, 0x27, 0x20, 0x05, 0x0f, 0x66, 0x47, 0xad, 0x2f, 0xa7, 0x52, 0x4e, 0x33, 0xd6, - 0x71, 0x2e, 0x93, 0xf2, 0xaa, 0x43, 0x4b, 0x45, 0x0c, 0x97, 0x62, 0x4e, 0x6a, 0x7d, 0xf5, 0x10, - 0x37, 0x3c, 0x67, 0xda, 0x90, 0xbc, 0xa8, 0x1c, 0x1e, 0x05, 0xb8, 0x51, 0xa4, 0x28, 0x98, 0xd2, - 0x73, 0xbc, 0xfd, 0x09, 0x36, 0x63, 0xa2, 0xd3, 0x01, 0xd7, 0x06, 0x21, 0x58, 0x17, 0x24, 0x67, - 0xfb, 0xde, 0x81, 0x77, 0xb8, 0x15, 0xb9, 0x33, 0xfa, 0x01, 0xd6, 0x53, 0x2e, 0xe8, 0xfe, 0xda, - 0x81, 0x77, 0xb8, 0x7b, 0xfc, 0x75, 0xb0, 0xa2, 0xc8, 0xa0, 0x0e, 0x70, 0xc6, 0x05, 0x8d, 0x9c, - 0x7b, 0x9b, 0x80, 0x5f, 0x5b, 0xcf, 0x99, 0x21, 0x94, 0x18, 0x82, 0xce, 0xe1, 0x65, 0x4e, 0x6e, - 0xb1, 0x6d, 0x5b, 0xe3, 0x82, 0x29, 0xac, 0x59, 0x22, 0x05, 0x75, 0xe9, 0xb6, 0x8f, 0xbf, 0x08, - 0xe6, 0x95, 0x06, 0x75, 0xa5, 0x41, 0x5f, 0x96, 0x93, 0x8c, 0x5d, 0x90, 0xac, 0x64, 0xd1, 0xf3, - 0x9c, 0xdc, 0xda, 0x80, 0x7a, 0xc4, 0xd4, 0xd8, 0xd1, 0xda, 0x9f, 0xa0, 0x59, 0xa7, 0x18, 0x11, - 0x65, 0xb8, 0x55, 0x65, 0x91, 0xcb, 0x87, 0x46, 0xca, 0xee, 0xaa, 0x4e, 0xec, 0x11, 0xbd, 0x83, - 0x67, 0xf2, 0x46, 0x30, 0x85, 0xaf, 0xa5, 0x36, 0xd8, 0xf5, 0xb9, 0xe6, 0xd0, 0x1d, 0x67, 0xfe, - 0x20, 0xb5, 0x19, 0x92, 0x9c, 0xb5, 0xff, 0xf6, 0x60, 0xb7, 0x8e, 0x3b, 0x36, 0xc4, 0x94, 0x1a, - 0x7d, 0x03, 0x68, 0x42, 0x92, 0x34, 0x93, 0x53, 0x9c, 0xc8, 0x52, 0x18, 0x7c, 0xcd, 0x85, 0x71, - 0xb1, 0x1b, 0x91, 0x5f, 0x21, 0x3d, 0x0b, 0x7c, 0xe0, 0xc2, 0xa0, 0xb7, 0x00, 0x8a, 0x11, 0x8a, - 0x33, 0x36, 0x63, 0x99, 0xcb, 0xd1, 0x88, 0xb6, 0xac, 0x65, 0x60, 0x0d, 0xe8, 0x0d, 0x6c, 0x91, - 0x24, 0xad, 0xd0, 0x86, 0x43, 0x37, 0x49, 0x92, 0xce, 0xc1, 0x77, 0xf0, 0x4c, 0x11, 0xc3, 0x96, - 0xd5, 0x59, 0x3f, 0xf0, 0x0e, 0xbd, 0x68, 0xc7, 0x9a, 0x17, 0xbd, 0xa3, 0x3e, 0xec, 0x58, 0x19, - 0x31, 0xa7, 0x78, 0x92, 0xc9, 0x24, 0xdd, 0xdf, 0x70, 0x1a, 0x1e, 0xfc, 0xe7, 0x78, 0xc2, 0xfe, - 0x89, 0xf5, 0x8b, 0xb6, 0x2d, 0x2d, 0xa4, 0xee, 0xd2, 0xfe, 0x09, 0xb6, 0x97, 0x30, 0xd4, 0x84, - 0x4d, 0x6d, 0x88, 0x32, 0x98, 0xd3, 0xaa, 0xb9, 0xa7, 0xee, 0x1e, 0x52, 0xf4, 0x0a, 0x9e, 0x30, - 0x41, 0x2d, 0x30, 0xef, 0x67, 0x83, 0x09, 0x1a, 0xd2, 0xf6, 0x9f, 0x1e, 0xc0, 0x48, 0x66, 0x19, - 0x53, 0xa1, 0xb8, 0x92, 0xa8, 0x0f, 0x7e, 0x46, 0xb4, 0xc1, 0x24, 0x49, 0x98, 0xd6, 0xd8, 0xae, - 0x62, 0x35, 0xdc, 0xd6, 0xa3, 0xe1, 0xc6, 0xf5, 0x9e, 0x46, 0xbb, 0x96, 0xd3, 0x75, 0x14, 0x6b, - 0x44, 0x2d, 0xd8, 0xe4, 0x94, 0x09, 0xc3, 0xcd, 0x5d, 0x35, 0xa1, 0xc5, 0x7d, 0x95, 0x3e, 0x8d, - 0x15, 0xfa, 0xb4, 0xff, 0xf2, 0xa0, 0x39, 0x36, 0x3c, 0x49, 0xef, 0x4e, 0x6f, 0x59, 0x52, 0xda, - 0xd5, 0xe8, 0x1a, 0xa3, 0xf8, 0xa4, 0x34, 0x4c, 0xa3, 0x9f, 0xc1, 0xbf, 0x91, 0x2a, 0x65, 0xca, - 0xed, 0x22, 0xb6, 0x6f, 0xb0, 0xaa, 0xf3, 0xed, 0xff, 0xee, 0x77, 0xb4, 0x3b, 0xa7, 0x2d, 0x1e, - 0x4c, 0x0c, 0x4d, 0x9d, 0x5c, 0x33, 0x5a, 0x66, 0x0c, 0x1b, 0x89, 0xe7, 0xea, 0xd9, 0xb6, 0x65, - 0x69, 0x5c, 0xed, 0xdb, 0xc7, 0xcd, 0xc7, 0x6b, 0x5d, 0xbd, 0xe0, 0xe8, 0x75, 0xcd, 0x8d, 0xe5, - 0xd8, 0x32, 0xe3, 0x39, 0xb1, 0xfd, 0x87, 0x07, 0x7b, 0x8f, 0x36, 0xbb, 0x27, 0xc5, 0x15, 0x9f, - 0xa2, 0x7d, 0x78, 0x3a, 0x63, 0x4a, 0x73, 0x29, 0xea, 0x11, 0x55, 0x57, 0x14, 0xc0, 0x0b, 0x51, - 0xe6, 0xd8, 0xad, 0x5e, 0x51, 0xb3, 0xb4, 0xab, 0x62, 0x23, 0x7a, 0x2e, 0xca, 0x3c, 0x62, 0x84, - 0x2e, 0xc2, 0x69, 0xf4, 0x1d, 0xbc, 0xb4, 0xfe, 0x37, 0x8a, 0x5b, 0x3d, 0xef, 0x09, 0x0d, 0x47, - 0x40, 0xa2, 0xcc, 0x7f, 0xb1, 0xd0, 0x3d, 0xe3, 0xfd, 0xef, 0xf0, 0xf9, 0xf2, 0x4b, 0x47, 0x2d, - 0x78, 0x1d, 0x77, 0xc7, 0x67, 0x78, 0x10, 0x8e, 0x63, 0x7c, 0x16, 0x0e, 0xfb, 0x38, 0x1c, 0x5e, - 0x74, 0x07, 0x61, 0xdf, 0xff, 0x0c, 0x35, 0xe1, 0xd5, 0x03, 0x6c, 0xf8, 0x31, 0x3a, 0xef, 0x0e, - 0x7c, 0x6f, 0x05, 0x34, 0x8e, 0xc3, 0xde, 0xd9, 0xa5, 0xbf, 0xf6, 0x9e, 0xde, 0x67, 0x88, 0xef, - 0x0a, 0xf6, 0xef, 0x0c, 0xf1, 0xe5, 0xe8, 0x74, 0x29, 0xc3, 0x1b, 0xd8, 0x7b, 0x80, 0xf5, 0x4f, - 0x7b, 0xe1, 0x38, 0xfc, 0x38, 0xf4, 0xbd, 0x15, 0x60, 0xb7, 0x17, 0x87, 0x17, 0x61, 0x7c, 0xe9, - 0xaf, 0x9d, 0xfc, 0x06, 0x7b, 0x89, 0xcc, 0x57, 0x4d, 0xfa, 0x64, 0x67, 0xa1, 0xbb, 0x9d, 0xd6, - 0xc8, 0xfb, 0xf5, 0x68, 0xca, 0xcd, 0x75, 0x39, 0x09, 0x12, 0x99, 0x77, 0x96, 0xff, 0xf0, 0x6f, - 0x39, 0xcd, 0x3a, 0x53, 0x39, 0xff, 0x56, 0xab, 0x0f, 0xfd, 0x47, 0x52, 0xf0, 0xd9, 0xd1, 0xe4, - 0x89, 0xb3, 0x7d, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x81, 0xda, 0x9c, 0xf6, 0xf4, 0x05, - 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xeb, 0x4e, 0xe3, 0x46, + 0x14, 0x6e, 0x6e, 0x5c, 0x4e, 0x16, 0x30, 0x03, 0x2c, 0x49, 0xb6, 0xdb, 0xb2, 0xf9, 0x81, 0x28, + 0x6a, 0x1d, 0x41, 0x5b, 0xa9, 0x6a, 0xab, 0xed, 0x06, 0x82, 0x76, 0x2d, 0x2e, 0x8b, 0x1c, 0x2f, + 0x15, 0x95, 0x2a, 0x77, 0x62, 0x0f, 0x61, 0xea, 0xcb, 0x58, 0x9e, 0x71, 0x02, 0x4f, 0xd0, 0x37, + 0xe8, 0xc3, 0xf4, 0x1d, 0xfa, 0x4e, 0xd5, 0x8c, 0x9d, 0x90, 0x8b, 0x41, 0xdd, 0x1f, 0xfb, 0x2f, + 0x73, 0xce, 0x7c, 0xf3, 0x9d, 0xef, 0xdc, 0x62, 0x68, 0x26, 0x3d, 0x12, 0xb7, 0x1c, 0xec, 0x92, + 0xd0, 0x21, 0x2d, 0x1c, 0xd1, 0xd6, 0xe0, 0xa0, 0x25, 0x30, 0xf7, 0x7c, 0xca, 0x85, 0x1e, 0xc5, + 0x4c, 0x30, 0xb4, 0x21, 0xef, 0xe8, 0xd9, 0x1d, 0x1d, 0x47, 0x54, 0x1f, 0x1c, 0x34, 0xbe, 0xe8, + 0x33, 0xd6, 0xf7, 0x49, 0x4b, 0x5d, 0xe9, 0x25, 0x37, 0x2d, 0x37, 0x89, 0xb1, 0xa0, 0x2c, 0x4c, + 0x41, 0x8d, 0x2f, 0x67, 0xfd, 0x82, 0x06, 0x84, 0x0b, 0x1c, 0x44, 0xd9, 0x85, 0xb9, 0x07, 0x86, + 0x31, 0x8e, 0x22, 0x12, 0xf3, 0xd4, 0xdf, 0xfc, 0x00, 0x4b, 0x16, 0xe6, 0xde, 0x19, 0xe5, 0x02, + 0x21, 0x28, 0x87, 0x38, 0x20, 0xb5, 0xc2, 0x4e, 0x61, 0x6f, 0xd9, 0x54, 0xbf, 0xd1, 0xf7, 0x50, + 0xf6, 0x68, 0xe8, 0xd6, 0x8a, 0x3b, 0x85, 0xbd, 0xd5, 0xc3, 0x57, 0x7a, 0x4e, 0x90, 0xfa, 0xe8, + 0x81, 0x53, 0x1a, 0xba, 0xa6, 0xba, 0xde, 0xc4, 0xa0, 0x8d, 0xac, 0xe7, 0x44, 0x60, 0x17, 0x0b, + 0x8c, 0xce, 0x61, 0x33, 0xc0, 0x77, 0xb6, 0x94, 0xcd, 0xed, 0x88, 0xc4, 0x36, 0x27, 0x0e, 0x0b, + 0x5d, 0x45, 0x57, 0x3d, 0xfc, 0x5c, 0x4f, 0x23, 0xd5, 0x47, 0x91, 0xea, 0x1d, 0x96, 0xf4, 0x7c, + 0x72, 0x85, 0xfd, 0x84, 0x98, 0xeb, 0x01, 0xbe, 0x93, 0x0f, 0xf2, 0x4b, 0x12, 0x77, 0x15, 0xac, + 0xf9, 0x01, 0xea, 0x23, 0x8a, 0x4b, 0x1c, 0x0b, 0x2a, 0xb3, 0x32, 0xe6, 0xd2, 0xa0, 0xe4, 0x91, + 0xfb, 0x4c, 0x89, 0xfc, 0x89, 0x76, 0x61, 0x8d, 0x0d, 0x43, 0x12, 0xdb, 0xb7, 0x8c, 0x0b, 0x5b, + 0xe9, 0x2c, 0x2a, 0xef, 0x8a, 0x32, 0xbf, 0x63, 0x5c, 0x5c, 0xe0, 0x80, 0x34, 0x3d, 0xd8, 0x32, + 0x38, 0xf3, 0x55, 0x92, 0xdf, 0xc6, 0x2c, 0x89, 0xce, 0x89, 0x88, 0xa9, 0xc3, 0x51, 0x0b, 0x36, + 0x43, 0x32, 0xcc, 0x0f, 0xbf, 0x60, 0xae, 0x87, 0x64, 0x38, 0x1d, 0x20, 0x7a, 0x05, 0xcf, 0x22, + 0xe6, 0xfb, 0x24, 0xb6, 0x1d, 0x96, 0x84, 0x42, 0xd1, 0x95, 0xcc, 0x6a, 0x6a, 0x3b, 0x96, 0xa6, + 0xe6, 0x5f, 0x65, 0x58, 0x1d, 0x89, 0xe8, 0x0a, 0x2c, 0x12, 0x8e, 0xbe, 0x06, 0xd4, 0xc3, 0x8e, + 0xe7, 0xb3, 0x7e, 0x0a, 0xb3, 0x6f, 0x69, 0x28, 0x14, 0x49, 0xc9, 0xd4, 0x32, 0x8f, 0x02, 0xbf, + 0xa3, 0xa1, 0x40, 0x2f, 0x01, 0x62, 0x82, 0x5d, 0xdb, 0x27, 0x03, 0xe2, 0x67, 0x0c, 0xcb, 0xd2, + 0x72, 0x26, 0x0d, 0xe8, 0x05, 0x2c, 0x63, 0xc7, 0xcb, 0xbc, 0x25, 0xe5, 0x5d, 0xc2, 0x8e, 0x97, + 0x3a, 0x77, 0x61, 0x2d, 0xc6, 0x82, 0x4c, 0x6a, 0x29, 0x2b, 0x2d, 0x2b, 0xd2, 0xfc, 0xa0, 0xa3, + 0x03, 0x2b, 0x52, 0xb4, 0x4d, 0x5d, 0xbb, 0xe7, 0x33, 0xc7, 0xab, 0x55, 0x54, 0xc1, 0x76, 0x1e, + 0xed, 0x05, 0xa3, 0x73, 0x24, 0xef, 0x99, 0x55, 0x09, 0x33, 0x5c, 0x75, 0x40, 0x03, 0xd8, 0xa6, + 0xa3, 0xbc, 0xda, 0x7d, 0x99, 0x58, 0x3b, 0x48, 0x33, 0x5b, 0x5b, 0xd8, 0x29, 0xed, 0x55, 0x0f, + 0x5f, 0x3f, 0xd9, 0x5b, 0x69, 0x76, 0xf4, 0xdc, 0xd2, 0x9c, 0x84, 0x22, 0xbe, 0x37, 0xb7, 0xe8, + 0x47, 0x95, 0x6d, 0xf1, 0x91, 0xb2, 0x35, 0x04, 0x34, 0x1e, 0x67, 0xc9, 0x69, 0xac, 0x37, 0x50, + 0x19, 0xc8, 0x1e, 0x55, 0xd9, 0xaf, 0x1e, 0xee, 0xe7, 0xca, 0xc8, 0x7d, 0xd1, 0x4c, 0x81, 0x3f, + 0x16, 0x7f, 0x28, 0x34, 0x7f, 0x81, 0xea, 0x44, 0xea, 0x50, 0x1d, 0x96, 0xb8, 0xc0, 0xb1, 0xb0, + 0xa9, 0x9b, 0xd5, 0x7e, 0x51, 0x9d, 0x0d, 0x17, 0x6d, 0xc1, 0x02, 0x09, 0x5d, 0xe9, 0x48, 0xcb, + 0x5d, 0x21, 0xa1, 0x6b, 0xb8, 0xcd, 0xbf, 0x0b, 0x00, 0x97, 0xaa, 0xb5, 0x8c, 0xf0, 0x86, 0xa1, + 0x0e, 0x68, 0x3e, 0xe6, 0xc2, 0xc6, 0x8e, 0x43, 0x38, 0xb7, 0xe5, 0x5a, 0xc8, 0x06, 0xad, 0x31, + 0x37, 0x68, 0xd6, 0x68, 0x67, 0x98, 0xab, 0x12, 0xd3, 0x56, 0x10, 0x69, 0x44, 0x0d, 0x58, 0xa2, + 0x2e, 0x09, 0x05, 0x15, 0xf7, 0xd9, 0xb4, 0x8c, 0xcf, 0x79, 0xed, 0x53, 0xca, 0x69, 0x9f, 0xe6, + 0x3f, 0x05, 0xa8, 0x77, 0x05, 0x75, 0xbc, 0xfb, 0x93, 0x3b, 0xe2, 0x24, 0x32, 0x09, 0x6d, 0x21, + 0x62, 0xda, 0x4b, 0x04, 0xe1, 0xe8, 0x2d, 0x68, 0x43, 0x16, 0x7b, 0x24, 0x56, 0x15, 0xb2, 0xe5, + 0x3e, 0xcc, 0xe2, 0x7c, 0xf9, 0x64, 0x3f, 0x98, 0xab, 0x29, 0x6c, 0xbc, 0xbc, 0x2c, 0xa8, 0x73, + 0xe7, 0x96, 0xb8, 0x89, 0x4f, 0x6c, 0xc1, 0xec, 0x34, 0x7b, 0x52, 0x36, 0x4b, 0x44, 0x56, 0x9a, + 0xfa, 0xfc, 0x8a, 0xc9, 0xb6, 0xa9, 0xf9, 0x7c, 0x84, 0xb5, 0x58, 0x57, 0x22, 0xad, 0x14, 0xd8, + 0x7c, 0x0d, 0xeb, 0x73, 0x4b, 0x06, 0x7d, 0x05, 0xda, 0x4c, 0x2b, 0xf3, 0x5a, 0x61, 0xa7, 0xb4, + 0xb7, 0x6c, 0xae, 0x4d, 0xf7, 0x20, 0x6f, 0xfe, 0x5b, 0x86, 0xed, 0xb9, 0x07, 0x8e, 0x59, 0x78, + 0x43, 0xfb, 0xa8, 0x06, 0x8b, 0x03, 0x12, 0x73, 0xca, 0xc2, 0x51, 0x89, 0xb3, 0x23, 0x3a, 0x84, + 0x8d, 0x30, 0x09, 0x6c, 0x35, 0xd9, 0xd1, 0x08, 0xc5, 0x95, 0x8a, 0xca, 0x51, 0xb1, 0x26, 0xdb, + 0x36, 0x09, 0x4c, 0x82, 0xdd, 0xf1, 0x93, 0x1c, 0x7d, 0x07, 0x9b, 0x12, 0x33, 0x8c, 0xa9, 0xac, + 0xc9, 0x03, 0xa8, 0x34, 0x06, 0xa1, 0x30, 0x09, 0x7e, 0x95, 0xee, 0x09, 0x14, 0x85, 0xb5, 0x59, + 0x96, 0xb2, 0x9a, 0xc6, 0x37, 0x4f, 0x66, 0x7f, 0x46, 0x8a, 0x3e, 0x1d, 0x4b, 0x3a, 0x8f, 0xab, + 0xf1, 0x74, 0x80, 0x3e, 0x68, 0x73, 0xc1, 0x55, 0x14, 0x57, 0xfb, 0xa3, 0xb8, 0x66, 0x24, 0xa4, + 0x64, 0x6b, 0xc3, 0x69, 0x6b, 0x83, 0xc2, 0x46, 0x4e, 0x50, 0x93, 0xe3, 0x5b, 0x49, 0xc7, 0xf7, + 0xe7, 0xe9, 0xf1, 0xdd, 0xfd, 0x7f, 0xb1, 0x4c, 0x8c, 0x6e, 0xe3, 0x4f, 0xd8, 0xcc, 0x8b, 0xe9, + 0x53, 0x70, 0xed, 0xff, 0x01, 0xcf, 0x26, 0xff, 0x6d, 0x51, 0x03, 0x9e, 0x5b, 0xed, 0xee, 0xa9, + 0x7d, 0x66, 0x74, 0x2d, 0xfb, 0xd4, 0xb8, 0xe8, 0xd8, 0xc6, 0xc5, 0x55, 0xfb, 0xcc, 0xe8, 0x68, + 0x9f, 0xa1, 0x3a, 0x6c, 0xcd, 0xf8, 0x2e, 0xde, 0x9b, 0xe7, 0xed, 0x33, 0xad, 0x90, 0xe3, 0xea, + 0x5a, 0xc6, 0xf1, 0xe9, 0xb5, 0x56, 0xdc, 0x77, 0x1f, 0x18, 0xac, 0xfb, 0x88, 0x4c, 0x33, 0x58, + 0xd7, 0x97, 0x27, 0x13, 0x0c, 0x2f, 0x60, 0x7b, 0xc6, 0xd7, 0x39, 0x39, 0x36, 0xba, 0xc6, 0xfb, + 0x0b, 0xad, 0x90, 0xe3, 0x6c, 0x1f, 0x5b, 0xc6, 0x95, 0x61, 0x5d, 0x6b, 0xc5, 0xa3, 0xdf, 0x61, + 0xdb, 0x61, 0x41, 0x9e, 0xfe, 0xa3, 0x95, 0x71, 0x02, 0xe4, 0x94, 0x5e, 0x16, 0x7e, 0x3b, 0xe8, + 0x53, 0x71, 0x9b, 0xf4, 0x74, 0x87, 0x05, 0xad, 0xc9, 0xef, 0xa8, 0x6f, 0xa8, 0xeb, 0xb7, 0xfa, + 0x2c, 0xfd, 0xb4, 0xc9, 0x3e, 0xaa, 0x7e, 0xc2, 0x11, 0x1d, 0x1c, 0xf4, 0x16, 0x94, 0xed, 0xdb, + 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xe6, 0xf6, 0xce, 0x1e, 0x78, 0x09, 0x00, 0x00, }, // uber/cadence/api/v1/workflow.proto []byte{ diff --git a/.gen/proto/matching/v1/service.pb.yarpc.go b/.gen/proto/matching/v1/service.pb.yarpc.go index 0e69e345b5c..6809df3ffde 100644 --- a/.gen/proto/matching/v1/service.pb.yarpc.go +++ b/.gen/proto/matching/v1/service.pb.yarpc.go @@ -1270,58 +1270,71 @@ var yarpcFileDescriptorClosure826e827d3aabf7fc = [][]byte{ }, // uber/cadence/api/v1/tasklist.proto []byte{ - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0xdd, 0x4e, 0x23, 0x37, - 0x14, 0xee, 0x10, 0xd8, 0x85, 0x43, 0x61, 0x67, 0xbd, 0x3f, 0x90, 0x6c, 0xb7, 0xa5, 0xb9, 0x58, - 0xa1, 0x55, 0x3b, 0x29, 0x54, 0xbd, 0xea, 0x45, 0x15, 0x12, 0xd4, 0x1d, 0x11, 0xb2, 0xd1, 0x64, - 0x96, 0x8a, 0x4a, 0x95, 0xeb, 0x8c, 0x4d, 0xb0, 0x66, 0xc6, 0x1e, 0xd9, 0x9e, 0x00, 0x0f, 0xd2, - 0x3e, 0x4c, 0x9f, 0xa8, 0x8f, 0x51, 0xd9, 0x99, 0x09, 0x29, 0xa4, 0xbd, 0xb3, 0xcf, 0x77, 0xbe, - 0xf3, 0xf3, 0x9d, 0x63, 0x43, 0xbb, 0x9c, 0x30, 0xd5, 0x49, 0x08, 0x65, 0x22, 0x61, 0x1d, 0x52, - 0xf0, 0xce, 0xec, 0xa8, 0x63, 0x88, 0x4e, 0x33, 0xae, 0x4d, 0x50, 0x28, 0x69, 0x24, 0x7a, 0x61, - 0x7d, 0x82, 0xca, 0x27, 0x20, 0x05, 0x0f, 0x66, 0x47, 0xad, 0x2f, 0xa7, 0x52, 0x4e, 0x33, 0xd6, - 0x71, 0x2e, 0x93, 0xf2, 0xaa, 0x43, 0x4b, 0x45, 0x0c, 0x97, 0x62, 0x4e, 0x6a, 0x7d, 0xf5, 0x10, - 0x37, 0x3c, 0x67, 0xda, 0x90, 0xbc, 0xa8, 0x1c, 0x1e, 0x05, 0xb8, 0x51, 0xa4, 0x28, 0x98, 0xd2, - 0x73, 0xbc, 0xfd, 0x09, 0x36, 0x63, 0xa2, 0xd3, 0x01, 0xd7, 0x06, 0x21, 0x58, 0x17, 0x24, 0x67, - 0xfb, 0xde, 0x81, 0x77, 0xb8, 0x15, 0xb9, 0x33, 0xfa, 0x01, 0xd6, 0x53, 0x2e, 0xe8, 0xfe, 0xda, - 0x81, 0x77, 0xb8, 0x7b, 0xfc, 0x75, 0xb0, 0xa2, 0xc8, 0xa0, 0x0e, 0x70, 0xc6, 0x05, 0x8d, 0x9c, - 0x7b, 0x9b, 0x80, 0x5f, 0x5b, 0xcf, 0x99, 0x21, 0x94, 0x18, 0x82, 0xce, 0xe1, 0x65, 0x4e, 0x6e, - 0xb1, 0x6d, 0x5b, 0xe3, 0x82, 0x29, 0xac, 0x59, 0x22, 0x05, 0x75, 0xe9, 0xb6, 0x8f, 0xbf, 0x08, - 0xe6, 0x95, 0x06, 0x75, 0xa5, 0x41, 0x5f, 0x96, 0x93, 0x8c, 0x5d, 0x90, 0xac, 0x64, 0xd1, 0xf3, - 0x9c, 0xdc, 0xda, 0x80, 0x7a, 0xc4, 0xd4, 0xd8, 0xd1, 0xda, 0x9f, 0xa0, 0x59, 0xa7, 0x18, 0x11, - 0x65, 0xb8, 0x55, 0x65, 0x91, 0xcb, 0x87, 0x46, 0xca, 0xee, 0xaa, 0x4e, 0xec, 0x11, 0xbd, 0x83, - 0x67, 0xf2, 0x46, 0x30, 0x85, 0xaf, 0xa5, 0x36, 0xd8, 0xf5, 0xb9, 0xe6, 0xd0, 0x1d, 0x67, 0xfe, - 0x20, 0xb5, 0x19, 0x92, 0x9c, 0xb5, 0xff, 0xf6, 0x60, 0xb7, 0x8e, 0x3b, 0x36, 0xc4, 0x94, 0x1a, - 0x7d, 0x03, 0x68, 0x42, 0x92, 0x34, 0x93, 0x53, 0x9c, 0xc8, 0x52, 0x18, 0x7c, 0xcd, 0x85, 0x71, - 0xb1, 0x1b, 0x91, 0x5f, 0x21, 0x3d, 0x0b, 0x7c, 0xe0, 0xc2, 0xa0, 0xb7, 0x00, 0x8a, 0x11, 0x8a, - 0x33, 0x36, 0x63, 0x99, 0xcb, 0xd1, 0x88, 0xb6, 0xac, 0x65, 0x60, 0x0d, 0xe8, 0x0d, 0x6c, 0x91, - 0x24, 0xad, 0xd0, 0x86, 0x43, 0x37, 0x49, 0x92, 0xce, 0xc1, 0x77, 0xf0, 0x4c, 0x11, 0xc3, 0x96, - 0xd5, 0x59, 0x3f, 0xf0, 0x0e, 0xbd, 0x68, 0xc7, 0x9a, 0x17, 0xbd, 0xa3, 0x3e, 0xec, 0x58, 0x19, - 0x31, 0xa7, 0x78, 0x92, 0xc9, 0x24, 0xdd, 0xdf, 0x70, 0x1a, 0x1e, 0xfc, 0xe7, 0x78, 0xc2, 0xfe, - 0x89, 0xf5, 0x8b, 0xb6, 0x2d, 0x2d, 0xa4, 0xee, 0xd2, 0xfe, 0x09, 0xb6, 0x97, 0x30, 0xd4, 0x84, - 0x4d, 0x6d, 0x88, 0x32, 0x98, 0xd3, 0xaa, 0xb9, 0xa7, 0xee, 0x1e, 0x52, 0xf4, 0x0a, 0x9e, 0x30, - 0x41, 0x2d, 0x30, 0xef, 0x67, 0x83, 0x09, 0x1a, 0xd2, 0xf6, 0x9f, 0x1e, 0xc0, 0x48, 0x66, 0x19, - 0x53, 0xa1, 0xb8, 0x92, 0xa8, 0x0f, 0x7e, 0x46, 0xb4, 0xc1, 0x24, 0x49, 0x98, 0xd6, 0xd8, 0xae, - 0x62, 0x35, 0xdc, 0xd6, 0xa3, 0xe1, 0xc6, 0xf5, 0x9e, 0x46, 0xbb, 0x96, 0xd3, 0x75, 0x14, 0x6b, - 0x44, 0x2d, 0xd8, 0xe4, 0x94, 0x09, 0xc3, 0xcd, 0x5d, 0x35, 0xa1, 0xc5, 0x7d, 0x95, 0x3e, 0x8d, - 0x15, 0xfa, 0xb4, 0xff, 0xf2, 0xa0, 0x39, 0x36, 0x3c, 0x49, 0xef, 0x4e, 0x6f, 0x59, 0x52, 0xda, - 0xd5, 0xe8, 0x1a, 0xa3, 0xf8, 0xa4, 0x34, 0x4c, 0xa3, 0x9f, 0xc1, 0xbf, 0x91, 0x2a, 0x65, 0xca, - 0xed, 0x22, 0xb6, 0x6f, 0xb0, 0xaa, 0xf3, 0xed, 0xff, 0xee, 0x77, 0xb4, 0x3b, 0xa7, 0x2d, 0x1e, - 0x4c, 0x0c, 0x4d, 0x9d, 0x5c, 0x33, 0x5a, 0x66, 0x0c, 0x1b, 0x89, 0xe7, 0xea, 0xd9, 0xb6, 0x65, - 0x69, 0x5c, 0xed, 0xdb, 0xc7, 0xcd, 0xc7, 0x6b, 0x5d, 0xbd, 0xe0, 0xe8, 0x75, 0xcd, 0x8d, 0xe5, - 0xd8, 0x32, 0xe3, 0x39, 0xb1, 0xfd, 0x87, 0x07, 0x7b, 0x8f, 0x36, 0xbb, 0x27, 0xc5, 0x15, 0x9f, - 0xa2, 0x7d, 0x78, 0x3a, 0x63, 0x4a, 0x73, 0x29, 0xea, 0x11, 0x55, 0x57, 0x14, 0xc0, 0x0b, 0x51, - 0xe6, 0xd8, 0xad, 0x5e, 0x51, 0xb3, 0xb4, 0xab, 0x62, 0x23, 0x7a, 0x2e, 0xca, 0x3c, 0x62, 0x84, - 0x2e, 0xc2, 0x69, 0xf4, 0x1d, 0xbc, 0xb4, 0xfe, 0x37, 0x8a, 0x5b, 0x3d, 0xef, 0x09, 0x0d, 0x47, - 0x40, 0xa2, 0xcc, 0x7f, 0xb1, 0xd0, 0x3d, 0xe3, 0xfd, 0xef, 0xf0, 0xf9, 0xf2, 0x4b, 0x47, 0x2d, - 0x78, 0x1d, 0x77, 0xc7, 0x67, 0x78, 0x10, 0x8e, 0x63, 0x7c, 0x16, 0x0e, 0xfb, 0x38, 0x1c, 0x5e, - 0x74, 0x07, 0x61, 0xdf, 0xff, 0x0c, 0x35, 0xe1, 0xd5, 0x03, 0x6c, 0xf8, 0x31, 0x3a, 0xef, 0x0e, - 0x7c, 0x6f, 0x05, 0x34, 0x8e, 0xc3, 0xde, 0xd9, 0xa5, 0xbf, 0xf6, 0x9e, 0xde, 0x67, 0x88, 0xef, - 0x0a, 0xf6, 0xef, 0x0c, 0xf1, 0xe5, 0xe8, 0x74, 0x29, 0xc3, 0x1b, 0xd8, 0x7b, 0x80, 0xf5, 0x4f, - 0x7b, 0xe1, 0x38, 0xfc, 0x38, 0xf4, 0xbd, 0x15, 0x60, 0xb7, 0x17, 0x87, 0x17, 0x61, 0x7c, 0xe9, - 0xaf, 0x9d, 0xfc, 0x06, 0x7b, 0x89, 0xcc, 0x57, 0x4d, 0xfa, 0x64, 0x67, 0xa1, 0xbb, 0x9d, 0xd6, - 0xc8, 0xfb, 0xf5, 0x68, 0xca, 0xcd, 0x75, 0x39, 0x09, 0x12, 0x99, 0x77, 0x96, 0xff, 0xf0, 0x6f, - 0x39, 0xcd, 0x3a, 0x53, 0x39, 0xff, 0x56, 0xab, 0x0f, 0xfd, 0x47, 0x52, 0xf0, 0xd9, 0xd1, 0xe4, - 0x89, 0xb3, 0x7d, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x81, 0xda, 0x9c, 0xf6, 0xf4, 0x05, - 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xeb, 0x4e, 0xe3, 0x46, + 0x14, 0x6e, 0x6e, 0x5c, 0x4e, 0x16, 0x30, 0x03, 0x2c, 0x49, 0xb6, 0xdb, 0xb2, 0xf9, 0x81, 0x28, + 0x6a, 0x1d, 0x41, 0x5b, 0xa9, 0x6a, 0xab, 0xed, 0x06, 0x82, 0x76, 0x2d, 0x2e, 0x8b, 0x1c, 0x2f, + 0x15, 0x95, 0x2a, 0x77, 0x62, 0x0f, 0x61, 0xea, 0xcb, 0x58, 0x9e, 0x71, 0x02, 0x4f, 0xd0, 0x37, + 0xe8, 0xc3, 0xf4, 0x1d, 0xfa, 0x4e, 0xd5, 0x8c, 0x9d, 0x90, 0x8b, 0x41, 0xdd, 0x1f, 0xfb, 0x2f, + 0x73, 0xce, 0x7c, 0xf3, 0x9d, 0xef, 0xdc, 0x62, 0x68, 0x26, 0x3d, 0x12, 0xb7, 0x1c, 0xec, 0x92, + 0xd0, 0x21, 0x2d, 0x1c, 0xd1, 0xd6, 0xe0, 0xa0, 0x25, 0x30, 0xf7, 0x7c, 0xca, 0x85, 0x1e, 0xc5, + 0x4c, 0x30, 0xb4, 0x21, 0xef, 0xe8, 0xd9, 0x1d, 0x1d, 0x47, 0x54, 0x1f, 0x1c, 0x34, 0xbe, 0xe8, + 0x33, 0xd6, 0xf7, 0x49, 0x4b, 0x5d, 0xe9, 0x25, 0x37, 0x2d, 0x37, 0x89, 0xb1, 0xa0, 0x2c, 0x4c, + 0x41, 0x8d, 0x2f, 0x67, 0xfd, 0x82, 0x06, 0x84, 0x0b, 0x1c, 0x44, 0xd9, 0x85, 0xb9, 0x07, 0x86, + 0x31, 0x8e, 0x22, 0x12, 0xf3, 0xd4, 0xdf, 0xfc, 0x00, 0x4b, 0x16, 0xe6, 0xde, 0x19, 0xe5, 0x02, + 0x21, 0x28, 0x87, 0x38, 0x20, 0xb5, 0xc2, 0x4e, 0x61, 0x6f, 0xd9, 0x54, 0xbf, 0xd1, 0xf7, 0x50, + 0xf6, 0x68, 0xe8, 0xd6, 0x8a, 0x3b, 0x85, 0xbd, 0xd5, 0xc3, 0x57, 0x7a, 0x4e, 0x90, 0xfa, 0xe8, + 0x81, 0x53, 0x1a, 0xba, 0xa6, 0xba, 0xde, 0xc4, 0xa0, 0x8d, 0xac, 0xe7, 0x44, 0x60, 0x17, 0x0b, + 0x8c, 0xce, 0x61, 0x33, 0xc0, 0x77, 0xb6, 0x94, 0xcd, 0xed, 0x88, 0xc4, 0x36, 0x27, 0x0e, 0x0b, + 0x5d, 0x45, 0x57, 0x3d, 0xfc, 0x5c, 0x4f, 0x23, 0xd5, 0x47, 0x91, 0xea, 0x1d, 0x96, 0xf4, 0x7c, + 0x72, 0x85, 0xfd, 0x84, 0x98, 0xeb, 0x01, 0xbe, 0x93, 0x0f, 0xf2, 0x4b, 0x12, 0x77, 0x15, 0xac, + 0xf9, 0x01, 0xea, 0x23, 0x8a, 0x4b, 0x1c, 0x0b, 0x2a, 0xb3, 0x32, 0xe6, 0xd2, 0xa0, 0xe4, 0x91, + 0xfb, 0x4c, 0x89, 0xfc, 0x89, 0x76, 0x61, 0x8d, 0x0d, 0x43, 0x12, 0xdb, 0xb7, 0x8c, 0x0b, 0x5b, + 0xe9, 0x2c, 0x2a, 0xef, 0x8a, 0x32, 0xbf, 0x63, 0x5c, 0x5c, 0xe0, 0x80, 0x34, 0x3d, 0xd8, 0x32, + 0x38, 0xf3, 0x55, 0x92, 0xdf, 0xc6, 0x2c, 0x89, 0xce, 0x89, 0x88, 0xa9, 0xc3, 0x51, 0x0b, 0x36, + 0x43, 0x32, 0xcc, 0x0f, 0xbf, 0x60, 0xae, 0x87, 0x64, 0x38, 0x1d, 0x20, 0x7a, 0x05, 0xcf, 0x22, + 0xe6, 0xfb, 0x24, 0xb6, 0x1d, 0x96, 0x84, 0x42, 0xd1, 0x95, 0xcc, 0x6a, 0x6a, 0x3b, 0x96, 0xa6, + 0xe6, 0x5f, 0x65, 0x58, 0x1d, 0x89, 0xe8, 0x0a, 0x2c, 0x12, 0x8e, 0xbe, 0x06, 0xd4, 0xc3, 0x8e, + 0xe7, 0xb3, 0x7e, 0x0a, 0xb3, 0x6f, 0x69, 0x28, 0x14, 0x49, 0xc9, 0xd4, 0x32, 0x8f, 0x02, 0xbf, + 0xa3, 0xa1, 0x40, 0x2f, 0x01, 0x62, 0x82, 0x5d, 0xdb, 0x27, 0x03, 0xe2, 0x67, 0x0c, 0xcb, 0xd2, + 0x72, 0x26, 0x0d, 0xe8, 0x05, 0x2c, 0x63, 0xc7, 0xcb, 0xbc, 0x25, 0xe5, 0x5d, 0xc2, 0x8e, 0x97, + 0x3a, 0x77, 0x61, 0x2d, 0xc6, 0x82, 0x4c, 0x6a, 0x29, 0x2b, 0x2d, 0x2b, 0xd2, 0xfc, 0xa0, 0xa3, + 0x03, 0x2b, 0x52, 0xb4, 0x4d, 0x5d, 0xbb, 0xe7, 0x33, 0xc7, 0xab, 0x55, 0x54, 0xc1, 0x76, 0x1e, + 0xed, 0x05, 0xa3, 0x73, 0x24, 0xef, 0x99, 0x55, 0x09, 0x33, 0x5c, 0x75, 0x40, 0x03, 0xd8, 0xa6, + 0xa3, 0xbc, 0xda, 0x7d, 0x99, 0x58, 0x3b, 0x48, 0x33, 0x5b, 0x5b, 0xd8, 0x29, 0xed, 0x55, 0x0f, + 0x5f, 0x3f, 0xd9, 0x5b, 0x69, 0x76, 0xf4, 0xdc, 0xd2, 0x9c, 0x84, 0x22, 0xbe, 0x37, 0xb7, 0xe8, + 0x47, 0x95, 0x6d, 0xf1, 0x91, 0xb2, 0x35, 0x04, 0x34, 0x1e, 0x67, 0xc9, 0x69, 0xac, 0x37, 0x50, + 0x19, 0xc8, 0x1e, 0x55, 0xd9, 0xaf, 0x1e, 0xee, 0xe7, 0xca, 0xc8, 0x7d, 0xd1, 0x4c, 0x81, 0x3f, + 0x16, 0x7f, 0x28, 0x34, 0x7f, 0x81, 0xea, 0x44, 0xea, 0x50, 0x1d, 0x96, 0xb8, 0xc0, 0xb1, 0xb0, + 0xa9, 0x9b, 0xd5, 0x7e, 0x51, 0x9d, 0x0d, 0x17, 0x6d, 0xc1, 0x02, 0x09, 0x5d, 0xe9, 0x48, 0xcb, + 0x5d, 0x21, 0xa1, 0x6b, 0xb8, 0xcd, 0xbf, 0x0b, 0x00, 0x97, 0xaa, 0xb5, 0x8c, 0xf0, 0x86, 0xa1, + 0x0e, 0x68, 0x3e, 0xe6, 0xc2, 0xc6, 0x8e, 0x43, 0x38, 0xb7, 0xe5, 0x5a, 0xc8, 0x06, 0xad, 0x31, + 0x37, 0x68, 0xd6, 0x68, 0x67, 0x98, 0xab, 0x12, 0xd3, 0x56, 0x10, 0x69, 0x44, 0x0d, 0x58, 0xa2, + 0x2e, 0x09, 0x05, 0x15, 0xf7, 0xd9, 0xb4, 0x8c, 0xcf, 0x79, 0xed, 0x53, 0xca, 0x69, 0x9f, 0xe6, + 0x3f, 0x05, 0xa8, 0x77, 0x05, 0x75, 0xbc, 0xfb, 0x93, 0x3b, 0xe2, 0x24, 0x32, 0x09, 0x6d, 0x21, + 0x62, 0xda, 0x4b, 0x04, 0xe1, 0xe8, 0x2d, 0x68, 0x43, 0x16, 0x7b, 0x24, 0x56, 0x15, 0xb2, 0xe5, + 0x3e, 0xcc, 0xe2, 0x7c, 0xf9, 0x64, 0x3f, 0x98, 0xab, 0x29, 0x6c, 0xbc, 0xbc, 0x2c, 0xa8, 0x73, + 0xe7, 0x96, 0xb8, 0x89, 0x4f, 0x6c, 0xc1, 0xec, 0x34, 0x7b, 0x52, 0x36, 0x4b, 0x44, 0x56, 0x9a, + 0xfa, 0xfc, 0x8a, 0xc9, 0xb6, 0xa9, 0xf9, 0x7c, 0x84, 0xb5, 0x58, 0x57, 0x22, 0xad, 0x14, 0xd8, + 0x7c, 0x0d, 0xeb, 0x73, 0x4b, 0x06, 0x7d, 0x05, 0xda, 0x4c, 0x2b, 0xf3, 0x5a, 0x61, 0xa7, 0xb4, + 0xb7, 0x6c, 0xae, 0x4d, 0xf7, 0x20, 0x6f, 0xfe, 0x5b, 0x86, 0xed, 0xb9, 0x07, 0x8e, 0x59, 0x78, + 0x43, 0xfb, 0xa8, 0x06, 0x8b, 0x03, 0x12, 0x73, 0xca, 0xc2, 0x51, 0x89, 0xb3, 0x23, 0x3a, 0x84, + 0x8d, 0x30, 0x09, 0x6c, 0x35, 0xd9, 0xd1, 0x08, 0xc5, 0x95, 0x8a, 0xca, 0x51, 0xb1, 0x26, 0xdb, + 0x36, 0x09, 0x4c, 0x82, 0xdd, 0xf1, 0x93, 0x1c, 0x7d, 0x07, 0x9b, 0x12, 0x33, 0x8c, 0xa9, 0xac, + 0xc9, 0x03, 0xa8, 0x34, 0x06, 0xa1, 0x30, 0x09, 0x7e, 0x95, 0xee, 0x09, 0x14, 0x85, 0xb5, 0x59, + 0x96, 0xb2, 0x9a, 0xc6, 0x37, 0x4f, 0x66, 0x7f, 0x46, 0x8a, 0x3e, 0x1d, 0x4b, 0x3a, 0x8f, 0xab, + 0xf1, 0x74, 0x80, 0x3e, 0x68, 0x73, 0xc1, 0x55, 0x14, 0x57, 0xfb, 0xa3, 0xb8, 0x66, 0x24, 0xa4, + 0x64, 0x6b, 0xc3, 0x69, 0x6b, 0x83, 0xc2, 0x46, 0x4e, 0x50, 0x93, 0xe3, 0x5b, 0x49, 0xc7, 0xf7, + 0xe7, 0xe9, 0xf1, 0xdd, 0xfd, 0x7f, 0xb1, 0x4c, 0x8c, 0x6e, 0xe3, 0x4f, 0xd8, 0xcc, 0x8b, 0xe9, + 0x53, 0x70, 0xed, 0xff, 0x01, 0xcf, 0x26, 0xff, 0x6d, 0x51, 0x03, 0x9e, 0x5b, 0xed, 0xee, 0xa9, + 0x7d, 0x66, 0x74, 0x2d, 0xfb, 0xd4, 0xb8, 0xe8, 0xd8, 0xc6, 0xc5, 0x55, 0xfb, 0xcc, 0xe8, 0x68, + 0x9f, 0xa1, 0x3a, 0x6c, 0xcd, 0xf8, 0x2e, 0xde, 0x9b, 0xe7, 0xed, 0x33, 0xad, 0x90, 0xe3, 0xea, + 0x5a, 0xc6, 0xf1, 0xe9, 0xb5, 0x56, 0xdc, 0x77, 0x1f, 0x18, 0xac, 0xfb, 0x88, 0x4c, 0x33, 0x58, + 0xd7, 0x97, 0x27, 0x13, 0x0c, 0x2f, 0x60, 0x7b, 0xc6, 0xd7, 0x39, 0x39, 0x36, 0xba, 0xc6, 0xfb, + 0x0b, 0xad, 0x90, 0xe3, 0x6c, 0x1f, 0x5b, 0xc6, 0x95, 0x61, 0x5d, 0x6b, 0xc5, 0xa3, 0xdf, 0x61, + 0xdb, 0x61, 0x41, 0x9e, 0xfe, 0xa3, 0x95, 0x71, 0x02, 0xe4, 0x94, 0x5e, 0x16, 0x7e, 0x3b, 0xe8, + 0x53, 0x71, 0x9b, 0xf4, 0x74, 0x87, 0x05, 0xad, 0xc9, 0xef, 0xa8, 0x6f, 0xa8, 0xeb, 0xb7, 0xfa, + 0x2c, 0xfd, 0xb4, 0xc9, 0x3e, 0xaa, 0x7e, 0xc2, 0x11, 0x1d, 0x1c, 0xf4, 0x16, 0x94, 0xed, 0xdb, + 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xe6, 0xf6, 0xce, 0x1e, 0x78, 0x09, 0x00, 0x00, }, // uber/cadence/api/v1/service_worker.proto []byte{ diff --git a/.gen/proto/shared/v1/history.pb.yarpc.go b/.gen/proto/shared/v1/history.pb.yarpc.go index b190a088161..654eb3017dc 100644 --- a/.gen/proto/shared/v1/history.pb.yarpc.go +++ b/.gen/proto/shared/v1/history.pb.yarpc.go @@ -386,58 +386,71 @@ var yarpcFileDescriptorClosure0370c4177fcc3ee8 = [][]byte{ }, // uber/cadence/api/v1/tasklist.proto []byte{ - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0xdd, 0x4e, 0x23, 0x37, - 0x14, 0xee, 0x10, 0xd8, 0x85, 0x43, 0x61, 0x67, 0xbd, 0x3f, 0x90, 0x6c, 0xb7, 0xa5, 0xb9, 0x58, - 0xa1, 0x55, 0x3b, 0x29, 0x54, 0xbd, 0xea, 0x45, 0x15, 0x12, 0xd4, 0x1d, 0x11, 0xb2, 0xd1, 0x64, - 0x96, 0x8a, 0x4a, 0x95, 0xeb, 0x8c, 0x4d, 0xb0, 0x66, 0xc6, 0x1e, 0xd9, 0x9e, 0x00, 0x0f, 0xd2, - 0x3e, 0x4c, 0x9f, 0xa8, 0x8f, 0x51, 0xd9, 0x99, 0x09, 0x29, 0xa4, 0xbd, 0xb3, 0xcf, 0x77, 0xbe, - 0xf3, 0xf3, 0x9d, 0x63, 0x43, 0xbb, 0x9c, 0x30, 0xd5, 0x49, 0x08, 0x65, 0x22, 0x61, 0x1d, 0x52, - 0xf0, 0xce, 0xec, 0xa8, 0x63, 0x88, 0x4e, 0x33, 0xae, 0x4d, 0x50, 0x28, 0x69, 0x24, 0x7a, 0x61, - 0x7d, 0x82, 0xca, 0x27, 0x20, 0x05, 0x0f, 0x66, 0x47, 0xad, 0x2f, 0xa7, 0x52, 0x4e, 0x33, 0xd6, - 0x71, 0x2e, 0x93, 0xf2, 0xaa, 0x43, 0x4b, 0x45, 0x0c, 0x97, 0x62, 0x4e, 0x6a, 0x7d, 0xf5, 0x10, - 0x37, 0x3c, 0x67, 0xda, 0x90, 0xbc, 0xa8, 0x1c, 0x1e, 0x05, 0xb8, 0x51, 0xa4, 0x28, 0x98, 0xd2, - 0x73, 0xbc, 0xfd, 0x09, 0x36, 0x63, 0xa2, 0xd3, 0x01, 0xd7, 0x06, 0x21, 0x58, 0x17, 0x24, 0x67, - 0xfb, 0xde, 0x81, 0x77, 0xb8, 0x15, 0xb9, 0x33, 0xfa, 0x01, 0xd6, 0x53, 0x2e, 0xe8, 0xfe, 0xda, - 0x81, 0x77, 0xb8, 0x7b, 0xfc, 0x75, 0xb0, 0xa2, 0xc8, 0xa0, 0x0e, 0x70, 0xc6, 0x05, 0x8d, 0x9c, - 0x7b, 0x9b, 0x80, 0x5f, 0x5b, 0xcf, 0x99, 0x21, 0x94, 0x18, 0x82, 0xce, 0xe1, 0x65, 0x4e, 0x6e, - 0xb1, 0x6d, 0x5b, 0xe3, 0x82, 0x29, 0xac, 0x59, 0x22, 0x05, 0x75, 0xe9, 0xb6, 0x8f, 0xbf, 0x08, - 0xe6, 0x95, 0x06, 0x75, 0xa5, 0x41, 0x5f, 0x96, 0x93, 0x8c, 0x5d, 0x90, 0xac, 0x64, 0xd1, 0xf3, - 0x9c, 0xdc, 0xda, 0x80, 0x7a, 0xc4, 0xd4, 0xd8, 0xd1, 0xda, 0x9f, 0xa0, 0x59, 0xa7, 0x18, 0x11, - 0x65, 0xb8, 0x55, 0x65, 0x91, 0xcb, 0x87, 0x46, 0xca, 0xee, 0xaa, 0x4e, 0xec, 0x11, 0xbd, 0x83, - 0x67, 0xf2, 0x46, 0x30, 0x85, 0xaf, 0xa5, 0x36, 0xd8, 0xf5, 0xb9, 0xe6, 0xd0, 0x1d, 0x67, 0xfe, - 0x20, 0xb5, 0x19, 0x92, 0x9c, 0xb5, 0xff, 0xf6, 0x60, 0xb7, 0x8e, 0x3b, 0x36, 0xc4, 0x94, 0x1a, - 0x7d, 0x03, 0x68, 0x42, 0x92, 0x34, 0x93, 0x53, 0x9c, 0xc8, 0x52, 0x18, 0x7c, 0xcd, 0x85, 0x71, - 0xb1, 0x1b, 0x91, 0x5f, 0x21, 0x3d, 0x0b, 0x7c, 0xe0, 0xc2, 0xa0, 0xb7, 0x00, 0x8a, 0x11, 0x8a, - 0x33, 0x36, 0x63, 0x99, 0xcb, 0xd1, 0x88, 0xb6, 0xac, 0x65, 0x60, 0x0d, 0xe8, 0x0d, 0x6c, 0x91, - 0x24, 0xad, 0xd0, 0x86, 0x43, 0x37, 0x49, 0x92, 0xce, 0xc1, 0x77, 0xf0, 0x4c, 0x11, 0xc3, 0x96, - 0xd5, 0x59, 0x3f, 0xf0, 0x0e, 0xbd, 0x68, 0xc7, 0x9a, 0x17, 0xbd, 0xa3, 0x3e, 0xec, 0x58, 0x19, - 0x31, 0xa7, 0x78, 0x92, 0xc9, 0x24, 0xdd, 0xdf, 0x70, 0x1a, 0x1e, 0xfc, 0xe7, 0x78, 0xc2, 0xfe, - 0x89, 0xf5, 0x8b, 0xb6, 0x2d, 0x2d, 0xa4, 0xee, 0xd2, 0xfe, 0x09, 0xb6, 0x97, 0x30, 0xd4, 0x84, - 0x4d, 0x6d, 0x88, 0x32, 0x98, 0xd3, 0xaa, 0xb9, 0xa7, 0xee, 0x1e, 0x52, 0xf4, 0x0a, 0x9e, 0x30, - 0x41, 0x2d, 0x30, 0xef, 0x67, 0x83, 0x09, 0x1a, 0xd2, 0xf6, 0x9f, 0x1e, 0xc0, 0x48, 0x66, 0x19, - 0x53, 0xa1, 0xb8, 0x92, 0xa8, 0x0f, 0x7e, 0x46, 0xb4, 0xc1, 0x24, 0x49, 0x98, 0xd6, 0xd8, 0xae, - 0x62, 0x35, 0xdc, 0xd6, 0xa3, 0xe1, 0xc6, 0xf5, 0x9e, 0x46, 0xbb, 0x96, 0xd3, 0x75, 0x14, 0x6b, - 0x44, 0x2d, 0xd8, 0xe4, 0x94, 0x09, 0xc3, 0xcd, 0x5d, 0x35, 0xa1, 0xc5, 0x7d, 0x95, 0x3e, 0x8d, - 0x15, 0xfa, 0xb4, 0xff, 0xf2, 0xa0, 0x39, 0x36, 0x3c, 0x49, 0xef, 0x4e, 0x6f, 0x59, 0x52, 0xda, - 0xd5, 0xe8, 0x1a, 0xa3, 0xf8, 0xa4, 0x34, 0x4c, 0xa3, 0x9f, 0xc1, 0xbf, 0x91, 0x2a, 0x65, 0xca, - 0xed, 0x22, 0xb6, 0x6f, 0xb0, 0xaa, 0xf3, 0xed, 0xff, 0xee, 0x77, 0xb4, 0x3b, 0xa7, 0x2d, 0x1e, - 0x4c, 0x0c, 0x4d, 0x9d, 0x5c, 0x33, 0x5a, 0x66, 0x0c, 0x1b, 0x89, 0xe7, 0xea, 0xd9, 0xb6, 0x65, - 0x69, 0x5c, 0xed, 0xdb, 0xc7, 0xcd, 0xc7, 0x6b, 0x5d, 0xbd, 0xe0, 0xe8, 0x75, 0xcd, 0x8d, 0xe5, - 0xd8, 0x32, 0xe3, 0x39, 0xb1, 0xfd, 0x87, 0x07, 0x7b, 0x8f, 0x36, 0xbb, 0x27, 0xc5, 0x15, 0x9f, - 0xa2, 0x7d, 0x78, 0x3a, 0x63, 0x4a, 0x73, 0x29, 0xea, 0x11, 0x55, 0x57, 0x14, 0xc0, 0x0b, 0x51, - 0xe6, 0xd8, 0xad, 0x5e, 0x51, 0xb3, 0xb4, 0xab, 0x62, 0x23, 0x7a, 0x2e, 0xca, 0x3c, 0x62, 0x84, - 0x2e, 0xc2, 0x69, 0xf4, 0x1d, 0xbc, 0xb4, 0xfe, 0x37, 0x8a, 0x5b, 0x3d, 0xef, 0x09, 0x0d, 0x47, - 0x40, 0xa2, 0xcc, 0x7f, 0xb1, 0xd0, 0x3d, 0xe3, 0xfd, 0xef, 0xf0, 0xf9, 0xf2, 0x4b, 0x47, 0x2d, - 0x78, 0x1d, 0x77, 0xc7, 0x67, 0x78, 0x10, 0x8e, 0x63, 0x7c, 0x16, 0x0e, 0xfb, 0x38, 0x1c, 0x5e, - 0x74, 0x07, 0x61, 0xdf, 0xff, 0x0c, 0x35, 0xe1, 0xd5, 0x03, 0x6c, 0xf8, 0x31, 0x3a, 0xef, 0x0e, - 0x7c, 0x6f, 0x05, 0x34, 0x8e, 0xc3, 0xde, 0xd9, 0xa5, 0xbf, 0xf6, 0x9e, 0xde, 0x67, 0x88, 0xef, - 0x0a, 0xf6, 0xef, 0x0c, 0xf1, 0xe5, 0xe8, 0x74, 0x29, 0xc3, 0x1b, 0xd8, 0x7b, 0x80, 0xf5, 0x4f, - 0x7b, 0xe1, 0x38, 0xfc, 0x38, 0xf4, 0xbd, 0x15, 0x60, 0xb7, 0x17, 0x87, 0x17, 0x61, 0x7c, 0xe9, - 0xaf, 0x9d, 0xfc, 0x06, 0x7b, 0x89, 0xcc, 0x57, 0x4d, 0xfa, 0x64, 0x67, 0xa1, 0xbb, 0x9d, 0xd6, - 0xc8, 0xfb, 0xf5, 0x68, 0xca, 0xcd, 0x75, 0x39, 0x09, 0x12, 0x99, 0x77, 0x96, 0xff, 0xf0, 0x6f, - 0x39, 0xcd, 0x3a, 0x53, 0x39, 0xff, 0x56, 0xab, 0x0f, 0xfd, 0x47, 0x52, 0xf0, 0xd9, 0xd1, 0xe4, - 0x89, 0xb3, 0x7d, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x81, 0xda, 0x9c, 0xf6, 0xf4, 0x05, - 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xeb, 0x4e, 0xe3, 0x46, + 0x14, 0x6e, 0x6e, 0x5c, 0x4e, 0x16, 0x30, 0x03, 0x2c, 0x49, 0xb6, 0xdb, 0xb2, 0xf9, 0x81, 0x28, + 0x6a, 0x1d, 0x41, 0x5b, 0xa9, 0x6a, 0xab, 0xed, 0x06, 0x82, 0x76, 0x2d, 0x2e, 0x8b, 0x1c, 0x2f, + 0x15, 0x95, 0x2a, 0x77, 0x62, 0x0f, 0x61, 0xea, 0xcb, 0x58, 0x9e, 0x71, 0x02, 0x4f, 0xd0, 0x37, + 0xe8, 0xc3, 0xf4, 0x1d, 0xfa, 0x4e, 0xd5, 0x8c, 0x9d, 0x90, 0x8b, 0x41, 0xdd, 0x1f, 0xfb, 0x2f, + 0x73, 0xce, 0x7c, 0xf3, 0x9d, 0xef, 0xdc, 0x62, 0x68, 0x26, 0x3d, 0x12, 0xb7, 0x1c, 0xec, 0x92, + 0xd0, 0x21, 0x2d, 0x1c, 0xd1, 0xd6, 0xe0, 0xa0, 0x25, 0x30, 0xf7, 0x7c, 0xca, 0x85, 0x1e, 0xc5, + 0x4c, 0x30, 0xb4, 0x21, 0xef, 0xe8, 0xd9, 0x1d, 0x1d, 0x47, 0x54, 0x1f, 0x1c, 0x34, 0xbe, 0xe8, + 0x33, 0xd6, 0xf7, 0x49, 0x4b, 0x5d, 0xe9, 0x25, 0x37, 0x2d, 0x37, 0x89, 0xb1, 0xa0, 0x2c, 0x4c, + 0x41, 0x8d, 0x2f, 0x67, 0xfd, 0x82, 0x06, 0x84, 0x0b, 0x1c, 0x44, 0xd9, 0x85, 0xb9, 0x07, 0x86, + 0x31, 0x8e, 0x22, 0x12, 0xf3, 0xd4, 0xdf, 0xfc, 0x00, 0x4b, 0x16, 0xe6, 0xde, 0x19, 0xe5, 0x02, + 0x21, 0x28, 0x87, 0x38, 0x20, 0xb5, 0xc2, 0x4e, 0x61, 0x6f, 0xd9, 0x54, 0xbf, 0xd1, 0xf7, 0x50, + 0xf6, 0x68, 0xe8, 0xd6, 0x8a, 0x3b, 0x85, 0xbd, 0xd5, 0xc3, 0x57, 0x7a, 0x4e, 0x90, 0xfa, 0xe8, + 0x81, 0x53, 0x1a, 0xba, 0xa6, 0xba, 0xde, 0xc4, 0xa0, 0x8d, 0xac, 0xe7, 0x44, 0x60, 0x17, 0x0b, + 0x8c, 0xce, 0x61, 0x33, 0xc0, 0x77, 0xb6, 0x94, 0xcd, 0xed, 0x88, 0xc4, 0x36, 0x27, 0x0e, 0x0b, + 0x5d, 0x45, 0x57, 0x3d, 0xfc, 0x5c, 0x4f, 0x23, 0xd5, 0x47, 0x91, 0xea, 0x1d, 0x96, 0xf4, 0x7c, + 0x72, 0x85, 0xfd, 0x84, 0x98, 0xeb, 0x01, 0xbe, 0x93, 0x0f, 0xf2, 0x4b, 0x12, 0x77, 0x15, 0xac, + 0xf9, 0x01, 0xea, 0x23, 0x8a, 0x4b, 0x1c, 0x0b, 0x2a, 0xb3, 0x32, 0xe6, 0xd2, 0xa0, 0xe4, 0x91, + 0xfb, 0x4c, 0x89, 0xfc, 0x89, 0x76, 0x61, 0x8d, 0x0d, 0x43, 0x12, 0xdb, 0xb7, 0x8c, 0x0b, 0x5b, + 0xe9, 0x2c, 0x2a, 0xef, 0x8a, 0x32, 0xbf, 0x63, 0x5c, 0x5c, 0xe0, 0x80, 0x34, 0x3d, 0xd8, 0x32, + 0x38, 0xf3, 0x55, 0x92, 0xdf, 0xc6, 0x2c, 0x89, 0xce, 0x89, 0x88, 0xa9, 0xc3, 0x51, 0x0b, 0x36, + 0x43, 0x32, 0xcc, 0x0f, 0xbf, 0x60, 0xae, 0x87, 0x64, 0x38, 0x1d, 0x20, 0x7a, 0x05, 0xcf, 0x22, + 0xe6, 0xfb, 0x24, 0xb6, 0x1d, 0x96, 0x84, 0x42, 0xd1, 0x95, 0xcc, 0x6a, 0x6a, 0x3b, 0x96, 0xa6, + 0xe6, 0x5f, 0x65, 0x58, 0x1d, 0x89, 0xe8, 0x0a, 0x2c, 0x12, 0x8e, 0xbe, 0x06, 0xd4, 0xc3, 0x8e, + 0xe7, 0xb3, 0x7e, 0x0a, 0xb3, 0x6f, 0x69, 0x28, 0x14, 0x49, 0xc9, 0xd4, 0x32, 0x8f, 0x02, 0xbf, + 0xa3, 0xa1, 0x40, 0x2f, 0x01, 0x62, 0x82, 0x5d, 0xdb, 0x27, 0x03, 0xe2, 0x67, 0x0c, 0xcb, 0xd2, + 0x72, 0x26, 0x0d, 0xe8, 0x05, 0x2c, 0x63, 0xc7, 0xcb, 0xbc, 0x25, 0xe5, 0x5d, 0xc2, 0x8e, 0x97, + 0x3a, 0x77, 0x61, 0x2d, 0xc6, 0x82, 0x4c, 0x6a, 0x29, 0x2b, 0x2d, 0x2b, 0xd2, 0xfc, 0xa0, 0xa3, + 0x03, 0x2b, 0x52, 0xb4, 0x4d, 0x5d, 0xbb, 0xe7, 0x33, 0xc7, 0xab, 0x55, 0x54, 0xc1, 0x76, 0x1e, + 0xed, 0x05, 0xa3, 0x73, 0x24, 0xef, 0x99, 0x55, 0x09, 0x33, 0x5c, 0x75, 0x40, 0x03, 0xd8, 0xa6, + 0xa3, 0xbc, 0xda, 0x7d, 0x99, 0x58, 0x3b, 0x48, 0x33, 0x5b, 0x5b, 0xd8, 0x29, 0xed, 0x55, 0x0f, + 0x5f, 0x3f, 0xd9, 0x5b, 0x69, 0x76, 0xf4, 0xdc, 0xd2, 0x9c, 0x84, 0x22, 0xbe, 0x37, 0xb7, 0xe8, + 0x47, 0x95, 0x6d, 0xf1, 0x91, 0xb2, 0x35, 0x04, 0x34, 0x1e, 0x67, 0xc9, 0x69, 0xac, 0x37, 0x50, + 0x19, 0xc8, 0x1e, 0x55, 0xd9, 0xaf, 0x1e, 0xee, 0xe7, 0xca, 0xc8, 0x7d, 0xd1, 0x4c, 0x81, 0x3f, + 0x16, 0x7f, 0x28, 0x34, 0x7f, 0x81, 0xea, 0x44, 0xea, 0x50, 0x1d, 0x96, 0xb8, 0xc0, 0xb1, 0xb0, + 0xa9, 0x9b, 0xd5, 0x7e, 0x51, 0x9d, 0x0d, 0x17, 0x6d, 0xc1, 0x02, 0x09, 0x5d, 0xe9, 0x48, 0xcb, + 0x5d, 0x21, 0xa1, 0x6b, 0xb8, 0xcd, 0xbf, 0x0b, 0x00, 0x97, 0xaa, 0xb5, 0x8c, 0xf0, 0x86, 0xa1, + 0x0e, 0x68, 0x3e, 0xe6, 0xc2, 0xc6, 0x8e, 0x43, 0x38, 0xb7, 0xe5, 0x5a, 0xc8, 0x06, 0xad, 0x31, + 0x37, 0x68, 0xd6, 0x68, 0x67, 0x98, 0xab, 0x12, 0xd3, 0x56, 0x10, 0x69, 0x44, 0x0d, 0x58, 0xa2, + 0x2e, 0x09, 0x05, 0x15, 0xf7, 0xd9, 0xb4, 0x8c, 0xcf, 0x79, 0xed, 0x53, 0xca, 0x69, 0x9f, 0xe6, + 0x3f, 0x05, 0xa8, 0x77, 0x05, 0x75, 0xbc, 0xfb, 0x93, 0x3b, 0xe2, 0x24, 0x32, 0x09, 0x6d, 0x21, + 0x62, 0xda, 0x4b, 0x04, 0xe1, 0xe8, 0x2d, 0x68, 0x43, 0x16, 0x7b, 0x24, 0x56, 0x15, 0xb2, 0xe5, + 0x3e, 0xcc, 0xe2, 0x7c, 0xf9, 0x64, 0x3f, 0x98, 0xab, 0x29, 0x6c, 0xbc, 0xbc, 0x2c, 0xa8, 0x73, + 0xe7, 0x96, 0xb8, 0x89, 0x4f, 0x6c, 0xc1, 0xec, 0x34, 0x7b, 0x52, 0x36, 0x4b, 0x44, 0x56, 0x9a, + 0xfa, 0xfc, 0x8a, 0xc9, 0xb6, 0xa9, 0xf9, 0x7c, 0x84, 0xb5, 0x58, 0x57, 0x22, 0xad, 0x14, 0xd8, + 0x7c, 0x0d, 0xeb, 0x73, 0x4b, 0x06, 0x7d, 0x05, 0xda, 0x4c, 0x2b, 0xf3, 0x5a, 0x61, 0xa7, 0xb4, + 0xb7, 0x6c, 0xae, 0x4d, 0xf7, 0x20, 0x6f, 0xfe, 0x5b, 0x86, 0xed, 0xb9, 0x07, 0x8e, 0x59, 0x78, + 0x43, 0xfb, 0xa8, 0x06, 0x8b, 0x03, 0x12, 0x73, 0xca, 0xc2, 0x51, 0x89, 0xb3, 0x23, 0x3a, 0x84, + 0x8d, 0x30, 0x09, 0x6c, 0x35, 0xd9, 0xd1, 0x08, 0xc5, 0x95, 0x8a, 0xca, 0x51, 0xb1, 0x26, 0xdb, + 0x36, 0x09, 0x4c, 0x82, 0xdd, 0xf1, 0x93, 0x1c, 0x7d, 0x07, 0x9b, 0x12, 0x33, 0x8c, 0xa9, 0xac, + 0xc9, 0x03, 0xa8, 0x34, 0x06, 0xa1, 0x30, 0x09, 0x7e, 0x95, 0xee, 0x09, 0x14, 0x85, 0xb5, 0x59, + 0x96, 0xb2, 0x9a, 0xc6, 0x37, 0x4f, 0x66, 0x7f, 0x46, 0x8a, 0x3e, 0x1d, 0x4b, 0x3a, 0x8f, 0xab, + 0xf1, 0x74, 0x80, 0x3e, 0x68, 0x73, 0xc1, 0x55, 0x14, 0x57, 0xfb, 0xa3, 0xb8, 0x66, 0x24, 0xa4, + 0x64, 0x6b, 0xc3, 0x69, 0x6b, 0x83, 0xc2, 0x46, 0x4e, 0x50, 0x93, 0xe3, 0x5b, 0x49, 0xc7, 0xf7, + 0xe7, 0xe9, 0xf1, 0xdd, 0xfd, 0x7f, 0xb1, 0x4c, 0x8c, 0x6e, 0xe3, 0x4f, 0xd8, 0xcc, 0x8b, 0xe9, + 0x53, 0x70, 0xed, 0xff, 0x01, 0xcf, 0x26, 0xff, 0x6d, 0x51, 0x03, 0x9e, 0x5b, 0xed, 0xee, 0xa9, + 0x7d, 0x66, 0x74, 0x2d, 0xfb, 0xd4, 0xb8, 0xe8, 0xd8, 0xc6, 0xc5, 0x55, 0xfb, 0xcc, 0xe8, 0x68, + 0x9f, 0xa1, 0x3a, 0x6c, 0xcd, 0xf8, 0x2e, 0xde, 0x9b, 0xe7, 0xed, 0x33, 0xad, 0x90, 0xe3, 0xea, + 0x5a, 0xc6, 0xf1, 0xe9, 0xb5, 0x56, 0xdc, 0x77, 0x1f, 0x18, 0xac, 0xfb, 0x88, 0x4c, 0x33, 0x58, + 0xd7, 0x97, 0x27, 0x13, 0x0c, 0x2f, 0x60, 0x7b, 0xc6, 0xd7, 0x39, 0x39, 0x36, 0xba, 0xc6, 0xfb, + 0x0b, 0xad, 0x90, 0xe3, 0x6c, 0x1f, 0x5b, 0xc6, 0x95, 0x61, 0x5d, 0x6b, 0xc5, 0xa3, 0xdf, 0x61, + 0xdb, 0x61, 0x41, 0x9e, 0xfe, 0xa3, 0x95, 0x71, 0x02, 0xe4, 0x94, 0x5e, 0x16, 0x7e, 0x3b, 0xe8, + 0x53, 0x71, 0x9b, 0xf4, 0x74, 0x87, 0x05, 0xad, 0xc9, 0xef, 0xa8, 0x6f, 0xa8, 0xeb, 0xb7, 0xfa, + 0x2c, 0xfd, 0xb4, 0xc9, 0x3e, 0xaa, 0x7e, 0xc2, 0x11, 0x1d, 0x1c, 0xf4, 0x16, 0x94, 0xed, 0xdb, + 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xe6, 0xf6, 0xce, 0x1e, 0x78, 0x09, 0x00, 0x00, }, // google/protobuf/wrappers.proto []byte{ diff --git a/cmd/server/go.mod b/cmd/server/go.mod index 8d45421b6cf..3a8c6c92438 100644 --- a/cmd/server/go.mod +++ b/cmd/server/go.mod @@ -42,7 +42,7 @@ require ( github.com/startreedata/pinot-client-go v0.2.0 // latest release supports pinot v0.12.0 which is also internal version github.com/stretchr/testify v1.9.0 github.com/uber-go/tally v3.3.15+incompatible // indirect - github.com/uber/cadence-idl v0.0.0-20241126065313-57bd6876d48f + github.com/uber/cadence-idl v0.0.0-20241230191346-dcfe462b5c9c github.com/uber/ringpop-go v0.8.5 // indirect github.com/uber/tchannel-go v1.22.2 // indirect github.com/valyala/fastjson v1.4.1 // indirect diff --git a/cmd/server/go.sum b/cmd/server/go.sum index 06f53b9115e..a7d6d5d535c 100644 --- a/cmd/server/go.sum +++ b/cmd/server/go.sum @@ -411,8 +411,8 @@ github.com/uber-go/tally v3.3.12+incompatible/go.mod h1:YDTIBxdXyOU/sCWilKB4bgyu github.com/uber-go/tally v3.3.15+incompatible h1:9hLSgNBP28CjIaDmAuRTq9qV+UZY+9PcvAkXO4nNMwg= github.com/uber-go/tally v3.3.15+incompatible/go.mod h1:YDTIBxdXyOU/sCWilKB4bgyufu1cEi0jdVnRdxvjnmU= github.com/uber/cadence-idl v0.0.0-20211111101836-d6b70b60eb8c/go.mod h1:oyUK7GCNCRHCCyWyzifSzXpVrRYVBbAMHAzF5dXiKws= -github.com/uber/cadence-idl v0.0.0-20241126065313-57bd6876d48f h1:U2nI6IKh80rrueDb2G3wuhCkCHYCsLp9EFBazeTs7Dk= -github.com/uber/cadence-idl v0.0.0-20241126065313-57bd6876d48f/go.mod h1:oyUK7GCNCRHCCyWyzifSzXpVrRYVBbAMHAzF5dXiKws= +github.com/uber/cadence-idl v0.0.0-20241230191346-dcfe462b5c9c h1:uda5vKt0Co2a3EyuLK90Z7zvavwo43HgsR9pHDZ7uag= +github.com/uber/cadence-idl v0.0.0-20241230191346-dcfe462b5c9c/go.mod h1:oyUK7GCNCRHCCyWyzifSzXpVrRYVBbAMHAzF5dXiKws= github.com/uber/jaeger-client-go v2.22.1+incompatible h1:NHcubEkVbahf9t3p75TOCR83gdUHXjRJvjoBh1yACsM= github.com/uber/jaeger-client-go v2.22.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.2.0+incompatible h1:MxZXOiR2JuoANZ3J6DE/U0kSFv/eJ/GfSYVCjK7dyaw= diff --git a/common/stats/interface_mock.go b/common/stats/interface_mock.go index 314ca6a2f61..b6f86d7266b 100644 --- a/common/stats/interface_mock.go +++ b/common/stats/interface_mock.go @@ -110,3 +110,102 @@ func (mr *MockQPSTrackerMockRecorder) Stop() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Stop", reflect.TypeOf((*MockQPSTracker)(nil).Stop)) } + +// MockQPSTrackerGroup is a mock of QPSTrackerGroup interface. +type MockQPSTrackerGroup struct { + ctrl *gomock.Controller + recorder *MockQPSTrackerGroupMockRecorder +} + +// MockQPSTrackerGroupMockRecorder is the mock recorder for MockQPSTrackerGroup. +type MockQPSTrackerGroupMockRecorder struct { + mock *MockQPSTrackerGroup +} + +// NewMockQPSTrackerGroup creates a new mock instance. +func NewMockQPSTrackerGroup(ctrl *gomock.Controller) *MockQPSTrackerGroup { + mock := &MockQPSTrackerGroup{ctrl: ctrl} + mock.recorder = &MockQPSTrackerGroupMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockQPSTrackerGroup) EXPECT() *MockQPSTrackerGroupMockRecorder { + return m.recorder +} + +// GroupQPS mocks base method. +func (m *MockQPSTrackerGroup) GroupQPS(group string) float64 { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GroupQPS", group) + ret0, _ := ret[0].(float64) + return ret0 +} + +// GroupQPS indicates an expected call of GroupQPS. +func (mr *MockQPSTrackerGroupMockRecorder) GroupQPS(group interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GroupQPS", reflect.TypeOf((*MockQPSTrackerGroup)(nil).GroupQPS), group) +} + +// QPS mocks base method. +func (m *MockQPSTrackerGroup) QPS() float64 { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QPS") + ret0, _ := ret[0].(float64) + return ret0 +} + +// QPS indicates an expected call of QPS. +func (mr *MockQPSTrackerGroupMockRecorder) QPS() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QPS", reflect.TypeOf((*MockQPSTrackerGroup)(nil).QPS)) +} + +// ReportCounter mocks base method. +func (m *MockQPSTrackerGroup) ReportCounter(arg0 int64) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "ReportCounter", arg0) +} + +// ReportCounter indicates an expected call of ReportCounter. +func (mr *MockQPSTrackerGroupMockRecorder) ReportCounter(arg0 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReportCounter", reflect.TypeOf((*MockQPSTrackerGroup)(nil).ReportCounter), arg0) +} + +// ReportGroup mocks base method. +func (m *MockQPSTrackerGroup) ReportGroup(group string, amount int64) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "ReportGroup", group, amount) +} + +// ReportGroup indicates an expected call of ReportGroup. +func (mr *MockQPSTrackerGroupMockRecorder) ReportGroup(group, amount interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReportGroup", reflect.TypeOf((*MockQPSTrackerGroup)(nil).ReportGroup), group, amount) +} + +// Start mocks base method. +func (m *MockQPSTrackerGroup) Start() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Start") +} + +// Start indicates an expected call of Start. +func (mr *MockQPSTrackerGroupMockRecorder) Start() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", reflect.TypeOf((*MockQPSTrackerGroup)(nil).Start)) +} + +// Stop mocks base method. +func (m *MockQPSTrackerGroup) Stop() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Stop") +} + +// Stop indicates an expected call of Stop. +func (mr *MockQPSTrackerGroupMockRecorder) Stop() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Stop", reflect.TypeOf((*MockQPSTrackerGroup)(nil).Stop)) +} diff --git a/common/stats/interfaces.go b/common/stats/interfaces.go index a4807fc698f..50b1b27f11a 100644 --- a/common/stats/interfaces.go +++ b/common/stats/interfaces.go @@ -37,3 +37,12 @@ type QPSTracker interface { // QPS returns the current queries per second (QPS) value. QPS() float64 } + +// QPSTrackerGroup allows for estimating QPS metrics with an additional dimension +type QPSTrackerGroup interface { + QPSTracker + + ReportGroup(group string, amount int64) + + GroupQPS(group string) float64 +} diff --git a/common/stats/stats.go b/common/stats/stats.go index 63221f9c8ca..4925d861985 100644 --- a/common/stats/stats.go +++ b/common/stats/stats.go @@ -36,13 +36,20 @@ import ( type ( // emaFixedWindowQPSTracker is a QPSTracker that uses a fixed time period to calculate QPS and an exponential moving average algorithm to estimate QPS. emaFixedWindowQPSTracker struct { - timeSource clock.TimeSource + groups sync.Map + root *emaFixedWindowState + timeSource clock.TimeSource + exp float64 + bucketInterval time.Duration + wg sync.WaitGroup + done chan struct{} + status *atomic.Int32 + baseEvent event.E + } + + emaFixedWindowState struct { exp float64 - bucketInterval time.Duration bucketIntervalSeconds float64 - wg sync.WaitGroup - done chan struct{} - status *atomic.Int32 firstBucket bool baseEvent event.E qps *atomic.Float64 @@ -50,18 +57,13 @@ type ( } ) -func NewEmaFixedWindowQPSTracker(timeSource clock.TimeSource, exp float64, bucketInterval time.Duration, baseEvent event.E) QPSTracker { +func NewEmaFixedWindowQPSTracker(timeSource clock.TimeSource, exp float64, bucketInterval time.Duration, baseEvent event.E) QPSTrackerGroup { return &emaFixedWindowQPSTracker{ - timeSource: timeSource, - exp: exp, - bucketInterval: bucketInterval, - bucketIntervalSeconds: float64(bucketInterval) / float64(time.Second), - done: make(chan struct{}), - status: atomic.NewInt32(common.DaemonStatusInitialized), - firstBucket: true, - counter: atomic.NewInt64(0), - qps: atomic.NewFloat64(0), - baseEvent: baseEvent, + root: newEmaFixedWindowState(exp, bucketInterval, baseEvent), + timeSource: timeSource, + bucketInterval: bucketInterval, + done: make(chan struct{}), + status: atomic.NewInt32(common.DaemonStatusInitialized), } } @@ -89,25 +91,12 @@ func (r *emaFixedWindowQPSTracker) reportLoop() { } func (r *emaFixedWindowQPSTracker) report() { - if r.firstBucket { - counter := r.counter.Swap(0) - r.store(float64(counter) / r.bucketIntervalSeconds) - r.firstBucket = false - return - } - counter := r.counter.Swap(0) - qps := r.qps.Load() - r.store(qps*(1-r.exp) + float64(counter)*r.exp/r.bucketIntervalSeconds) -} - -func (r *emaFixedWindowQPSTracker) store(qps float64) { - r.qps.Store(qps) - e := r.baseEvent - e.EventName = "QPSTrackerUpdate" - e.Payload = map[string]any{ - "QPS": qps, - } - event.Log(e) + r.root.report() + r.groups.Range(func(key, value any) bool { + state := value.(*emaFixedWindowState) + state.report() + return true + }) } func (r *emaFixedWindowQPSTracker) Stop() { @@ -118,12 +107,89 @@ func (r *emaFixedWindowQPSTracker) Stop() { r.wg.Wait() } -func (r *emaFixedWindowQPSTracker) ReportCounter(delta int64) { - r.counter.Add(delta) +func (r *emaFixedWindowQPSTracker) ReportCounter(amount int64) { + r.root.add(amount) +} + +func (r *emaFixedWindowQPSTracker) ReportGroup(group string, amount int64) { + r.root.add(amount) + r.getOrCreate(group).add(amount) +} + +func (r *emaFixedWindowQPSTracker) GroupQPS(group string) float64 { + state, ok := r.get(group) + if !ok { + return 0 + } + return state.getQPS() } func (r *emaFixedWindowQPSTracker) QPS() float64 { - return r.qps.Load() + return r.root.getQPS() +} + +func (r *emaFixedWindowQPSTracker) get(group string) (*emaFixedWindowState, bool) { + res, ok := r.groups.Load(group) + if !ok { + return nil, false + } + return res.(*emaFixedWindowState), true +} + +func (r *emaFixedWindowQPSTracker) getOrCreate(group string) *emaFixedWindowState { + res, ok := r.groups.Load(group) + if !ok { + e := r.baseEvent + e.Payload = map[string]any{ + "group": group, + } + res, _ = r.groups.LoadOrStore(group, newEmaFixedWindowState(r.exp, r.bucketInterval, e)) + } + return res.(*emaFixedWindowState) +} + +func newEmaFixedWindowState(exp float64, bucketInterval time.Duration, baseEvent event.E) *emaFixedWindowState { + return &emaFixedWindowState{ + exp: exp, + bucketIntervalSeconds: bucketInterval.Seconds(), + firstBucket: true, + baseEvent: baseEvent, + qps: atomic.NewFloat64(0), + counter: atomic.NewInt64(0), + } +} + +func (s *emaFixedWindowState) report() { + if s.firstBucket { + counter := s.counter.Swap(0) + s.store(float64(counter) / s.bucketIntervalSeconds) + s.firstBucket = false + return + } + counter := s.counter.Swap(0) + qps := s.qps.Load() + s.store(qps*(1-s.exp) + float64(counter)*s.exp/s.bucketIntervalSeconds) +} + +func (s *emaFixedWindowState) store(qps float64) { + s.qps.Store(qps) + e := s.baseEvent + e.EventName = "QPSTrackerUpdate" + payload := make(map[string]any, len(e.Payload)+1) + for k, v := range e.Payload { + payload[k] = v + } + payload["QPS"] = qps + e.Payload = payload + event.Log(e) +} + +func (s *emaFixedWindowState) add(delta int64) { + s.counter.Add(delta) +} + +func (s *emaFixedWindowState) getQPS() float64 { + return s.qps.Load() } type ( diff --git a/common/stats/stats_test.go b/common/stats/stats_test.go index 94ae4cbed57..bfcaf082f2b 100644 --- a/common/stats/stats_test.go +++ b/common/stats/stats_test.go @@ -27,6 +27,8 @@ import ( "testing" "time" + "github.com/stretchr/testify/assert" + "github.com/uber/cadence/common/clock" "github.com/uber/cadence/service/matching/event" ) @@ -47,9 +49,7 @@ func TestEmaFixedWindowQPSTracker(t *testing.T) { r.ReportCounter(20) qps := r.QPS() - if qps != 0 { - t.Errorf("QPS mismatch, expected: 0, got: %v", qps) - } + assert.Equal(t, float64(0), qps) timeSource.BlockUntil(1) timeSource.Advance(bucketInterval) @@ -57,9 +57,7 @@ func TestEmaFixedWindowQPSTracker(t *testing.T) { // Test QPS qps = r.QPS() expectedQPS := float64(30) / (float64(bucketInterval) / float64(time.Second)) - if math.Abs(qps-expectedQPS) > floatResolution { - t.Errorf("QPS mismatch, expected: %v, got: %v", expectedQPS, qps) - } + assert.InDelta(t, expectedQPS, qps, floatResolution) r.ReportCounter(10) timeSource.BlockUntil(1) @@ -68,9 +66,32 @@ func TestEmaFixedWindowQPSTracker(t *testing.T) { // Test QPS qps = r.QPS() expectedQPS = float64(22) / (float64(bucketInterval) / float64(time.Second)) - if math.Abs(qps-expectedQPS) > floatResolution { - t.Errorf("QPS mismatch, expected: %v, got: %v", expectedQPS, qps) - } + assert.InDelta(t, expectedQPS, qps, floatResolution) +} + +func TestEmaFixedWindowQPSTracker_Groups(t *testing.T) { + timeSource := clock.NewMockedTimeSourceAt(time.Now()) + exp := 0.4 + bucketInterval := time.Second + + r := NewEmaFixedWindowQPSTracker(timeSource, exp, bucketInterval, event.E{}) + r.Start() + defer r.Stop() + + r.ReportGroup("foo", 10) + r.ReportGroup("bar", 20) + + timeSource.BlockUntil(1) + timeSource.Advance(bucketInterval) + time.Sleep(10 * time.Millisecond) + // Test QPS + expectedQPS := float64(30) / (float64(bucketInterval) / float64(time.Second)) + expectedFoo := float64(10) / (float64(bucketInterval) / float64(time.Second)) + expectedBar := float64(20) / (float64(bucketInterval) / float64(time.Second)) + assert.InDelta(t, expectedQPS, r.QPS(), floatResolution) + assert.InDelta(t, expectedFoo, r.GroupQPS("foo"), floatResolution) + assert.InDelta(t, expectedBar, r.GroupQPS("bar"), floatResolution) + assert.Equal(t, float64(0), r.GroupQPS("unknown")) } func TestRollingWindowQPSTracker(t *testing.T) { diff --git a/common/types/mapper/proto/api.go b/common/types/mapper/proto/api.go index 56564324698..21b03d555d1 100644 --- a/common/types/mapper/proto/api.go +++ b/common/types/mapper/proto/api.go @@ -4006,11 +4006,13 @@ func FromTaskListStatus(t *types.TaskListStatus) *apiv1.TaskListStatus { return nil } return &apiv1.TaskListStatus{ - BacklogCountHint: t.BacklogCountHint, - ReadLevel: t.ReadLevel, - AckLevel: t.AckLevel, - RatePerSecond: t.RatePerSecond, - TaskIdBlock: FromTaskIDBlock(t.TaskIDBlock), + BacklogCountHint: t.BacklogCountHint, + ReadLevel: t.ReadLevel, + AckLevel: t.AckLevel, + RatePerSecond: t.RatePerSecond, + TaskIdBlock: FromTaskIDBlock(t.TaskIDBlock), + IsolationGroupMetrics: FromIsolationGroupMetricsMap(t.IsolationGroupMetrics), + NewTasksPerSecond: t.NewTasksPerSecond, } } @@ -4019,11 +4021,27 @@ func ToTaskListStatus(t *apiv1.TaskListStatus) *types.TaskListStatus { return nil } return &types.TaskListStatus{ - BacklogCountHint: t.BacklogCountHint, - ReadLevel: t.ReadLevel, - AckLevel: t.AckLevel, - RatePerSecond: t.RatePerSecond, - TaskIDBlock: ToTaskIDBlock(t.TaskIdBlock), + BacklogCountHint: t.BacklogCountHint, + ReadLevel: t.ReadLevel, + AckLevel: t.AckLevel, + RatePerSecond: t.RatePerSecond, + TaskIDBlock: ToTaskIDBlock(t.TaskIdBlock), + IsolationGroupMetrics: ToIsolationGroupMetricsMap(t.IsolationGroupMetrics), + NewTasksPerSecond: t.NewTasksPerSecond, + } +} + +func FromIsolationGroupMetrics(t *types.IsolationGroupMetrics) *apiv1.IsolationGroupMetrics { + return &apiv1.IsolationGroupMetrics{ + NewTasksPerSecond: t.NewTasksPerSecond, + PollerCount: t.PollerCount, + } +} + +func ToIsolationGroupMetrics(t *apiv1.IsolationGroupMetrics) *types.IsolationGroupMetrics { + return &types.IsolationGroupMetrics{ + NewTasksPerSecond: t.NewTasksPerSecond, + PollerCount: t.PollerCount, } } @@ -5462,6 +5480,28 @@ func ToWorkflowQueryResultMap(t map[string]*apiv1.WorkflowQueryResult) map[strin return v } +func FromIsolationGroupMetricsMap(t map[string]*types.IsolationGroupMetrics) map[string]*apiv1.IsolationGroupMetrics { + if t == nil { + return nil + } + v := make(map[string]*apiv1.IsolationGroupMetrics, len(t)) + for key := range t { + v[key] = FromIsolationGroupMetrics(t[key]) + } + return v +} + +func ToIsolationGroupMetricsMap(t map[string]*apiv1.IsolationGroupMetrics) map[string]*types.IsolationGroupMetrics { + if t == nil { + return nil + } + v := make(map[string]*types.IsolationGroupMetrics, len(t)) + for key := range t { + v[key] = ToIsolationGroupMetrics(t[key]) + } + return v +} + func FromPayload(data []byte) *apiv1.Payload { if data == nil { return nil diff --git a/common/types/mapper/thrift/shared.go b/common/types/mapper/thrift/shared.go index b351840c87d..5dedcf36916 100644 --- a/common/types/mapper/thrift/shared.go +++ b/common/types/mapper/thrift/shared.go @@ -5655,11 +5655,13 @@ func FromTaskListStatus(t *types.TaskListStatus) *shared.TaskListStatus { return nil } return &shared.TaskListStatus{ - BacklogCountHint: &t.BacklogCountHint, - ReadLevel: &t.ReadLevel, - AckLevel: &t.AckLevel, - RatePerSecond: &t.RatePerSecond, - TaskIDBlock: FromTaskIDBlock(t.TaskIDBlock), + BacklogCountHint: &t.BacklogCountHint, + ReadLevel: &t.ReadLevel, + AckLevel: &t.AckLevel, + RatePerSecond: &t.RatePerSecond, + TaskIDBlock: FromTaskIDBlock(t.TaskIDBlock), + IsolationGroupMetrics: FromIsolationGroupMetricsMap(t.IsolationGroupMetrics), + NewTasksPerSecond: &t.NewTasksPerSecond, } } @@ -5669,11 +5671,27 @@ func ToTaskListStatus(t *shared.TaskListStatus) *types.TaskListStatus { return nil } return &types.TaskListStatus{ - BacklogCountHint: t.GetBacklogCountHint(), - ReadLevel: t.GetReadLevel(), - AckLevel: t.GetAckLevel(), - RatePerSecond: t.GetRatePerSecond(), - TaskIDBlock: ToTaskIDBlock(t.TaskIDBlock), + BacklogCountHint: t.GetBacklogCountHint(), + ReadLevel: t.GetReadLevel(), + AckLevel: t.GetAckLevel(), + RatePerSecond: t.GetRatePerSecond(), + TaskIDBlock: ToTaskIDBlock(t.TaskIDBlock), + IsolationGroupMetrics: ToIsolationGroupMetricsMap(t.GetIsolationGroupMetrics()), + NewTasksPerSecond: t.GetNewTasksPerSecond(), + } +} + +func FromIsolationGroupMetrics(t *types.IsolationGroupMetrics) *shared.IsolationGroupMetrics { + return &shared.IsolationGroupMetrics{ + NewTasksPerSecond: &t.NewTasksPerSecond, + PollerCount: &t.PollerCount, + } +} + +func ToIsolationGroupMetrics(t *shared.IsolationGroupMetrics) *types.IsolationGroupMetrics { + return &types.IsolationGroupMetrics{ + NewTasksPerSecond: t.GetNewTasksPerSecond(), + PollerCount: t.GetPollerCount(), } } @@ -7199,6 +7217,28 @@ func ToBadBinaryInfoMap(t map[string]*shared.BadBinaryInfo) map[string]*types.Ba return v } +func FromIsolationGroupMetricsMap(t map[string]*types.IsolationGroupMetrics) map[string]*shared.IsolationGroupMetrics { + if t == nil { + return nil + } + v := make(map[string]*shared.IsolationGroupMetrics, len(t)) + for key := range t { + v[key] = FromIsolationGroupMetrics(t[key]) + } + return v +} + +func ToIsolationGroupMetricsMap(t map[string]*shared.IsolationGroupMetrics) map[string]*types.IsolationGroupMetrics { + if t == nil { + return nil + } + v := make(map[string]*types.IsolationGroupMetrics, len(t)) + for key := range t { + v[key] = ToIsolationGroupMetrics(t[key]) + } + return v +} + // FromHistoryArray converts internal History array to thrift func FromHistoryArray(t []*types.History) []*shared.History { if t == nil { diff --git a/common/types/shared.go b/common/types/shared.go index ca1ee42b23c..98afff3d6f0 100644 --- a/common/types/shared.go +++ b/common/types/shared.go @@ -6393,13 +6393,20 @@ func (v *TaskListPartitionMetadata) GetOwnerHostName() (o string) { return } +type IsolationGroupMetrics struct { + NewTasksPerSecond float64 `json:"newTasksPerSecond,omitempty"` + PollerCount int64 `json:"pollerCount,omitempty"` +} + // TaskListStatus is an internal type (TBD...) type TaskListStatus struct { - BacklogCountHint int64 `json:"backlogCountHint,omitempty"` - ReadLevel int64 `json:"readLevel,omitempty"` - AckLevel int64 `json:"ackLevel,omitempty"` - RatePerSecond float64 `json:"ratePerSecond,omitempty"` - TaskIDBlock *TaskIDBlock `json:"taskIDBlock,omitempty"` + BacklogCountHint int64 `json:"backlogCountHint,omitempty"` + ReadLevel int64 `json:"readLevel,omitempty"` + AckLevel int64 `json:"ackLevel,omitempty"` + RatePerSecond float64 `json:"ratePerSecond,omitempty"` + TaskIDBlock *TaskIDBlock `json:"taskIDBlock,omitempty"` + IsolationGroupMetrics map[string]*IsolationGroupMetrics `json:"isolationGroupMetrics,omitempty"` + NewTasksPerSecond float64 `json:"newTasksPerSecond,omitempty"` } // GetBacklogCountHint is an internal getter (TBD...) diff --git a/common/types/testdata/common.go b/common/types/testdata/common.go index b8fd148c637..5a8bddabd25 100644 --- a/common/types/testdata/common.go +++ b/common/types/testdata/common.go @@ -240,6 +240,13 @@ var ( AckLevel: AckLevel, RatePerSecond: RatePerSecond, TaskIDBlock: &TaskIDBlock, + IsolationGroupMetrics: map[string]*types.IsolationGroupMetrics{ + "dca": { + NewTasksPerSecond: 10, + PollerCount: 1, + }, + }, + NewTasksPerSecond: 10, } TaskIDBlock = types.TaskIDBlock{ StartID: 551, diff --git a/go.mod b/go.mod index 370705fe368..8da9b0ef3b4 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( github.com/startreedata/pinot-client-go v0.2.0 // latest release supports pinot v0.12.0 which is also internal version github.com/stretchr/testify v1.9.0 github.com/uber-go/tally v3.3.15+incompatible - github.com/uber/cadence-idl v0.0.0-20241126065313-57bd6876d48f + github.com/uber/cadence-idl v0.0.0-20241230191346-dcfe462b5c9c github.com/uber/ringpop-go v0.8.5 github.com/uber/tchannel-go v1.22.2 github.com/urfave/cli/v2 v2.27.4 diff --git a/go.sum b/go.sum index 093001bcec1..b1fd2ad5839 100644 --- a/go.sum +++ b/go.sum @@ -446,8 +446,8 @@ github.com/uber-go/tally v3.3.12+incompatible/go.mod h1:YDTIBxdXyOU/sCWilKB4bgyu github.com/uber-go/tally v3.3.15+incompatible h1:9hLSgNBP28CjIaDmAuRTq9qV+UZY+9PcvAkXO4nNMwg= github.com/uber-go/tally v3.3.15+incompatible/go.mod h1:YDTIBxdXyOU/sCWilKB4bgyufu1cEi0jdVnRdxvjnmU= github.com/uber/cadence-idl v0.0.0-20211111101836-d6b70b60eb8c/go.mod h1:oyUK7GCNCRHCCyWyzifSzXpVrRYVBbAMHAzF5dXiKws= -github.com/uber/cadence-idl v0.0.0-20241126065313-57bd6876d48f h1:U2nI6IKh80rrueDb2G3wuhCkCHYCsLp9EFBazeTs7Dk= -github.com/uber/cadence-idl v0.0.0-20241126065313-57bd6876d48f/go.mod h1:oyUK7GCNCRHCCyWyzifSzXpVrRYVBbAMHAzF5dXiKws= +github.com/uber/cadence-idl v0.0.0-20241230191346-dcfe462b5c9c h1:uda5vKt0Co2a3EyuLK90Z7zvavwo43HgsR9pHDZ7uag= +github.com/uber/cadence-idl v0.0.0-20241230191346-dcfe462b5c9c/go.mod h1:oyUK7GCNCRHCCyWyzifSzXpVrRYVBbAMHAzF5dXiKws= github.com/uber/jaeger-client-go v2.22.1+incompatible h1:NHcubEkVbahf9t3p75TOCR83gdUHXjRJvjoBh1yACsM= github.com/uber/jaeger-client-go v2.22.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.2.0+incompatible h1:MxZXOiR2JuoANZ3J6DE/U0kSFv/eJ/GfSYVCjK7dyaw= diff --git a/idls b/idls index 57bd6876d48..dcfe462b5c9 160000 --- a/idls +++ b/idls @@ -1 +1 @@ -Subproject commit 57bd6876d48fe25d17d65a4035068366ba1ec174 +Subproject commit dcfe462b5c9c7af11638c21df2e9aa3d415c5350 diff --git a/service/matching/tasklist/task_list_manager.go b/service/matching/tasklist/task_list_manager.go index 8815b2a95eb..d75a535f650 100644 --- a/service/matching/tasklist/task_list_manager.go +++ b/service/matching/tasklist/task_list_manager.go @@ -33,6 +33,7 @@ import ( "sync/atomic" "time" + "golang.org/x/exp/maps" "golang.org/x/sync/errgroup" "github.com/uber/cadence/client/history" @@ -128,7 +129,7 @@ type ( closeCallback func(Manager) throttleRetry *backoff.ThrottleRetry - qpsTracker stats.QPSTracker + qpsTracker stats.QPSTrackerGroup adaptiveScaler AdaptiveScaler partitionConfigLock sync.RWMutex @@ -503,7 +504,11 @@ func (c *taskListManagerImpl) AddTask(ctx context.Context, params AddTaskParams) if params.ForwardedFrom == "" { // request sent by history service c.liveness.MarkAlive() - c.qpsTracker.ReportCounter(1) + if isolationGroup, ok := params.TaskInfo.PartitionConfig[partition.IsolationGroupKey]; ok { + c.qpsTracker.ReportGroup(isolationGroup, 1) + } else { + c.qpsTracker.ReportCounter(1) + } c.scope.UpdateGauge(metrics.EstimatedAddTaskQPSGauge, c.qpsTracker.QPS()) } var syncMatch bool @@ -727,6 +732,15 @@ func (c *taskListManagerImpl) DescribeTaskList(includeTaskListStatus bool) *type // fallback to im-memory backlog, if failed to get count from db backlogCount = c.taskAckManager.GetBacklogCount() } + isolationGroups := c.config.AllIsolationGroups() + pollerCounts := c.getRecentPollersByIsolationGroup() + isolationGroupMetrics := make(map[string]*types.IsolationGroupMetrics, len(isolationGroups)) + for _, group := range isolationGroups { + isolationGroupMetrics[group] = &types.IsolationGroupMetrics{ + NewTasksPerSecond: c.qpsTracker.GroupQPS(group), + PollerCount: int64(pollerCounts[group]), + } + } response.TaskListStatus = &types.TaskListStatus{ ReadLevel: c.taskAckManager.GetReadLevel(), AckLevel: c.taskAckManager.GetAckLevel(), @@ -736,6 +750,8 @@ func (c *taskListManagerImpl) DescribeTaskList(includeTaskListStatus bool) *type StartID: taskIDBlock.start, EndID: taskIDBlock.end, }, + IsolationGroupMetrics: isolationGroupMetrics, + NewTasksPerSecond: c.qpsTracker.QPS(), } return response @@ -910,20 +926,22 @@ func (c *taskListManagerImpl) getIsolationGroupForTask(ctx context.Context, task } func (c *taskListManagerImpl) getPollerIsolationGroups() []string { - groupSet := c.pollerHistory.GetPollerIsolationGroups(c.timeSource.Now().Add(-1 * c.config.TaskIsolationPollerWindow())) - c.outstandingPollsLock.Lock() - for _, poller := range c.outstandingPollsMap { - groupSet[poller.isolationGroup]++ - } - c.outstandingPollsLock.Unlock() - result := make([]string, 0, len(groupSet)) - for k := range groupSet { - result = append(result, k) - } + groupSet := c.getRecentPollersByIsolationGroup() + result := maps.Keys(groupSet) sort.Strings(result) return result } +func (c *taskListManagerImpl) getRecentPollersByIsolationGroup() map[string]int { + counts := c.pollerHistory.GetPollerIsolationGroups(c.timeSource.Now().Add(-1 * c.config.TaskIsolationPollerWindow())) + c.outstandingPollsLock.Lock() + defer c.outstandingPollsLock.Unlock() + for _, p := range c.outstandingPollsMap { + counts[p.isolationGroup]++ + } + return counts +} + func (c *taskListManagerImpl) emitMisconfiguredPartitionMetrics() { if !c.taskListID.IsRoot() || c.taskListKind == types.TaskListKindSticky { // only emit the metric in root partition of non-sticky tasklist diff --git a/service/matching/tasklist/task_list_manager_test.go b/service/matching/tasklist/task_list_manager_test.go index f3e01eb95e6..2d004dba43e 100644 --- a/service/matching/tasklist/task_list_manager_test.go +++ b/service/matching/tasklist/task_list_manager_test.go @@ -50,6 +50,7 @@ import ( "github.com/uber/cadence/common/metrics" "github.com/uber/cadence/common/partition" "github.com/uber/cadence/common/persistence" + "github.com/uber/cadence/common/stats" "github.com/uber/cadence/common/types" "github.com/uber/cadence/service/history/constants" "github.com/uber/cadence/service/matching/config" @@ -65,6 +66,10 @@ type mockDeps struct { dynamicClient dynamicconfig.Client } +var ( + testIsolationGroups = []string{"datacenterA", "datacenterB"} +) + func setupMocksForTaskListManager(t *testing.T, taskListID *Identifier, taskListKind types.TaskListKind) (*taskListManagerImpl, *mockDeps) { ctrl := gomock.NewController(t) dynamicClient := dynamicconfig.NewInMemoryClient() @@ -242,62 +247,143 @@ func createTestTaskListManagerWithConfig(t *testing.T, logger log.Logger, contro } func TestDescribeTaskList(t *testing.T) { - controller := gomock.NewController(t) - logger := testlogger.New(t) - - startTaskID := int64(1) - taskCount := int64(3) - PollerIdentity := "test-poll" - - // Create taskList Manager and set taskList state - tlm := createTestTaskListManager(t, logger, controller) - tlm.db.rangeID = int64(1) - tlm.taskAckManager.SetAckLevel(0) - - for i := int64(0); i < taskCount; i++ { - err := tlm.taskAckManager.ReadItem(startTaskID + i) - assert.Nil(t, err) + // Magic values hardcoded in matching/config.go. Not much of a config :( + defaultRps := 100000.0 + defaultRangeSize := 100000 + startedID := int64(1) + firstIDBlock := &types.TaskIDBlock{ + StartID: startedID, + EndID: int64(defaultRangeSize), } - - includeTaskStatus := false - descResp := tlm.DescribeTaskList(includeTaskStatus) - require.Equal(t, 0, len(descResp.GetPollers())) - require.Nil(t, descResp.GetTaskListStatus()) - - includeTaskStatus = true - taskListStatus := tlm.DescribeTaskList(includeTaskStatus).GetTaskListStatus() - require.NotNil(t, taskListStatus) - require.Zero(t, taskListStatus.GetAckLevel()) - require.Equal(t, taskCount, taskListStatus.GetReadLevel()) - require.Equal(t, int64(0), taskListStatus.GetBacklogCountHint()) - require.InDelta(t, taskListStatus.GetRatePerSecond(), tlm.config.TaskDispatchRPS, 1.0) - taskIDBlock := taskListStatus.GetTaskIDBlock() - require.Equal(t, int64(1), taskIDBlock.GetStartID()) - require.Equal(t, tlm.config.RangeSize, taskIDBlock.GetEndID()) - - // Add a poller and complete all tasks - tlm.pollerHistory.UpdatePollerInfo(poller.Identity(PollerIdentity), poller.Info{RatePerSecond: tlm.config.TaskDispatchRPS}) - for i := int64(0); i < taskCount; i++ { - tlm.taskAckManager.AckItem(startTaskID + i) + cases := []struct { + name string + includeStatus bool + pollers map[string]poller.Info + allowance func(ctrl *gomock.Controller, impl *taskListManagerImpl) + expectedStatus *types.TaskListStatus + expectedConfig *types.TaskListPartitionConfig + }{ + { + name: "no status, pollers, or config", + }, + { + name: "no status, with config", + allowance: func(_ *gomock.Controller, impl *taskListManagerImpl) { + err := impl.RefreshTaskListPartitionConfig(context.Background(), &types.TaskListPartitionConfig{ + Version: 1, + NumReadPartitions: 3, + NumWritePartitions: 2, + }) + require.NoError(t, err) + }, + expectedConfig: &types.TaskListPartitionConfig{ + Version: 1, + NumReadPartitions: 3, + NumWritePartitions: 2, + }, + }, + { + name: "no status, with pollers", + pollers: map[string]poller.Info{ + "pollerID": { + RatePerSecond: 1.0, + IsolationGroup: "a", + }, + }, + }, + { + name: "with status", + includeStatus: true, + expectedStatus: &types.TaskListStatus{ + RatePerSecond: defaultRps, + TaskIDBlock: firstIDBlock, + IsolationGroupMetrics: map[string]*types.IsolationGroupMetrics{ + "datacenterA": {}, + "datacenterB": {}, + }, + }, + }, + { + name: "with status, tasks completed", + includeStatus: true, + allowance: func(_ *gomock.Controller, tlm *taskListManagerImpl) { + tlm.taskAckManager.SetAckLevel(5) + tlm.taskAckManager.SetReadLevel(10) + }, + expectedStatus: &types.TaskListStatus{ + BacklogCountHint: 0, + ReadLevel: 10, + AckLevel: 5, + RatePerSecond: defaultRps, + TaskIDBlock: firstIDBlock, + IsolationGroupMetrics: map[string]*types.IsolationGroupMetrics{ + "datacenterA": {}, + "datacenterB": {}, + }, + }, + }, + { + name: "with status, pollers and metrics", + includeStatus: true, + pollers: map[string]poller.Info{ + "a-1": { + RatePerSecond: 1.0, + IsolationGroup: "datacenterA", + }, + }, + allowance: func(ctrl *gomock.Controller, impl *taskListManagerImpl) { + mockQPS := stats.NewMockQPSTrackerGroup(ctrl) + mockQPS.EXPECT().GroupQPS("datacenterA").Return(float64(75.0)) + mockQPS.EXPECT().GroupQPS("datacenterB").Return(float64(25.0)) + mockQPS.EXPECT().QPS().Return(float64(100.0)) + impl.qpsTracker = mockQPS + impl.matcher.UpdateRatelimit(common.Float64Ptr(1.0)) + }, + expectedStatus: &types.TaskListStatus{ + RatePerSecond: 1.0, // From poller + TaskIDBlock: firstIDBlock, + NewTasksPerSecond: 100, + IsolationGroupMetrics: map[string]*types.IsolationGroupMetrics{ + "datacenterA": { + PollerCount: 1, + NewTasksPerSecond: 75.0, + }, + "datacenterB": { + PollerCount: 0, + NewTasksPerSecond: 25.0, + }, + }, + }, + }, } - descResp = tlm.DescribeTaskList(includeTaskStatus) - require.Equal(t, 1, len(descResp.GetPollers())) - require.Equal(t, PollerIdentity, descResp.Pollers[0].GetIdentity()) - require.NotEmpty(t, descResp.Pollers[0].GetLastAccessTime()) - require.InDelta(t, descResp.Pollers[0].GetRatePerSecond(), tlm.config.TaskDispatchRPS, 1.0) - - rps := 5.0 - tlm.pollerHistory.UpdatePollerInfo(poller.Identity(PollerIdentity), poller.Info{RatePerSecond: rps}) - descResp = tlm.DescribeTaskList(includeTaskStatus) - require.Equal(t, 1, len(descResp.GetPollers())) - require.Equal(t, PollerIdentity, descResp.Pollers[0].GetIdentity()) - require.InDelta(t, descResp.Pollers[0].GetRatePerSecond(), rps, 1.0) - - taskListStatus = descResp.GetTaskListStatus() - require.NotNil(t, taskListStatus) - require.Equal(t, taskCount, taskListStatus.GetAckLevel()) - require.Zero(t, taskListStatus.GetBacklogCountHint()) + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + controller := gomock.NewController(t) + logger := testlogger.New(t) + tlm := createTestTaskListManager(t, logger, controller) + tlm.db.rangeID = int64(1) + tlm.taskAckManager.SetAckLevel(0) + tlm.startWG.Done() + + expectedPollers := make([]*types.PollerInfo, 0, len(tc.pollers)) + for id, info := range tc.pollers { + tlm.pollerHistory.UpdatePollerInfo(poller.Identity(id), info) + expectedPollers = append(expectedPollers, &types.PollerInfo{ + LastAccessTime: common.Int64Ptr(tlm.timeSource.Now().UnixNano()), + Identity: id, + RatePerSecond: info.RatePerSecond, + }) + } + if tc.allowance != nil { + tc.allowance(controller, tlm) + } + result := tlm.DescribeTaskList(tc.includeStatus) + assert.Equal(t, tc.expectedStatus, result.TaskListStatus) + assert.Equal(t, tc.expectedConfig, result.PartitionConfig) + assert.ElementsMatch(t, expectedPollers, result.Pollers) + }) + } } func TestCheckIdleTaskList(t *testing.T) { @@ -1107,7 +1193,7 @@ func TestTaskListManagerImpl_HasPollerAfter(t *testing.T) { } func getIsolationgroupsHelper() []string { - return []string{"datacenterA", "datacenterB"} + return testIsolationGroups } func TestRefreshTaskListPartitionConfig(t *testing.T) {