Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove task max retry count config #3771

Merged
merged 3 commits into from
Jan 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 0 additions & 10 deletions common/dynamicconfig/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -387,8 +387,6 @@ const (

// TimerTaskBatchSize is batch size for timer processor to process tasks
TimerTaskBatchSize = "history.timerTaskBatchSize"
// TimerTaskMaxRetryCount is max retry count for timer processor
TimerTaskMaxRetryCount = "history.timerTaskMaxRetryCount"
// TimerProcessorSchedulerWorkerCount is the number of workers in the host level task scheduler for timer processor
TimerProcessorSchedulerWorkerCount = "history.timerProcessorSchedulerWorkerCount"
// TimerProcessorSchedulerActiveRoundRobinWeights is the priority round robin weights used by timer task scheduler for active namespaces
Expand Down Expand Up @@ -430,8 +428,6 @@ const (
TransferProcessorMaxPollRPS = "history.transferProcessorMaxPollRPS"
// TransferProcessorMaxPollHostRPS is max poll rate per second for all transferQueueProcessor on a host
TransferProcessorMaxPollHostRPS = "history.transferProcessorMaxPollHostRPS"
// TransferTaskMaxRetryCount is max times of retry for transferQueueProcessor
TransferTaskMaxRetryCount = "history.transferTaskMaxRetryCount"
// TransferProcessorSchedulerWorkerCount is the number of workers in the host level task scheduler for transferQueueProcessor
TransferProcessorSchedulerWorkerCount = "history.transferProcessorSchedulerWorkerCount"
// TransferProcessorSchedulerActiveRoundRobinWeights is the priority round robin weights used by transfer task scheduler for active namespaces
Expand Down Expand Up @@ -463,8 +459,6 @@ const (
VisibilityProcessorMaxPollRPS = "history.visibilityProcessorMaxPollRPS"
// VisibilityProcessorMaxPollHostRPS is max poll rate per second for all visibilityQueueProcessor on a host
VisibilityProcessorMaxPollHostRPS = "history.visibilityProcessorMaxPollHostRPS"
// VisibilityTaskMaxRetryCount is max times of retry for visibilityQueueProcessor
VisibilityTaskMaxRetryCount = "history.visibilityTaskMaxRetryCount"
// VisibilityProcessorSchedulerWorkerCount is the number of workers in the host level task scheduler for visibilityQueueProcessor
VisibilityProcessorSchedulerWorkerCount = "history.visibilityProcessorSchedulerWorkerCount"
// VisibilityProcessorSchedulerActiveRoundRobinWeights is the priority round robin weights by visibility task scheduler for active namespaces
Expand Down Expand Up @@ -514,8 +508,6 @@ const (
ArchivalProcessorPollBackoffInterval = "history.archivalProcessorPollBackoffInterval"
// ArchivalProcessorArchiveDelay is the delay before archivalQueueProcessor starts to process archival tasks
ArchivalProcessorArchiveDelay = "history.archivalProcessorArchiveDelay"
// ArchivalProcessorRetryWarningLimit is the number of times an archival task may be retried before we log a warning
ArchivalProcessorRetryWarningLimit = "history.archivalProcessorRetryLimitWarning"
// ArchivalBackendMaxRPS is the maximum rate of requests per second to the archival backend
ArchivalBackendMaxRPS = "history.archivalBackendMaxRPS"
// DurableArchivalEnabled is the flag to enable durable archival
Expand All @@ -527,8 +519,6 @@ const (
ReplicatorMaxSkipTaskCount = "history.replicatorMaxSkipTaskCount"
// ReplicatorTaskWorkerCount is number of worker for ReplicatorProcessor
ReplicatorTaskWorkerCount = "history.replicatorTaskWorkerCount"
// ReplicatorTaskMaxRetryCount is max times of retry for ReplicatorProcessor
ReplicatorTaskMaxRetryCount = "history.replicatorTaskMaxRetryCount"
// ReplicatorProcessorMaxPollRPS is max poll rate per second for ReplicatorProcessor
ReplicatorProcessorMaxPollRPS = "history.replicatorProcessorMaxPollRPS"
// ReplicatorProcessorMaxPollInterval is max poll interval for ReplicatorProcessor
Expand Down
1 change: 0 additions & 1 deletion service/history/archival_queue_factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,6 @@ func (f *archivalQueueFactory) newScheduledQueue(shard shard.Context, executor q
CheckpointInterval: f.Config.ArchivalProcessorUpdateAckInterval,
CheckpointIntervalJitterCoefficient: f.Config.ArchivalProcessorUpdateAckIntervalJitterCoefficient,
MaxReaderCount: f.Config.QueueMaxReaderCount,
TaskMaxRetryCount: f.Config.ArchivalProcessorRetryWarningLimit,
},
f.HostReaderRateLimiter,
logger,
Expand Down
1 change: 0 additions & 1 deletion service/history/archival_queue_task_executor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -511,7 +511,6 @@ func TestArchivalQueueTaskExecutor(t *testing.T) {
namespaceRegistry,
nil,
metrics.NoopMetricsHandler,
nil,
)
err := executable.Execute()
if len(p.ExpectedErrorSubstrings) > 0 {
Expand Down
10 changes: 0 additions & 10 deletions service/history/configs/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,6 @@ type Config struct {
// TimerQueueProcessor settings
TimerTaskHighPriorityRPS dynamicconfig.IntPropertyFnWithNamespaceFilter
TimerTaskBatchSize dynamicconfig.IntPropertyFn
TimerTaskMaxRetryCount dynamicconfig.IntPropertyFn
TimerProcessorSchedulerWorkerCount dynamicconfig.IntPropertyFn
TimerProcessorSchedulerActiveRoundRobinWeights dynamicconfig.MapPropertyFnWithNamespaceFilter
TimerProcessorSchedulerStandbyRoundRobinWeights dynamicconfig.MapPropertyFnWithNamespaceFilter
Expand All @@ -119,7 +118,6 @@ type Config struct {
// TransferQueueProcessor settings
TransferTaskHighPriorityRPS dynamicconfig.IntPropertyFnWithNamespaceFilter
TransferTaskBatchSize dynamicconfig.IntPropertyFn
TransferTaskMaxRetryCount dynamicconfig.IntPropertyFn
TransferProcessorSchedulerWorkerCount dynamicconfig.IntPropertyFn
TransferProcessorSchedulerActiveRoundRobinWeights dynamicconfig.MapPropertyFnWithNamespaceFilter
TransferProcessorSchedulerStandbyRoundRobinWeights dynamicconfig.MapPropertyFnWithNamespaceFilter
Expand All @@ -139,7 +137,6 @@ type Config struct {
// TODO: clean up unused replicator settings
ReplicatorTaskBatchSize dynamicconfig.IntPropertyFn
ReplicatorTaskWorkerCount dynamicconfig.IntPropertyFn
ReplicatorTaskMaxRetryCount dynamicconfig.IntPropertyFn
ReplicatorProcessorMaxPollRPS dynamicconfig.IntPropertyFn
ReplicatorProcessorMaxPollInterval dynamicconfig.DurationPropertyFn
ReplicatorProcessorMaxPollIntervalJitterCoefficient dynamicconfig.FloatPropertyFn
Expand Down Expand Up @@ -249,7 +246,6 @@ type Config struct {
// VisibilityQueueProcessor settings
VisibilityTaskHighPriorityRPS dynamicconfig.IntPropertyFnWithNamespaceFilter
VisibilityTaskBatchSize dynamicconfig.IntPropertyFn
VisibilityTaskMaxRetryCount dynamicconfig.IntPropertyFn
VisibilityProcessorSchedulerWorkerCount dynamicconfig.IntPropertyFn
VisibilityProcessorSchedulerActiveRoundRobinWeights dynamicconfig.MapPropertyFnWithNamespaceFilter
VisibilityProcessorSchedulerStandbyRoundRobinWeights dynamicconfig.MapPropertyFnWithNamespaceFilter
Expand Down Expand Up @@ -290,7 +286,6 @@ type Config struct {
ArchivalProcessorUpdateAckInterval dynamicconfig.DurationPropertyFn
ArchivalProcessorUpdateAckIntervalJitterCoefficient dynamicconfig.FloatPropertyFn
ArchivalProcessorArchiveDelay dynamicconfig.DurationPropertyFn
ArchivalProcessorRetryWarningLimit dynamicconfig.IntPropertyFn
ArchivalBackendMaxRPS dynamicconfig.FloatPropertyFn
}

Expand Down Expand Up @@ -350,7 +345,6 @@ func NewConfig(dc *dynamicconfig.Collection, numberOfShards int32, isAdvancedVis
TaskSchedulerNamespaceMaxQPS: dc.GetIntPropertyFilteredByNamespace(dynamicconfig.TaskSchedulerNamespaceMaxQPS, 0),

TimerTaskBatchSize: dc.GetIntProperty(dynamicconfig.TimerTaskBatchSize, 100),
TimerTaskMaxRetryCount: dc.GetIntProperty(dynamicconfig.TimerTaskMaxRetryCount, 20),
TimerProcessorSchedulerWorkerCount: dc.GetIntProperty(dynamicconfig.TimerProcessorSchedulerWorkerCount, 512),
TimerProcessorSchedulerActiveRoundRobinWeights: dc.GetMapPropertyFnWithNamespaceFilter(dynamicconfig.TimerProcessorSchedulerActiveRoundRobinWeights, ConvertWeightsToDynamicConfigValue(DefaultActiveTaskPriorityWeight)),
TimerProcessorSchedulerStandbyRoundRobinWeights: dc.GetMapPropertyFnWithNamespaceFilter(dynamicconfig.TimerProcessorSchedulerStandbyRoundRobinWeights, ConvertWeightsToDynamicConfigValue(DefaultStandbyTaskPriorityWeight)),
Expand All @@ -369,7 +363,6 @@ func NewConfig(dc *dynamicconfig.Collection, numberOfShards int32, isAdvancedVis
RetentionTimerJitterDuration: dc.GetDurationProperty(dynamicconfig.RetentionTimerJitterDuration, 30*time.Minute),

TransferTaskBatchSize: dc.GetIntProperty(dynamicconfig.TransferTaskBatchSize, 100),
TransferTaskMaxRetryCount: dc.GetIntProperty(dynamicconfig.TransferTaskMaxRetryCount, 20),
TransferProcessorSchedulerWorkerCount: dc.GetIntProperty(dynamicconfig.TransferProcessorSchedulerWorkerCount, 512),
TransferProcessorSchedulerActiveRoundRobinWeights: dc.GetMapPropertyFnWithNamespaceFilter(dynamicconfig.TransferProcessorSchedulerActiveRoundRobinWeights, ConvertWeightsToDynamicConfigValue(DefaultActiveTaskPriorityWeight)),
TransferProcessorSchedulerStandbyRoundRobinWeights: dc.GetMapPropertyFnWithNamespaceFilter(dynamicconfig.TransferProcessorSchedulerStandbyRoundRobinWeights, ConvertWeightsToDynamicConfigValue(DefaultStandbyTaskPriorityWeight)),
Expand All @@ -387,7 +380,6 @@ func NewConfig(dc *dynamicconfig.Collection, numberOfShards int32, isAdvancedVis

ReplicatorTaskBatchSize: dc.GetIntProperty(dynamicconfig.ReplicatorTaskBatchSize, 100),
ReplicatorTaskWorkerCount: dc.GetIntProperty(dynamicconfig.ReplicatorTaskWorkerCount, 10),
ReplicatorTaskMaxRetryCount: dc.GetIntProperty(dynamicconfig.ReplicatorTaskMaxRetryCount, 100),
ReplicatorProcessorMaxPollRPS: dc.GetIntProperty(dynamicconfig.ReplicatorProcessorMaxPollRPS, 20),
ReplicatorProcessorMaxPollInterval: dc.GetDurationProperty(dynamicconfig.ReplicatorProcessorMaxPollInterval, 1*time.Minute),
ReplicatorProcessorMaxPollIntervalJitterCoefficient: dc.GetFloat64Property(dynamicconfig.ReplicatorProcessorMaxPollIntervalJitterCoefficient, 0.15),
Expand Down Expand Up @@ -469,7 +461,6 @@ func NewConfig(dc *dynamicconfig.Collection, numberOfShards int32, isAdvancedVis
VisibilityTaskBatchSize: dc.GetIntProperty(dynamicconfig.VisibilityTaskBatchSize, 100),
VisibilityProcessorMaxPollRPS: dc.GetIntProperty(dynamicconfig.VisibilityProcessorMaxPollRPS, 20),
VisibilityProcessorMaxPollHostRPS: dc.GetIntProperty(dynamicconfig.VisibilityProcessorMaxPollHostRPS, 0),
VisibilityTaskMaxRetryCount: dc.GetIntProperty(dynamicconfig.VisibilityTaskMaxRetryCount, 20),
VisibilityProcessorSchedulerWorkerCount: dc.GetIntProperty(dynamicconfig.VisibilityProcessorSchedulerWorkerCount, 512),
VisibilityProcessorSchedulerActiveRoundRobinWeights: dc.GetMapPropertyFnWithNamespaceFilter(dynamicconfig.VisibilityProcessorSchedulerActiveRoundRobinWeights, ConvertWeightsToDynamicConfigValue(DefaultActiveTaskPriorityWeight)),
VisibilityProcessorSchedulerStandbyRoundRobinWeights: dc.GetMapPropertyFnWithNamespaceFilter(dynamicconfig.VisibilityProcessorSchedulerStandbyRoundRobinWeights, ConvertWeightsToDynamicConfigValue(DefaultStandbyTaskPriorityWeight)),
Expand Down Expand Up @@ -514,7 +505,6 @@ func NewConfig(dc *dynamicconfig.Collection, numberOfShards int32, isAdvancedVis
ArchivalProcessorUpdateAckIntervalJitterCoefficient, 0.15),
ArchivalProcessorPollBackoffInterval: dc.GetDurationProperty(dynamicconfig.ArchivalProcessorPollBackoffInterval, 5*time.Second),
ArchivalProcessorArchiveDelay: dc.GetDurationProperty(dynamicconfig.ArchivalProcessorArchiveDelay, 5*time.Minute),
ArchivalProcessorRetryWarningLimit: dc.GetIntProperty(dynamicconfig.ArchivalProcessorRetryWarningLimit, 100),
ArchivalBackendMaxRPS: dc.GetFloat64Property(dynamicconfig.ArchivalBackendMaxRPS, 10000.0),
}

Expand Down
11 changes: 5 additions & 6 deletions service/history/queues/executable.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ import (
"go.temporal.io/server/common"
"go.temporal.io/server/common/backoff"
"go.temporal.io/server/common/clock"
"go.temporal.io/server/common/dynamicconfig"
"go.temporal.io/server/common/headers"
"go.temporal.io/server/common/log"
"go.temporal.io/server/common/log/tag"
Expand Down Expand Up @@ -90,6 +89,9 @@ const (
// resourceExhaustedResubmitMaxAttempts is the same as resubmitMaxAttempts but only applies to resource
// exhausted error
resourceExhaustedResubmitMaxAttempts = 1
// taskCriticalLogMetricAttempts, if exceeded, task attempts metrics and critical processing error log will be emitted
// while task is retrying
taskCriticalLogMetricAttempts = 30
)

type (
Expand Down Expand Up @@ -118,7 +120,6 @@ type (
logger log.Logger
metricsHandler metrics.Handler
taggedMetricsHandler metrics.Handler
criticalRetryAttempt dynamicconfig.IntPropertyFn
}
)

Expand All @@ -136,7 +137,6 @@ func NewExecutable(
namespaceRegistry namespace.Registry,
logger log.Logger,
metricsHandler metrics.Handler,
criticalRetryAttempt dynamicconfig.IntPropertyFn,
) Executable {
executable := &executableImpl{
Task: task,
Expand All @@ -158,7 +158,6 @@ func NewExecutable(
),
metricsHandler: metricsHandler,
taggedMetricsHandler: metricsHandler,
criticalRetryAttempt: criticalRetryAttempt,
}
executable.updatePriority()
return executable
Expand Down Expand Up @@ -209,9 +208,9 @@ func (e *executableImpl) HandleErr(err error) (retErr error) {
defer e.Unlock()

e.attempt++
if e.attempt > e.criticalRetryAttempt() {
if e.attempt > taskCriticalLogMetricAttempts {
e.taggedMetricsHandler.Histogram(metrics.TaskAttempt.GetMetricName(), metrics.TaskAttempt.GetMetricUnit()).Record(int64(e.attempt))
e.logger.Error("Critical error processing task, retrying.", tag.Error(err), tag.OperationCritical)
e.logger.Error("Critical error processing task, retrying.", tag.Attempt(int32(e.attempt)), tag.Error(err), tag.OperationCritical)
}
}
}()
Expand Down
2 changes: 0 additions & 2 deletions service/history/queues/executable_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ import (

"go.temporal.io/server/common/clock"
"go.temporal.io/server/common/definition"
"go.temporal.io/server/common/dynamicconfig"
"go.temporal.io/server/common/log"
"go.temporal.io/server/common/metrics"
"go.temporal.io/server/common/namespace"
Expand Down Expand Up @@ -222,6 +221,5 @@ func (s *executableSuite) newTestExecutable() Executable {
s.mockNamespaceRegistry,
log.NewTestLogger(),
metrics.NoopMetricsHandler,
dynamicconfig.GetIntPropertyFn(100),
)
}
2 changes: 0 additions & 2 deletions service/history/queues/queue_base.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,6 @@ type (
CheckpointInterval dynamicconfig.DurationPropertyFn
CheckpointIntervalJitterCoefficient dynamicconfig.FloatPropertyFn
MaxReaderCount dynamicconfig.IntPropertyFn
TaskMaxRetryCount dynamicconfig.IntPropertyFn
}
)

Expand Down Expand Up @@ -167,7 +166,6 @@ func newQueueBase(
shard.GetNamespaceRegistry(),
logger,
metricsHandler,
options.TaskMaxRetryCount,
)
}

Expand Down
1 change: 0 additions & 1 deletion service/history/queues/queue_base_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,6 @@ var testQueueOptions = &Options{
CheckpointInterval: dynamicconfig.GetDurationPropertyFn(100 * time.Millisecond),
CheckpointIntervalJitterCoefficient: dynamicconfig.GetFloatPropertyFn(0.15),
MaxReaderCount: dynamicconfig.GetIntPropertyFn(5),
TaskMaxRetryCount: dynamicconfig.GetIntPropertyFn(100),
}

func TestQueueBaseSuite(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion service/history/queues/reader_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ func (s *readerSuite) SetupTest() {
s.metricsHandler = metrics.NoopMetricsHandler

s.executableInitializer = func(readerID int32, t tasks.Task) Executable {
return NewExecutable(readerID, t, nil, nil, nil, NewNoopPriorityAssigner(), clock.NewRealTimeSource(), nil, nil, metrics.NoopMetricsHandler, nil)
return NewExecutable(readerID, t, nil, nil, nil, NewNoopPriorityAssigner(), clock.NewRealTimeSource(), nil, nil, metrics.NoopMetricsHandler)
}
s.monitor = newMonitor(tasks.CategoryTypeScheduled, &MonitorOptions{
PendingTasksCriticalCount: dynamicconfig.GetIntPropertyFn(1000),
Expand Down
2 changes: 1 addition & 1 deletion service/history/queues/slice_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ func (s *sliceSuite) SetupTest() {
s.controller = gomock.NewController(s.T())

s.executableInitializer = func(readerID int32, t tasks.Task) Executable {
return NewExecutable(readerID, t, nil, nil, nil, NewNoopPriorityAssigner(), clock.NewRealTimeSource(), nil, nil, metrics.NoopMetricsHandler, nil)
return NewExecutable(readerID, t, nil, nil, nil, NewNoopPriorityAssigner(), clock.NewRealTimeSource(), nil, nil, metrics.NoopMetricsHandler)
}
s.monitor = newMonitor(tasks.CategoryTypeScheduled, &MonitorOptions{
PendingTasksCriticalCount: dynamicconfig.GetIntPropertyFn(1000),
Expand Down
1 change: 0 additions & 1 deletion service/history/timerQueueActiveTaskExecutor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1482,6 +1482,5 @@ func (s *timerQueueActiveTaskExecutorSuite) newTaskExecutable(
nil,
nil,
metrics.NoopMetricsHandler,
nil,
)
}
1 change: 0 additions & 1 deletion service/history/timerQueueFactory.go
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,6 @@ func (f *timerQueueFactory) CreateQueue(
CheckpointInterval: f.Config.TimerProcessorUpdateAckInterval,
CheckpointIntervalJitterCoefficient: f.Config.TimerProcessorUpdateAckIntervalJitterCoefficient,
MaxReaderCount: f.Config.QueueMaxReaderCount,
TaskMaxRetryCount: f.Config.TimerTaskMaxRetryCount,
},
f.HostReaderRateLimiter,
logger,
Expand Down
1 change: 0 additions & 1 deletion service/history/timerQueueStandbyTaskExecutor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1545,6 +1545,5 @@ func (s *timerQueueStandbyTaskExecutorSuite) newTaskExecutable(
nil,
nil,
metrics.NoopMetricsHandler,
nil,
)
}
1 change: 0 additions & 1 deletion service/history/transferQueueActiveTaskExecutor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2805,6 +2805,5 @@ func (s *transferQueueActiveTaskExecutorSuite) newTaskExecutable(
nil,
nil,
metrics.NoopMetricsHandler,
nil,
)
}
1 change: 0 additions & 1 deletion service/history/transferQueueFactory.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,6 @@ func (f *transferQueueFactory) CreateQueue(
CheckpointInterval: f.Config.TransferProcessorUpdateAckInterval,
CheckpointIntervalJitterCoefficient: f.Config.TransferProcessorUpdateAckIntervalJitterCoefficient,
MaxReaderCount: f.Config.QueueMaxReaderCount,
TaskMaxRetryCount: f.Config.TransferTaskMaxRetryCount,
},
f.HostReaderRateLimiter,
logger,
Expand Down
1 change: 0 additions & 1 deletion service/history/transferQueueStandbyTaskExecutor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1303,6 +1303,5 @@ func (s *transferQueueStandbyTaskExecutorSuite) newTaskExecutable(
nil,
nil,
metrics.NoopMetricsHandler,
nil,
)
}
1 change: 0 additions & 1 deletion service/history/visibilityQueueFactory.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,6 @@ func (f *visibilityQueueFactory) CreateQueue(
CheckpointInterval: f.Config.VisibilityProcessorUpdateAckInterval,
CheckpointIntervalJitterCoefficient: f.Config.VisibilityProcessorUpdateAckIntervalJitterCoefficient,
MaxReaderCount: f.Config.QueueMaxReaderCount,
TaskMaxRetryCount: f.Config.VisibilityTaskMaxRetryCount,
},
f.HostReaderRateLimiter,
logger,
Expand Down
1 change: 0 additions & 1 deletion service/history/visibilityQueueTaskExecutor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -641,6 +641,5 @@ func (s *visibilityQueueTaskExecutorSuite) newTaskExecutable(
nil,
nil,
metrics.NoopMetricsHandler,
nil,
)
}