Skip to content

Commit e82c8b5

Browse files
authored
DSM optimizations - major refactoring to get rid of LinkedHashMap (#9151)
* DSM optimizations - major refactoring to get rid of LinkedHashMap * Refactored DSM tags for all integrations * Removed tests which no longer needed * Fixed some more tests * Fixed payload writer tests * Fixed http tests * Removed DataStreamsTagsBuilder, updated all integraions and tests * Spotless apply * Fixed more tests * Add base hash support and service name overrides * Fixed more tests * Spotless apply * Added tests for tags * Improved coverage * Removed unused imports * Fixed even more tests * Updated multiple tests * Fixed more tests * Spotless apply * Fixed even more tests * Fixed http tests, improved test coverage * Spotless apply * One more refactoring * Some fixes in tests * Improved test coverage * Spotless apply * Removed unused import * Fixed all tags * Fixed kafka tests
1 parent 3e129d3 commit e82c8b5

File tree

70 files changed

+1448
-1321
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+1448
-1321
lines changed

dd-java-agent/instrumentation/armeria/armeria-grpc-0.84/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/GrpcClientDecorator.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
import static datadog.context.propagation.Propagators.defaultPropagator;
44
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
55
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.traceConfig;
6-
import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_OUT;
7-
import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG;
8-
import static datadog.trace.core.datastreams.TagsProcessor.TYPE_TAG;
96

107
import datadog.context.Context;
118
import datadog.context.propagation.CarrierSetter;
@@ -14,6 +11,7 @@
1411
import datadog.trace.api.cache.DDCache;
1512
import datadog.trace.api.cache.DDCaches;
1613
import datadog.trace.api.datastreams.DataStreamsContext;
14+
import datadog.trace.api.datastreams.DataStreamsTags;
1715
import datadog.trace.api.naming.SpanNaming;
1816
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
1917
import datadog.trace.bootstrap.instrumentation.api.InternalSpanTypes;
@@ -23,7 +21,6 @@
2321
import io.grpc.MethodDescriptor;
2422
import io.grpc.Status;
2523
import java.util.BitSet;
26-
import java.util.LinkedHashMap;
2724
import java.util.Set;
2825
import java.util.function.Function;
2926

@@ -35,10 +32,8 @@ public class GrpcClientDecorator extends ClientDecorator {
3532
public static final CharSequence GRPC_MESSAGE = UTF8BytesString.create("grpc.message");
3633

3734
private static DataStreamsContext createDsmContext() {
38-
LinkedHashMap<String, String> result = new LinkedHashMap<>();
39-
result.put(DIRECTION_TAG, DIRECTION_OUT);
40-
result.put(TYPE_TAG, "grpc");
41-
return DataStreamsContext.fromTags(result);
35+
return DataStreamsContext.fromTags(
36+
DataStreamsTags.create("grpc", DataStreamsTags.Direction.Outbound));
4237
}
4338

4439
public static final GrpcClientDecorator DECORATE = new GrpcClientDecorator();

dd-java-agent/instrumentation/armeria/armeria-grpc-0.84/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/GrpcServerDecorator.java

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
package datadog.trace.instrumentation.armeria.grpc.server;
22

3-
import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN;
4-
import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG;
5-
import static datadog.trace.core.datastreams.TagsProcessor.TYPE_TAG;
6-
73
import datadog.trace.api.Config;
84
import datadog.trace.api.cache.DDCache;
95
import datadog.trace.api.cache.DDCaches;
6+
import datadog.trace.api.datastreams.DataStreamsTags;
107
import datadog.trace.api.naming.SpanNaming;
118
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
129
import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities;
@@ -18,7 +15,6 @@
1815
import io.grpc.StatusException;
1916
import io.grpc.StatusRuntimeException;
2017
import java.util.BitSet;
21-
import java.util.LinkedHashMap;
2218
import java.util.function.Function;
2319

2420
public class GrpcServerDecorator extends ServerDecorator {
@@ -33,15 +29,11 @@ public class GrpcServerDecorator extends ServerDecorator {
3329
public static final CharSequence COMPONENT_NAME = UTF8BytesString.create("armeria-grpc-server");
3430
public static final CharSequence GRPC_MESSAGE = UTF8BytesString.create("grpc.message");
3531

36-
private static final LinkedHashMap<String, String> createServerPathwaySortedTags() {
37-
LinkedHashMap<String, String> result = new LinkedHashMap<>();
38-
result.put(DIRECTION_TAG, DIRECTION_IN);
39-
result.put(TYPE_TAG, "grpc");
40-
return result;
32+
private static DataStreamsTags createServerPathwaySortedTags() {
33+
return DataStreamsTags.create("grpc", DataStreamsTags.Direction.Inbound);
4134
}
4235

43-
public static final LinkedHashMap<String, String> SERVER_PATHWAY_EDGE_TAGS =
44-
createServerPathwaySortedTags();
36+
public static final DataStreamsTags SERVER_PATHWAY_EDGE_TAGS = createServerPathwaySortedTags();
4537
public static final GrpcServerDecorator DECORATE = new GrpcServerDecorator();
4638

4739
private static final Function<String, String> NORMALIZE =

dd-java-agent/instrumentation/armeria/armeria-grpc-0.84/src/test/groovy/ArmeriaGrpcTest.groovy

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -254,14 +254,12 @@ abstract class ArmeriaGrpcTest extends VersionedNamingTestBase {
254254
if (isDataStreamsEnabled()) {
255255
StatsGroup first = TEST_DATA_STREAMS_WRITER.groups.find { it.parentHash == 0 }
256256
verifyAll(first) {
257-
edgeTags.containsAll(["direction:out", "type:grpc"])
258-
edgeTags.size() == 2
257+
tags.hasAllTags("direction:out", "type:grpc")
259258
}
260259

261260
StatsGroup second = TEST_DATA_STREAMS_WRITER.groups.find { it.parentHash == first.hash }
262261
verifyAll(second) {
263-
edgeTags.containsAll(["direction:in", "type:grpc"])
264-
edgeTags.size() == 2
262+
tags.hasAllTags("direction:in", "type:grpc")
265263
}
266264
}
267265

dd-java-agent/instrumentation/aws-java-eventbridge-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/eventbridge/EventBridgeInterceptor.java

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,14 @@
22

33
import static datadog.context.propagation.Propagators.defaultPropagator;
44
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.traceConfig;
5-
import static datadog.trace.core.datastreams.TagsProcessor.BUS_TAG;
6-
import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_OUT;
7-
import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG;
8-
import static datadog.trace.core.datastreams.TagsProcessor.TYPE_TAG;
95
import static datadog.trace.instrumentation.aws.v2.eventbridge.TextMapInjectAdapter.SETTER;
106

117
import datadog.trace.api.datastreams.DataStreamsContext;
8+
import datadog.trace.api.datastreams.DataStreamsTags;
129
import datadog.trace.api.datastreams.PathwayContext;
1310
import datadog.trace.bootstrap.InstanceStore;
1411
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
1512
import java.util.ArrayList;
16-
import java.util.LinkedHashMap;
1713
import java.util.List;
1814
import org.slf4j.Logger;
1915
import org.slf4j.LoggerFactory;
@@ -89,7 +85,9 @@ private String getTraceContextToInject(
8985
// Inject context
9086
datadog.context.Context context = span;
9187
if (traceConfig().isDataStreamsEnabled()) {
92-
DataStreamsContext dsmContext = DataStreamsContext.fromTags(getTags(eventBusName));
88+
DataStreamsTags tags =
89+
DataStreamsTags.createWithBus(DataStreamsTags.Direction.Outbound, eventBusName);
90+
DataStreamsContext dsmContext = DataStreamsContext.fromTags(tags);
9391
context = context.with(dsmContext);
9492
}
9593
defaultPropagator().inject(context, jsonBuilder, SETTER);
@@ -111,13 +109,4 @@ private String getTraceContextToInject(
111109
jsonBuilder.append('}');
112110
return jsonBuilder.toString();
113111
}
114-
115-
private LinkedHashMap<String, String> getTags(String eventBusName) {
116-
LinkedHashMap<String, String> sortedTags = new LinkedHashMap<>();
117-
sortedTags.put(DIRECTION_TAG, DIRECTION_OUT);
118-
sortedTags.put(BUS_TAG, eventBusName);
119-
sortedTags.put(TYPE_TAG, "bus");
120-
121-
return sortedTags;
122-
}
123112
}

dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/dsmTest/groovy/AWS1KinesisClientTest.groovy

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,7 @@ abstract class AWS1KinesisClientTest extends VersionedNamingTestBase {
115115
pathwayLatencyCount += group.pathwayLatency.count
116116
edgeLatencyCount += group.edgeLatency.count
117117
verifyAll(group) {
118-
edgeTags.containsAll(["direction:" + dsmDirection, "topic:" + streamArn, "type:kinesis"])
119-
edgeTags.size() == 3
118+
tags.hasAllTags("direction:" + dsmDirection, "topic:" + streamArn, "type:kinesis")
120119
}
121120
}
122121
verifyAll {

dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/dsmTest/groovy/AWS1SnsClientTest.groovy

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,7 @@ abstract class AWS1SnsClientTest extends VersionedNamingTestBase {
9696
pathwayLatencyCount += group.pathwayLatency.count
9797
edgeLatencyCount += group.edgeLatency.count
9898
verifyAll(group) {
99-
edgeTags.containsAll(["direction:" + dsmDirection, "topic:" + topicName, "type:sns"])
100-
edgeTags.size() == 3
99+
tags.hasAllTags("direction:" + dsmDirection, "topic:" + topicName, "type:sns")
101100
}
102101
}
103102
verifyAll {

dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AwsSdkClientDecorator.java

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import static datadog.trace.api.datastreams.DataStreamsContext.create;
44
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.traceConfig;
55
import static datadog.trace.bootstrap.instrumentation.api.ResourceNamePriorities.RPC_COMMAND_NAME;
6-
import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_OUT;
76

87
import com.amazonaws.AmazonWebServiceRequest;
98
import com.amazonaws.AmazonWebServiceResponse;
@@ -15,6 +14,7 @@
1514
import datadog.trace.api.DDTags;
1615
import datadog.trace.api.cache.DDCache;
1716
import datadog.trace.api.cache.DDCaches;
17+
import datadog.trace.api.datastreams.DataStreamsTags;
1818
import datadog.trace.api.naming.SpanNaming;
1919
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
2020
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
@@ -23,9 +23,7 @@
2323
import datadog.trace.bootstrap.instrumentation.api.Tags;
2424
import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString;
2525
import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator;
26-
import datadog.trace.core.datastreams.TagsProcessor;
2726
import java.net.URI;
28-
import java.util.LinkedHashMap;
2927
import java.util.List;
3028
import java.util.Locale;
3129
import java.util.regex.Matcher;
@@ -255,17 +253,12 @@ && traceConfig().isDataStreamsEnabled()) {
255253
if (HttpMethodName.GET.name().equals(span.getTag(Tags.HTTP_METHOD))
256254
&& ("GetObjectMetadataRequest".equalsIgnoreCase(awsOperation)
257255
|| "GetObjectRequest".equalsIgnoreCase(awsOperation))) {
258-
LinkedHashMap<String, String> sortedTags = new LinkedHashMap<>();
259-
260-
sortedTags.put(TagsProcessor.DIRECTION_TAG, TagsProcessor.DIRECTION_IN);
261-
sortedTags.put(TagsProcessor.DATASET_NAME_TAG, key);
262-
sortedTags.put(TagsProcessor.DATASET_NAMESPACE_TAG, bucket);
263-
sortedTags.put(TagsProcessor.TOPIC_TAG, bucket);
264-
sortedTags.put(TagsProcessor.TYPE_TAG, "s3");
265-
256+
DataStreamsTags tags =
257+
DataStreamsTags.createWithDataset(
258+
"s3", DataStreamsTags.Direction.Inbound, bucket, key, bucket);
266259
AgentTracer.get()
267260
.getDataStreamsMonitoring()
268-
.setCheckpoint(span, create(sortedTags, 0, responseSize));
261+
.setCheckpoint(span, create(tags, 0, responseSize));
269262
}
270263

271264
if ("PutObjectRequest".equalsIgnoreCase(awsOperation)
@@ -275,18 +268,12 @@ && traceConfig().isDataStreamsEnabled()) {
275268
if (requestSize != null) {
276269
payloadSize = (long) requestSize;
277270
}
278-
279-
LinkedHashMap<String, String> sortedTags = new LinkedHashMap<>();
280-
281-
sortedTags.put(TagsProcessor.DIRECTION_TAG, DIRECTION_OUT);
282-
sortedTags.put(TagsProcessor.DATASET_NAME_TAG, key);
283-
sortedTags.put(TagsProcessor.DATASET_NAMESPACE_TAG, bucket);
284-
sortedTags.put(TagsProcessor.TOPIC_TAG, bucket);
285-
sortedTags.put(TagsProcessor.TYPE_TAG, "s3");
286-
271+
DataStreamsTags tags =
272+
DataStreamsTags.createWithDataset(
273+
"s3", DataStreamsTags.Direction.Outbound, bucket, key, bucket);
287274
AgentTracer.get()
288275
.getDataStreamsMonitoring()
289-
.setCheckpoint(span, create(sortedTags, 0, payloadSize));
276+
.setCheckpoint(span, create(tags, 0, payloadSize));
290277
}
291278
}
292279
}

dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/TracingRequestHandler.java

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@
66
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.blackholeSpan;
77
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
88
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.traceConfig;
9-
import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN;
10-
import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG;
11-
import static datadog.trace.core.datastreams.TagsProcessor.TOPIC_TAG;
12-
import static datadog.trace.core.datastreams.TagsProcessor.TYPE_TAG;
139
import static datadog.trace.instrumentation.aws.v0.AwsSdkClientDecorator.AWS_LEGACY_TRACING;
1410
import static datadog.trace.instrumentation.aws.v0.AwsSdkClientDecorator.DECORATE;
1511

@@ -20,14 +16,11 @@
2016
import com.amazonaws.handlers.RequestHandler2;
2117
import datadog.context.propagation.Propagators;
2218
import datadog.trace.api.Config;
23-
import datadog.trace.api.datastreams.AgentDataStreamsMonitoring;
24-
import datadog.trace.api.datastreams.DataStreamsContext;
25-
import datadog.trace.api.datastreams.PathwayContext;
19+
import datadog.trace.api.datastreams.*;
2620
import datadog.trace.bootstrap.ContextStore;
2721
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
2822
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
2923
import java.util.Date;
30-
import java.util.LinkedHashMap;
3124
import java.util.List;
3225
import org.slf4j.Logger;
3326
import org.slf4j.LoggerFactory;
@@ -116,16 +109,14 @@ && traceConfig().isDataStreamsEnabled()
116109
List<?> records =
117110
GetterAccess.of(response.getAwsResponse()).getRecords(response.getAwsResponse());
118111
if (null != records) {
119-
LinkedHashMap<String, String> sortedTags = new LinkedHashMap<>();
120-
sortedTags.put(DIRECTION_TAG, DIRECTION_IN);
121-
sortedTags.put(TOPIC_TAG, streamArn);
122-
sortedTags.put(TYPE_TAG, "kinesis");
112+
DataStreamsTags tags =
113+
DataStreamsTags.create("kinesis", DataStreamsTags.Direction.Inbound, streamArn);
123114
for (Object record : records) {
124115
Date arrivalTime = GetterAccess.of(record).getApproximateArrivalTimestamp(record);
125116
AgentDataStreamsMonitoring dataStreamsMonitoring =
126117
AgentTracer.get().getDataStreamsMonitoring();
127118
PathwayContext pathwayContext = dataStreamsMonitoring.newPathwayContext();
128-
DataStreamsContext context = create(sortedTags, arrivalTime.getTime(), 0);
119+
DataStreamsContext context = create(tags, arrivalTime.getTime(), 0);
129120
pathwayContext.setCheckpoint(context, dataStreamsMonitoring::add);
130121
if (!span.context().getPathwayContext().isStarted()) {
131122
span.context().mergePathwayContext(pathwayContext);

dd-java-agent/instrumentation/aws-java-sdk-2.2/src/dsmTest/groovy/Aws2KinesisDataStreamsTest.groovy

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,7 @@ abstract class Aws2KinesisDataStreamsTest extends VersionedNamingTestBase {
156156
pathwayLatencyCount += group.pathwayLatency.count
157157
edgeLatencyCount += group.edgeLatency.count
158158
verifyAll(group) {
159-
edgeTags.containsAll(["direction:" + dsmDirection, "topic:arnprefix:stream/somestream", "type:kinesis"])
160-
edgeTags.size() == 3
159+
tags.hasAllTags("direction:" + dsmDirection, "topic:arnprefix:stream/somestream", "type:kinesis")
161160
}
162161
}
163162
verifyAll {
@@ -278,8 +277,7 @@ abstract class Aws2KinesisDataStreamsTest extends VersionedNamingTestBase {
278277
pathwayLatencyCount += group.pathwayLatency.count
279278
edgeLatencyCount += group.edgeLatency.count
280279
verifyAll(group) {
281-
edgeTags.containsAll(["direction:" + dsmDirection, "topic:arnprefix:stream/somestream", "type:kinesis"])
282-
edgeTags.size() == 3
280+
tags.hasAllTags("direction:" + dsmDirection, "topic:arnprefix:stream/somestream", "type:kinesis")
283281
}
284282
}
285283
verifyAll {

dd-java-agent/instrumentation/aws-java-sdk-2.2/src/dsmTest/groovy/Aws2SnsDataStreamsTest.groovy

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,7 @@ abstract class Aws2SnsDataStreamsTest extends VersionedNamingTestBase {
144144
pathwayLatencyCount += group.pathwayLatency.count
145145
edgeLatencyCount += group.edgeLatency.count
146146
verifyAll(group) {
147-
edgeTags.containsAll(["direction:" + dsmDirection, "topic:mytopic", "type:sns"])
148-
edgeTags.size() == 3
147+
tags.hasAllTags("direction:" + dsmDirection, "topic:mytopic", "type:sns")
149148
}
150149
}
151150
verifyAll {
@@ -243,8 +242,7 @@ abstract class Aws2SnsDataStreamsTest extends VersionedNamingTestBase {
243242
pathwayLatencyCount += group.pathwayLatency.count
244243
edgeLatencyCount += group.edgeLatency.count
245244
verifyAll(group) {
246-
edgeTags.containsAll(["direction:" + dsmDirection, "topic:mytopic", "type:sns"])
247-
edgeTags.size() == 3
245+
tags.hasAllTags("direction:" + dsmDirection, "topic:mytopic", "type:sns")
248246
}
249247
}
250248
verifyAll {

0 commit comments

Comments
 (0)