Skip to content

Commit b04b404

Browse files
committed
Fix AWS Payload Tagging prefix generation related to SdkPojo.
1 parent f49ac98 commit b04b404

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed

dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import datadog.trace.payloadtags.PayloadTagsData;
2828
import java.net.URI;
2929
import java.time.Instant;
30-
import java.util.ArrayDeque;
3130
import java.util.ArrayList;
3231
import java.util.Collection;
3332
import java.util.Collections;
@@ -461,7 +460,7 @@ protected String getResponseHeader(SdkHttpResponse response, String headerName)
461460

462461
private void awsPojoToTags(AgentSpan span, String tagsPrefix, Object pojo) {
463462
Collection<PayloadTagsData.PathAndValue> payloadTagsData = new ArrayList<>();
464-
ArrayDeque<Object> path = new ArrayDeque<>();
463+
ArrayList<Object> path = new ArrayList<>();
465464
collectPayloadTagsData(payloadTagsData, path, pojo);
466465
span.setTag(
467466
tagsPrefix,
@@ -470,30 +469,30 @@ private void awsPojoToTags(AgentSpan span, String tagsPrefix, Object pojo) {
470469

471470
private void collectPayloadTagsData(
472471
Collection<PayloadTagsData.PathAndValue> payloadTagsData,
473-
ArrayDeque<Object> path,
472+
ArrayList<Object> path,
474473
Object object) {
475474
if (object instanceof SdkPojo) {
476475
SdkPojo pojo = (SdkPojo) object;
477476
for (SdkField<?> field : pojo.sdkFields()) {
478477
Object val = field.getValueOrDefault(pojo);
479-
path.push(field.locationName());
478+
path.add(field.locationName());
480479
collectPayloadTagsData(payloadTagsData, path, val);
481-
path.pop();
480+
path.remove(path.size() - 1);
482481
}
483482
} else if (object instanceof Collection) {
484483
int index = 0;
485484
for (Object value : (Collection<?>) object) {
486-
path.push(index);
485+
path.add(index);
487486
collectPayloadTagsData(payloadTagsData, path, value);
488-
path.pop();
487+
path.remove(path.size() - 1);
489488
index++;
490489
}
491490
} else if (object instanceof Map) {
492491
Map<?, ?> map = (Map<?, ?>) object;
493492
for (Map.Entry<?, ?> entry : map.entrySet()) {
494-
path.push(entry.getKey().toString());
493+
path.add(entry.getKey().toString());
495494
collectPayloadTagsData(payloadTagsData, path, entry.getValue());
496-
path.pop();
495+
path.remove(path.size() - 1);
497496
}
498497
} else if (object instanceof SdkBytes) {
499498
SdkBytes bytes = (SdkBytes) object;

dd-java-agent/instrumentation/aws-java-sdk-2.2/src/payloadTaggingTest/groovy/PayloadTaggingTest.groovy

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ class PayloadTaggingRedactionForkedTest extends AbstractPayloadTaggingTest {
114114
@Override
115115
protected void configurePreAgent() {
116116
super.configurePreAgent()
117-
def redactTopLevelTags = "\$.*,\$.DisplayName.Owner"
117+
def redactTopLevelTags = "\$.*,\$.Owner.DisplayName"
118118
injectSysConfig(TracerConfig.TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING, redactTopLevelTags)
119119
injectSysConfig(TracerConfig.TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING, redactTopLevelTags)
120120
}
@@ -171,7 +171,7 @@ class PayloadTaggingRedactionForkedTest extends AbstractPayloadTaggingTest {
171171
}
172172
}
173173
"Kinesis" | NA | "ShardLimit" | { kinesisClient.describeLimits() }
174-
"S3" | NA | "DisplayName.Owner" | { s3Client.listBuckets() }
174+
"S3" | NA | "Owner.DisplayName" | { s3Client.listBuckets() }
175175
}
176176
}
177177

@@ -215,7 +215,7 @@ class PayloadTaggingExpansionForkedTest extends AbstractPayloadTaggingTest {
215215
.message('{ "sms": "sms text", "default": "default text" }')
216216
}
217217
}
218-
"Key.0.Tags" | "foo" | {
218+
"Tags.0.Key" | "foo" | {
219219
snsClient.createTopic {
220220
it.name("testtopic")
221221
.tags(Tag.builder().key("foo").value("bar").build(), Tag.builder().key("t").value("1").build())
@@ -224,17 +224,17 @@ class PayloadTaggingExpansionForkedTest extends AbstractPayloadTaggingTest {
224224
"nextToken" | null | {
225225
snsClient.listPhoneNumbersOptedOut()
226226
}
227-
"DefaultSMSType.attributes" | "bar" | {
227+
"attributes.DefaultSMSType" | "bar" | {
228228
snsClient.setSMSAttributes { it.attributes(["DefaultSenderID": "foo", "DefaultSMSType": "bar"]) }
229229
}
230-
"BinaryValue.foo\\.bar.MessageAttributes.abc\\.def" | 42 | {
230+
"MessageAttributes.foo\\.bar.BinaryValue.abc\\.def" | 42 | {
231231
snsClient.publish {
232232
it.phoneNumber("+15555555555").message("testmessage")
233233
.messageAttributes(["foo.bar": snsBinaryAttribute('{"abc.def": 42}')
234234
])
235235
}
236236
}
237-
"BinaryValue.foo\\.bar.MessageAttributes" | "<binary>" | {
237+
"MessageAttributes.foo\\.bar.BinaryValue" | "<binary>" | {
238238
snsClient.publish {
239239
it.phoneNumber("+15555555555").message("testmessage").messageAttributes(["foo.bar": snsBinaryAttribute('{"invalid json: 42}')])
240240
}

0 commit comments

Comments
 (0)