From 2d17853c31304a449a62070d4e49af2d6d474fde Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Wed, 3 Jun 2026 18:49:39 +0200 Subject: [PATCH 1/2] Don't add empty headers on lambda completion --- .../java/datadog/trace/lambda/LambdaHandler.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java b/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java index c5f47f6554e..bb6f3e13138 100644 --- a/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java +++ b/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java @@ -9,6 +9,7 @@ import datadog.trace.api.DDTags; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; +import datadog.trace.util.Strings; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.nio.charset.StandardCharsets; @@ -122,12 +123,18 @@ public static boolean notifyEndInvocation( Object errorMessage = span.getTag(DDTags.ERROR_MSG); if (errorMessage != null) { - builder.addHeader(DATADOG_INVOCATION_ERROR_MSG, errorMessage.toString()); + final String errorMessageString = errorMessage.toString(); + if (Strings.isNotBlank(errorMessageString)) { + builder.addHeader(DATADOG_INVOCATION_ERROR_MSG, errorMessage.toString()); + } } Object errorType = span.getTag(DDTags.ERROR_TYPE); if (errorType != null) { - builder.addHeader(DATADOG_INVOCATION_ERROR_TYPE, errorType.toString()); + final String errorTypeString = errorType.toString(); + if (Strings.isNotBlank(errorTypeString)) { + builder.addHeader(DATADOG_INVOCATION_ERROR_TYPE, errorType.toString()); + } } Object errorStack = span.getTag(DDTags.ERROR_STACK); @@ -135,7 +142,9 @@ public static boolean notifyEndInvocation( String encodedErrStack = Base64.getEncoder() .encodeToString(errorStack.toString().getBytes(StandardCharsets.UTF_8)); - builder.addHeader(DATADOG_INVOCATION_ERROR_STACK, encodedErrStack); + if (Strings.isNotBlank(encodedErrStack)) { + builder.addHeader(DATADOG_INVOCATION_ERROR_STACK, encodedErrStack); + } } if (isError) { From 829151a0b7156ec538917787be7d67ab62da30d4 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Thu, 4 Jun 2026 08:52:28 +0200 Subject: [PATCH 2/2] refactor --- .../datadog/trace/lambda/LambdaHandler.java | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java b/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java index bb6f3e13138..7e693ed82c8 100644 --- a/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java +++ b/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java @@ -121,21 +121,8 @@ public static boolean notifyEndInvocation( .addHeader(LAMBDA_RUNTIME_AWS_REQUEST_ID, lambdaRequestId) .post(body); - Object errorMessage = span.getTag(DDTags.ERROR_MSG); - if (errorMessage != null) { - final String errorMessageString = errorMessage.toString(); - if (Strings.isNotBlank(errorMessageString)) { - builder.addHeader(DATADOG_INVOCATION_ERROR_MSG, errorMessage.toString()); - } - } - - Object errorType = span.getTag(DDTags.ERROR_TYPE); - if (errorType != null) { - final String errorTypeString = errorType.toString(); - if (Strings.isNotBlank(errorTypeString)) { - builder.addHeader(DATADOG_INVOCATION_ERROR_TYPE, errorType.toString()); - } - } + addHeaderIfValid(builder, DATADOG_INVOCATION_ERROR_MSG, span.getTag(DDTags.ERROR_MSG)); + addHeaderIfValid(builder, DATADOG_INVOCATION_ERROR_TYPE, span.getTag(DDTags.ERROR_TYPE)); Object errorStack = span.getTag(DDTags.ERROR_STACK); if (errorStack != null) { @@ -174,6 +161,15 @@ public static String writeValueAsString(Object obj) { return json; } + private static void addHeaderIfValid(Request.Builder builder, String name, Object value) { + if (value != null) { + final String stringValue = value.toString(); + if (Strings.isNotBlank(stringValue)) { + builder.addHeader(name, stringValue); + } + } + } + public static void setExtensionBaseUrl(String extensionBaseUrl) { EXTENSION_BASE_URL = extensionBaseUrl; }