Skip to content

Commit 575280b

Browse files
committed
refactor(metrics): Make MetricUtils.registry non-nullable
The field is initialized by default to what is essentially a no-op implementation. This allows us to remove boilerplate for handling the null case.
1 parent 33b0bbf commit 575280b

File tree

24 files changed

+150
-246
lines changed

24 files changed

+150
-246
lines changed

datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GraphQLEngine.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,9 @@ private GraphQLEngine(
8787
graphQLQueryComplexityLimit, new DataHubFieldComplexityCalculator()));
8888

8989
if (metricUtils != null && graphQLConfiguration.getMetrics().isEnabled()) {
90-
metricUtils
91-
.getRegistry()
92-
.ifPresent(
93-
meterRegistry ->
94-
instrumentations.add(
95-
new GraphQLTimingInstrumentation(
96-
meterRegistry, graphQLConfiguration.getMetrics())));
90+
instrumentations.add(
91+
new GraphQLTimingInstrumentation(
92+
metricUtils.getRegistry(), graphQLConfiguration.getMetrics()));
9793
}
9894

9995
ChainedInstrumentation chainedInstrumentation = new ChainedInstrumentation(instrumentations);

datahub-graphql-core/src/test/java/com/linkedin/datahub/graphql/GraphQLEngineTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ public void testBuilderWithMultipleDataLoaders() {
284284
public void testMetricsEnabled() {
285285
// Setup metrics
286286
MeterRegistry meterRegistry = new SimpleMeterRegistry();
287-
when(mockMetricUtils.getRegistry()).thenReturn(Optional.of(meterRegistry));
287+
when(mockMetricUtils.getRegistry()).thenReturn(meterRegistry);
288288

289289
// Enable metrics in configuration
290290
GraphQLConfiguration metricsEnabledConfig = createDefaultConfiguration();
@@ -405,7 +405,7 @@ public void testFieldLevelMetricsConfiguration() {
405405
metrics.setTrivialDataFetchersEnabled(true);
406406

407407
MeterRegistry meterRegistry = new SimpleMeterRegistry();
408-
when(mockMetricUtils.getRegistry()).thenReturn(Optional.of(meterRegistry));
408+
when(mockMetricUtils.getRegistry()).thenReturn(meterRegistry);
409409

410410
graphQLEngine =
411411
GraphQLEngine.builder()
@@ -457,7 +457,7 @@ public void testNullMetricUtils() {
457457
@Test
458458
public void testMetricsWithEmptyRegistry() {
459459
// Setup metrics with empty registry
460-
when(mockMetricUtils.getRegistry()).thenReturn(Optional.empty());
460+
when(mockMetricUtils.getRegistry()).thenReturn(new SimpleMeterRegistry());
461461

462462
GraphQLConfiguration metricsEnabledConfig = createDefaultConfiguration();
463463
metricsEnabledConfig.getMetrics().setEnabled(true);

metadata-io/src/main/java/com/linkedin/metadata/timeseries/elastic/ElasticSearchTimeseriesAspectService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public ElasticSearchTimeseriesAspectService(
124124
new ThreadPoolExecutor.CallerRunsPolicy());
125125
if (metricUtils != null) {
126126
MicrometerMetricsRegistry.registerExecutorMetrics(
127-
"timeseries", this.queryPool, metricUtils.getRegistry().orElse(null));
127+
"timeseries", this.queryPool, metricUtils.getRegistry());
128128
}
129129

130130
this.entityRegistry = entityRegistry;

metadata-io/src/test/java/com/linkedin/metadata/system_telemetry/GraphQLTimingInstrumentationTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
3131
import java.util.Collections;
3232
import java.util.Map;
33-
import java.util.Optional;
3433
import java.util.concurrent.CompletableFuture;
3534
import org.mockito.Mock;
3635
import org.mockito.MockitoAnnotations;
@@ -97,7 +96,7 @@ public void setUp() {
9796

9897
// Setup real GraphQL configuration for GraphQLEngine
9998
graphQLConfiguration = createDefaultConfiguration();
100-
when(mockMetricUtils.getRegistry()).thenReturn(Optional.of(meterRegistry));
99+
when(mockMetricUtils.getRegistry()).thenReturn(meterRegistry);
101100
}
102101

103102
@Test

metadata-jobs/common/src/main/java/com/linkedin/metadata/kafka/listener/AbstractKafkaListener.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,13 @@ public void consume(@Nonnull final ConsumerRecord<String, R> consumerRecord) {
6969
// TODO: include priority level when available
7070
metricUtils
7171
.getRegistry()
72-
.ifPresent(
73-
meterRegistry -> {
74-
meterRegistry
75-
.timer(
76-
MetricUtils.KAFKA_MESSAGE_QUEUE_TIME,
77-
"topic",
78-
consumerRecord.topic(),
79-
"consumer.group",
80-
consumerGroupId)
81-
.record(Duration.ofMillis(queueTimeMs));
82-
});
72+
.timer(
73+
MetricUtils.KAFKA_MESSAGE_QUEUE_TIME,
74+
"topic",
75+
consumerRecord.topic(),
76+
"consumer.group",
77+
consumerGroupId)
78+
.record(Duration.ofMillis(queueTimeMs));
8379
});
8480
final R record = consumerRecord.value();
8581
log.debug(

metadata-jobs/mae-consumer/src/main/java/com/linkedin/metadata/kafka/DataHubUsageEventsProcessor.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,13 @@ public void consume(final ConsumerRecord<String, String> consumerRecord) {
7676
// TODO: include priority level when available
7777
metricUtils
7878
.getRegistry()
79-
.ifPresent(
80-
meterRegistry -> {
81-
meterRegistry
82-
.timer(
83-
MetricUtils.KAFKA_MESSAGE_QUEUE_TIME,
84-
"topic",
85-
consumerRecord.topic(),
86-
"consumer.group",
87-
datahubUsageEventConsumerGroupId)
88-
.record(Duration.ofMillis(queueTimeMs));
89-
});
79+
.timer(
80+
MetricUtils.KAFKA_MESSAGE_QUEUE_TIME,
81+
"topic",
82+
consumerRecord.topic(),
83+
"consumer.group",
84+
datahubUsageEventConsumerGroupId)
85+
.record(Duration.ofMillis(queueTimeMs));
9086
});
9187
final String record = consumerRecord.value();
9288

metadata-jobs/mae-consumer/src/main/java/com/linkedin/metadata/kafka/listener/mcl/MCLKafkaListener.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,8 @@ protected void updateMetrics(String hookName, MetadataChangeLog event) {
118118
// request
119119
metricUtils
120120
.getRegistry()
121-
.ifPresent(
122-
meterRegistry -> {
123-
meterRegistry
124-
.timer(MetricUtils.DATAHUB_REQUEST_HOOK_QUEUE_TIME, "hook", hookName)
125-
.record(Duration.ofMillis(queueTimeMs));
126-
});
121+
.timer(MetricUtils.DATAHUB_REQUEST_HOOK_QUEUE_TIME, "hook", hookName)
122+
.record(Duration.ofMillis(queueTimeMs));
127123
}
128124
});
129125
}

