From e5dfa13d5b04bbc2cc83af3936014a493f3658d1 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Fri, 18 Sep 2026 11:31:28 +0200 Subject: [PATCH 1/2] Reduce SQS propagation attribute formatting overhead --- .../aws/v1/sqs/MessageAttributeInjector.java | 11 +++++++++-- .../aws/v2/sqs/MessageAttributeInjector.java | 11 +++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java index f1b3861e670..2dcf8cefe4f 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java @@ -28,7 +28,7 @@ public void set( DATADOG_KEY, new MessageAttributeValue() .withDataType("String") - .withStringValue(String.format("{\"%s\": \"%s\"}", key, value))); + .withStringValue("{\"" + key + "\": \"" + value + "\"}")); } else { // _datadog was created by an earlier set() call in this same inject session; append to it. String existing = carrier.get(DATADOG_KEY).getStringValue(); @@ -38,7 +38,14 @@ public void set( int closingBrace = existing.lastIndexOf('}'); if (closingBrace >= 0) { String updated = - existing.substring(0, closingBrace) + String.format(", \"%s\": \"%s\"}", key, value); + new StringBuilder() + .append(existing, 0, closingBrace) + .append(", \"") + .append(key) + .append("\": \"") + .append(value) + .append("\"}") + .toString(); carrier.put( DATADOG_KEY, new MessageAttributeValue().withDataType("String").withStringValue(updated)); diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java index 59dfb4f9e74..a8705af6a45 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java @@ -30,7 +30,7 @@ public void set( DATADOG_KEY, MessageAttributeValue.builder() .dataType("String") - .stringValue(String.format("{\"%s\": \"%s\"}", key, value)) + .stringValue("{\"" + key + "\": \"" + value + "\"}") .build()); } else { // _datadog was created by an earlier set() call in this same inject session; append to it. @@ -41,7 +41,14 @@ public void set( int closingBrace = existing.lastIndexOf('}'); if (closingBrace >= 0) { String updated = - existing.substring(0, closingBrace) + String.format(", \"%s\": \"%s\"}", key, value); + new StringBuilder() + .append(existing, 0, closingBrace) + .append(", \"") + .append(key) + .append("\": \"") + .append(value) + .append("\"}") + .toString(); carrier.put( DATADOG_KEY, MessageAttributeValue.builder().dataType("String").stringValue(updated).build()); From 5f3bb8c17906edb673a4e9a0173e3ed3ff807f20 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Mon, 21 Sep 2026 09:06:59 +0200 Subject: [PATCH 2/2] Pre-size StringBuilders --- .../aws/v1/sqs/MessageAttributeInjector.java | 6 +++++- .../aws/v2/sqs/MessageAttributeInjector.java | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java index 2dcf8cefe4f..9e85f11b63c 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java @@ -38,7 +38,11 @@ public void set( int closingBrace = existing.lastIndexOf('}'); if (closingBrace >= 0) { String updated = - new StringBuilder() + new StringBuilder( + closingBrace + + String.valueOf(key).length() + + String.valueOf(value).length() + + 9) .append(existing, 0, closingBrace) .append(", \"") .append(key) diff --git a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java index a8705af6a45..144e29cfbba 100644 --- a/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java +++ b/dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java @@ -41,7 +41,11 @@ public void set( int closingBrace = existing.lastIndexOf('}'); if (closingBrace >= 0) { String updated = - new StringBuilder() + new StringBuilder( + closingBrace + + String.valueOf(key).length() + + String.valueOf(value).length() + + 9) .append(existing, 0, closingBrace) .append(", \"") .append(key)