From 4fcbf3cd34026e232c9fdd30a319cc9671c7e772 Mon Sep 17 00:00:00 2001 From: Philipp Page Date: Mon, 16 Jun 2025 10:28:14 +0200 Subject: [PATCH 1/2] fix(metrics): Do not flush when no metrics were added to avoid printing root-level _aws dict. --- .../lambda/powertools/metrics/internal/EmfMetricsLogger.java | 3 ++- .../powertools/metrics/internal/EmfMetricsLoggerTest.java | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/powertools-metrics/src/main/java/software/amazon/lambda/powertools/metrics/internal/EmfMetricsLogger.java b/powertools-metrics/src/main/java/software/amazon/lambda/powertools/metrics/internal/EmfMetricsLogger.java index a55e1da5a..1eedd270d 100644 --- a/powertools-metrics/src/main/java/software/amazon/lambda/powertools/metrics/internal/EmfMetricsLogger.java +++ b/powertools-metrics/src/main/java/software/amazon/lambda/powertools/metrics/internal/EmfMetricsLogger.java @@ -164,8 +164,9 @@ public void flush() { } else { LOGGER.warn("No metrics were emitted"); } + } else { + emfLogger.flush(); } - emfLogger.flush(); } @Override diff --git a/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/internal/EmfMetricsLoggerTest.java b/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/internal/EmfMetricsLoggerTest.java index 1b7106ece..1bd2c67e5 100644 --- a/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/internal/EmfMetricsLoggerTest.java +++ b/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/internal/EmfMetricsLoggerTest.java @@ -348,6 +348,8 @@ void shouldLogWarningOnEmptyMetrics() throws Exception { // Read the log file and check for the warning String logContent = new String(Files.readAllBytes(logFile.toPath()), StandardCharsets.UTF_8); assertThat(logContent).contains("No metrics were emitted"); + // No EMF output should be generated + assertThat(outputStreamCaptor.toString().trim()).isEmpty(); } @Test From 3b035d9f3a03a379205aec189d79d894266e6299 Mon Sep 17 00:00:00 2001 From: Philipp Page Date: Mon, 16 Jun 2025 16:51:52 +0200 Subject: [PATCH 2/2] Fix pmd linting failures. --- .../powertools/metrics/internal/EmfMetricsLoggerTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/internal/EmfMetricsLoggerTest.java b/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/internal/EmfMetricsLoggerTest.java index 1bd2c67e5..a4fc0d61c 100644 --- a/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/internal/EmfMetricsLoggerTest.java +++ b/powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/internal/EmfMetricsLoggerTest.java @@ -51,7 +51,7 @@ class EmfMetricsLoggerTest { private Metrics metrics; private final ObjectMapper objectMapper = new ObjectMapper(); - private final PrintStream standardOut = System.out; + private static final PrintStream standardOut = System.out; private final ByteArrayOutputStream outputStreamCaptor = new ByteArrayOutputStream(); @BeforeEach @@ -180,7 +180,7 @@ void shouldAddDimension() throws Exception { JsonNode dimensions = rootNode.get("_aws").get("CloudWatchMetrics").get(0).get("Dimensions").get(0); boolean hasDimension = false; for (JsonNode dimension : dimensions) { - if (dimension.asText().equals("CustomDimension")) { + if ("CustomDimension".equals(dimension.asText())) { hasDimension = true; break; } @@ -233,9 +233,9 @@ void shouldAddDimensionSet() throws Exception { boolean hasDim2 = false; for (JsonNode dimension : dimensions) { String dimName = dimension.asText(); - if (dimName.equals("Dim1")) { + if ("Dim1".equals(dimName)) { hasDim1 = true; - } else if (dimName.equals("Dim2")) { + } else if ("Dim2".equals(dimName)) { hasDim2 = true; } }