metadata-jobs/mae-consumer/src/test/java/com/linkedin/metadata/kafka/DataHubUsageEventsProcessorTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ public void testMicrometerKafkaQueueTimeMetric() {
346346
SimpleMeterRegistry meterRegistry = new SimpleMeterRegistry();
347347

348348
// Configure the mock metricUtils to return the registry
349-
when(metricUtils.getRegistry()).thenReturn(Optional.of(meterRegistry));
349+
when(metricUtils.getRegistry()).thenReturn(meterRegistry);
350350

351351
// Set the consumer group ID via reflection
352352
setConsumerGroupId(processor, "datahub-usage-event-consumer-job-client");
@@ -397,7 +397,7 @@ public void testMicrometerKafkaQueueTimeWithDifferentTopics() {
397397
SimpleMeterRegistry meterRegistry = new SimpleMeterRegistry();
398398

399399
// Configure the mock metricUtils to return the registry
400-
when(metricUtils.getRegistry()).thenReturn(Optional.of(meterRegistry));
400+
when(metricUtils.getRegistry()).thenReturn(meterRegistry);
401401

402402
// Set the consumer group ID
403403
setConsumerGroupId(processor, "datahub-usage-event-consumer-job-client");
@@ -466,7 +466,7 @@ public void testMicrometerMetricsWithFailedTransformation() {
466466
SimpleMeterRegistry meterRegistry = new SimpleMeterRegistry();
467467

468468
// Configure the mock metricUtils to return the registry
469-
when(metricUtils.getRegistry()).thenReturn(Optional.of(meterRegistry));
469+
when(metricUtils.getRegistry()).thenReturn(meterRegistry);
470470

471471
// Set the consumer group ID
472472
setConsumerGroupId(processor, "datahub-usage-event-consumer-job-client");
@@ -507,7 +507,7 @@ public void testMicrometerMetricsWithFailedTransformation() {
507507
@Test
508508
public void testMicrometerMetricsAbsentWhenRegistryNotPresent() {
509509
// Configure the mock metricUtils to return empty Optional (no registry)
510-
when(metricUtils.getRegistry()).thenReturn(Optional.empty());
510+
when(metricUtils.getRegistry()).thenReturn(new SimpleMeterRegistry());
511511

512512
// Set the consumer group ID
513513
setConsumerGroupId(processor, "datahub-usage-event-consumer-job-client");
@@ -541,7 +541,7 @@ public void testMicrometerKafkaQueueTimeWithCustomConsumerGroup() {
541541
SimpleMeterRegistry meterRegistry = new SimpleMeterRegistry();
542542

543543
// Configure the mock metricUtils to return the registry
544-
when(metricUtils.getRegistry()).thenReturn(Optional.of(meterRegistry));
544+
when(metricUtils.getRegistry()).thenReturn(meterRegistry);
545545

546546
// Set a custom consumer group ID
547547
String customConsumerGroup = "custom-usage-event-consumer";
@@ -583,7 +583,7 @@ public void testMicrometerKafkaQueueTimeAccuracy() {
583583
SimpleMeterRegistry meterRegistry = new SimpleMeterRegistry();
584584

585585
// Configure the mock metricUtils to return the registry
586-
when(metricUtils.getRegistry()).thenReturn(Optional.of(meterRegistry));
586+
when(metricUtils.getRegistry()).thenReturn(meterRegistry);
587587

588588
// Set the consumer group ID
589589
setConsumerGroupId(processor, "datahub-usage-event-consumer-job-client");

metadata-jobs/mae-consumer/src/test/java/com/linkedin/metadata/kafka/listener/mcl/MCLKafkaListenerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public void setUp() throws URISyntaxException {
6464

6565
mockSystemMetadata = spy(SystemMetadataUtils.createDefaultSystemMetadata());
6666
meterRegistry = new SimpleMeterRegistry();
67-
when(metricUtils.getRegistry()).thenReturn(Optional.of(meterRegistry));
67+
when(metricUtils.getRegistry()).thenReturn(meterRegistry);
6868

6969
systemOperationContext =
7070
TestOperationContexts.Builder.builder()

metadata-jobs/mce-consumer/src/main/java/com/linkedin/metadata/kafka/MetadataChangeProposalsProcessor.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -93,17 +93,13 @@ public void consume(final ConsumerRecord<String, GenericRecord> consumerRecord)
9393
// TODO: include priority level when available
9494
metricUtils
9595
.getRegistry()
96-
.ifPresent(
97-
meterRegistry -> {
98-
meterRegistry
99-
.timer(
100-
MetricUtils.KAFKA_MESSAGE_QUEUE_TIME,
101-
"topic",
102-
consumerRecord.topic(),
103-
"consumer.group",
104-
mceConsumerGroupId)
105-
.record(Duration.ofMillis(queueTimeMs));
106-
});
96+
.timer(
97+
MetricUtils.KAFKA_MESSAGE_QUEUE_TIME,
98+
"topic",
99+
consumerRecord.topic(),
100+
"consumer.group",
101+
mceConsumerGroupId)
102+
.record(Duration.ofMillis(queueTimeMs));
107103
});
108104
final GenericRecord record = consumerRecord.value();
109105

0 commit comments

Comments
 (0)