Skip to content

Commit c43a8c3

Browse files
rkannan82claude
andcommitted
Suppress per-task-queue metrics for /temporal-sys/ internal queues
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 795b33c commit c43a8c3

2 files changed

Lines changed: 53 additions & 8 deletions

File tree

service/matching/matching_engine.go

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -545,14 +545,19 @@ func (e *matchingEngineImpl) loggerAndMetricsForPartition(
545545
tag.WorkflowTaskQueueName(partition.RpcName()),
546546
tag.WorkflowTaskQueueType(partition.TaskType()),
547547
tag.WorkflowNamespace(nsName))
548-
metricsHandler := metrics.GetPerTaskQueuePartitionIDScope(
549-
e.metricsHandler,
550-
nsName,
551-
partition,
552-
tqConfig.BreakdownMetricsByTaskQueue(),
553-
tqConfig.BreakdownMetricsByPartition(),
554-
metrics.OperationTag(metrics.MatchingTaskQueuePartitionManagerScope),
555-
).WithTags(metrics.NamespaceStateTag(nsState))
548+
var metricsHandler metrics.Handler
549+
if strings.HasPrefix(partition.TaskQueue().Name(), internalTaskQueuePrefix) {
550+
metricsHandler = metrics.NoopMetricsHandler
551+
} else {
552+
metricsHandler = metrics.GetPerTaskQueuePartitionIDScope(
553+
e.metricsHandler,
554+
nsName,
555+
partition,
556+
tqConfig.BreakdownMetricsByTaskQueue(),
557+
tqConfig.BreakdownMetricsByPartition(),
558+
metrics.OperationTag(metrics.MatchingTaskQueuePartitionManagerScope),
559+
).WithTags(metrics.NamespaceStateTag(nsState))
560+
}
556561
return logger, throttledLogger, metricsHandler
557562
}
558563

service/matching/matching_engine_test.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5223,6 +5223,46 @@ func (*testTaskManager) CountTaskQueuesByBuildId(context.Context, *persistence.C
52235223
return 0, nil
52245224
}
52255225

5226+
func TestLoggerAndMetricsForPartition_InternalTaskQueue(t *testing.T) {
5227+
t.Parallel()
5228+
5229+
controller := gomock.NewController(t)
5230+
ns, mockNamespaceCache := createMockNamespaceCache(controller, matchingTestNamespace)
5231+
config := defaultTestConfig()
5232+
e := createTestMatchingEngine(log.NewTestLogger(), controller, config, nil, mockNamespaceCache)
5233+
e.metricsHandler = metricstest.NewCaptureHandler()
5234+
5235+
tests := []struct {
5236+
name string
5237+
tqName string
5238+
expectNoop bool
5239+
}{
5240+
{
5241+
name: "normal task queue gets real metrics handler",
5242+
tqName: "my-task-queue",
5243+
expectNoop: false,
5244+
},
5245+
{
5246+
name: "internal nexus task queue gets noop metrics handler",
5247+
tqName: "/temporal-sys/worker-commands/ns/key",
5248+
expectNoop: true,
5249+
},
5250+
}
5251+
5252+
for _, tc := range tests {
5253+
t.Run(tc.name, func(t *testing.T) {
5254+
prtn := newRootPartition(ns.ID().String(), tc.tqName, enumspb.TASK_QUEUE_TYPE_NEXUS)
5255+
tqConfig := newTaskQueueConfig(prtn.TaskQueue(), config, matchingTestNamespace)
5256+
_, _, handler := e.loggerAndMetricsForPartition(ns, prtn, tqConfig)
5257+
if tc.expectNoop {
5258+
assert.Equal(t, metrics.NoopMetricsHandler, handler)
5259+
} else {
5260+
assert.NotEqual(t, metrics.NoopMetricsHandler, handler)
5261+
}
5262+
})
5263+
}
5264+
}
5265+
52265266
func TestConvertPollWorkflowTaskQueueResponse(t *testing.T) {
52275267
t.Parallel()
52285268

0 commit comments

Comments
 (0)