Skip to content

Commit 4730be4

Browse files
committed
address metrics context issue
1 parent 240b761 commit 4730be4

File tree

3 files changed

+16
-21
lines changed

3 files changed

+16
-21
lines changed

powertools-metrics/src/main/java/software/amazon/lambda/powertools/metrics/MetricsFactory.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
import org.crac.Core;
1818
import org.crac.Resource;
1919
import software.amazon.lambda.powertools.common.internal.ClassPreLoader;
20+
import software.amazon.lambda.powertools.common.internal.LambdaConstants;
21+
import software.amazon.lambda.powertools.common.internal.LambdaHandlerProcessor;
22+
import software.amazon.lambda.powertools.metrics.model.DimensionSet;
2023
import software.amazon.lambda.powertools.metrics.provider.EmfMetricsProvider;
2124
import software.amazon.lambda.powertools.metrics.provider.MetricsProvider;
2225

@@ -43,6 +46,18 @@ public final class MetricsFactory implements Resource {
4346
public static synchronized Metrics getMetricsInstance() {
4447
if (metrics == null) {
4548
metrics = provider.getMetricsInstance();
49+
50+
// Apply default configuration from environment variables
51+
String envNamespace = System.getenv("POWERTOOLS_METRICS_NAMESPACE");
52+
if (envNamespace != null) {
53+
metrics.setNamespace(envNamespace);
54+
}
55+
56+
// Only set Service dimension if it's not the default undefined value
57+
String serviceName = LambdaHandlerProcessor.serviceName();
58+
if (!LambdaConstants.SERVICE_UNDEFINED.equals(serviceName)) {
59+
metrics.setDefaultDimensions(DimensionSet.of("Service", serviceName));
60+
}
4661
}
4762

4863
return metrics;

powertools-metrics/src/main/java/software/amazon/lambda/powertools/metrics/internal/EmfMetricsLogger.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@
3434
import software.amazon.cloudwatchlogs.emf.model.MetricsContext;
3535
import software.amazon.cloudwatchlogs.emf.model.StorageResolution;
3636
import software.amazon.cloudwatchlogs.emf.model.Unit;
37-
import software.amazon.lambda.powertools.common.internal.LambdaConstants;
38-
import software.amazon.lambda.powertools.common.internal.LambdaHandlerProcessor;
3937
import software.amazon.lambda.powertools.metrics.Metrics;
4038
import software.amazon.lambda.powertools.metrics.model.MetricResolution;
4139
import software.amazon.lambda.powertools.metrics.model.MetricUnit;
@@ -53,7 +51,6 @@ public class EmfMetricsLogger implements Metrics {
5351

5452
private final software.amazon.cloudwatchlogs.emf.logger.MetricsLogger emfLogger;
5553
private final EnvironmentProvider environmentProvider;
56-
private final MetricsContext metricsContext;
5754
private final AtomicBoolean raiseOnEmptyMetrics = new AtomicBoolean(false);
5855
private String namespace;
5956
private Map<String, String> defaultDimensions = new HashMap<>();
@@ -64,19 +61,6 @@ public EmfMetricsLogger(EnvironmentProvider environmentProvider, MetricsContext
6461
this.emfLogger = new software.amazon.cloudwatchlogs.emf.logger.MetricsLogger(environmentProvider,
6562
metricsContext);
6663
this.environmentProvider = environmentProvider;
67-
this.metricsContext = metricsContext;
68-
69-
// Apply default configuration from environment variables
70-
String envNamespace = System.getenv("POWERTOOLS_METRICS_NAMESPACE");
71-
if (envNamespace != null) {
72-
setNamespace(envNamespace);
73-
}
74-
75-
// Only set Service dimension if it's not the default undefined value
76-
String serviceName = LambdaHandlerProcessor.serviceName();
77-
if (!LambdaConstants.SERVICE_UNDEFINED.equals(serviceName)) {
78-
setDefaultDimensions(software.amazon.lambda.powertools.metrics.model.DimensionSet.of("Service", serviceName));
79-
}
8064
}
8165

8266
@Override
@@ -246,7 +230,7 @@ public void flushMetrics(Consumer<Metrics> metricsConsumer) {
246230
return;
247231
}
248232
// Create a new instance, inheriting namespace/dimensions state
249-
EmfMetricsLogger metrics = new EmfMetricsLogger(environmentProvider, metricsContext);
233+
EmfMetricsLogger metrics = new EmfMetricsLogger(environmentProvider, new MetricsContext());
250234
if (namespace != null) {
251235
metrics.setNamespace(this.namespace);
252236
}

spotbugs-exclude.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,6 @@
9090
<And>
9191
<Class name="software.amazon.lambda.powertools.logging.internal.JsonSerializer"/>
9292
</And>
93-
<And>
94-
<Class name="software.amazon.lambda.powertools.metrics.internal.EmfMetricsLogger"/>
95-
<Field name="metricsContext"/>
96-
</And>
9793
</Or>
9894
</Match>
9995
<!-- Internals of Log event for apache log4j-->

0 commit comments

Comments
 (0)