Skip to content

Commit 9579b09

Browse files
committed
fix extra bug in v2 on message attr size
1 parent 81caa8c commit 9579b09

1 file changed

Lines changed: 14 additions & 11 deletions

File tree

  • dd-java-agent/instrumentation/aws-java-sns-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sns

dd-java-agent/instrumentation/aws-java-sns-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sns/SnsInterceptor.java

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,34 @@ public SdkRequest modifyRequest(
4545
// Injecting the trace context into SNS messageAttributes.
4646
if (context.request() instanceof PublishRequest) {
4747
PublishRequest request = (PublishRequest) context.request();
48-
Map<String, MessageAttributeValue> messageAttributes =
49-
new HashMap<>(request.messageAttributes());
5048
// 10 messageAttributes is a limit from SQS, which is often used as a subscriber, therefore
5149
// the limit still applies here
52-
if (messageAttributes.size() < 10) {
53-
messageAttributes.put(
50+
if (request.messageAttributes().size() < 10) {
51+
Map<String, MessageAttributeValue> modifiedMessageAttributes =
52+
new HashMap<>(request.messageAttributes());
53+
modifiedMessageAttributes.put(
5454
"_datadog", // Use Binary since SNS subscription filter policies fail silently with JSON
5555
// strings https://github.com/DataDog/datadog-lambda-js/pull/269
5656
MessageAttributeValue.builder()
5757
.dataType("Binary")
5858
.binaryValue(this.getMessageAttributeValueToInject(executionAttributes))
5959
.build());
60+
return request.toBuilder().messageAttributes(modifiedMessageAttributes).build();
6061
}
61-
return request.toBuilder().messageAttributes(messageAttributes).build();
62+
return request;
6263
} else if (context.request() instanceof PublishBatchRequest) {
6364
PublishBatchRequest request = (PublishBatchRequest) context.request();
6465
ArrayList<PublishBatchRequestEntry> entries = new ArrayList<>();
6566
final SdkBytes sdkBytes = this.getMessageAttributeValueToInject(executionAttributes);
6667
for (PublishBatchRequestEntry entry : request.publishBatchRequestEntries()) {
67-
Map<String, MessageAttributeValue> messageAttributes =
68-
new HashMap<>(entry.messageAttributes());
69-
messageAttributes.put(
70-
"_datadog",
71-
MessageAttributeValue.builder().dataType("Binary").binaryValue(sdkBytes).build());
72-
entries.add(entry.toBuilder().messageAttributes(messageAttributes).build());
68+
if (entry.messageAttributes().size() < 10) {
69+
Map<String, MessageAttributeValue> modifiedMessageAttributes =
70+
new HashMap<>(entry.messageAttributes());
71+
modifiedMessageAttributes.put(
72+
"_datadog",
73+
MessageAttributeValue.builder().dataType("Binary").binaryValue(sdkBytes).build());
74+
entries.add(entry.toBuilder().messageAttributes(modifiedMessageAttributes).build());
75+
}
7376
}
7477
return request.toBuilder().publishBatchRequestEntries(entries).build();
7578
}

0 commit comments

Comments
 (0)