Skip to content

Commit e00a3ce

Browse files
Fix Antithesis SDK compatibility: Use Jackson ObjectNode instead of Map
The Antithesis SDK expects Jackson ObjectNode, not Map. Replaced HashMap with ObjectNode using JsonNodeFactory. Fixed in: - CoreTracer.java - RemoteWriter.java - PayloadDispatcherImpl.java
1 parent 34a0019 commit e00a3ce

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

dd-trace-core/src/main/java/datadog/trace/common/writer/PayloadDispatcherImpl.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package datadog.trace.common.writer;
22

33
import com.antithesis.sdk.Assert;
4+
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
5+
import com.fasterxml.jackson.databind.node.ObjectNode;
46
import datadog.communication.monitor.Monitoring;
57
import datadog.communication.monitor.Recording;
68
import datadog.communication.serialization.ByteBufferConsumer;
@@ -110,7 +112,7 @@ public void accept(int messageCount, ByteBuffer buffer) {
110112
healthMetrics.onSerialize(sizeInBytes);
111113

112114
// Antithesis: Track all send attempts
113-
java.util.Map<String, Object> sendAttemptDetails = new java.util.HashMap<>();
115+
ObjectNode sendAttemptDetails = JsonNodeFactory.instance.objectNode();
114116
sendAttemptDetails.put("trace_count", messageCount);
115117
sendAttemptDetails.put("payload_size_bytes", sizeInBytes);
116118
sendAttemptDetails.put("dropped_traces_in_payload", payload.droppedTraces());
@@ -122,7 +124,7 @@ public void accept(int messageCount, ByteBuffer buffer) {
122124

123125
if (response.success()) {
124126
// Antithesis: Track successful sends
125-
java.util.Map<String, Object> successDetails = new java.util.HashMap<>();
127+
ObjectNode successDetails = JsonNodeFactory.instance.objectNode();
126128
successDetails.put("decision", "sent_success");
127129
successDetails.put("trace_count", messageCount);
128130
successDetails.put("payload_size_bytes", sizeInBytes);
@@ -134,7 +136,7 @@ public void accept(int messageCount, ByteBuffer buffer) {
134136
healthMetrics.onSend(messageCount, sizeInBytes, response);
135137
} else {
136138
// Antithesis: Track failed sends
137-
java.util.Map<String, Object> failedDetails = new java.util.HashMap<>();
139+
ObjectNode failedDetails = JsonNodeFactory.instance.objectNode();
138140
failedDetails.put("decision", "dropped_send_failed");
139141
failedDetails.put("trace_count", messageCount);
140142
failedDetails.put("payload_size_bytes", sizeInBytes);

dd-trace-core/src/main/java/datadog/trace/common/writer/RemoteWriter.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import static java.util.concurrent.TimeUnit.MINUTES;
55

66
import com.antithesis.sdk.Assert;
7+
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
8+
import com.fasterxml.jackson.databind.node.ObjectNode;
79
import datadog.trace.core.DDSpan;
810
import datadog.trace.core.monitor.HealthMetrics;
911
import datadog.trace.relocate.api.RatelimitedLogger;
@@ -70,7 +72,7 @@ protected RemoteWriter(
7072
public void write(final List<DDSpan> trace) {
7173
if (closed) {
7274
// Antithesis: Track traces dropped during shutdown
73-
java.util.Map<String, Object> shutdownDetails = new java.util.HashMap<>();
75+
ObjectNode shutdownDetails = JsonNodeFactory.instance.objectNode();
7476
shutdownDetails.put("decision", "dropped_shutdown");
7577
shutdownDetails.put("span_count", trace.size());
7678
Assert.sometimes(true, "trace_dropped_writer_closed", shutdownDetails);
@@ -87,7 +89,7 @@ public void write(final List<DDSpan> trace) {
8789
switch (traceProcessingWorker.publish(root, samplingPriority, trace)) {
8890
case ENQUEUED_FOR_SERIALIZATION:
8991
// Antithesis: Track traces enqueued for sending
90-
java.util.Map<String, Object> enqueuedDetails = new java.util.HashMap<>();
92+
ObjectNode enqueuedDetails = JsonNodeFactory.instance.objectNode();
9193
enqueuedDetails.put("decision", "enqueued");
9294
enqueuedDetails.put("trace_id", root.getTraceId().toString());
9395
enqueuedDetails.put("span_count", trace.size());
@@ -101,7 +103,7 @@ public void write(final List<DDSpan> trace) {
101103
break;
102104
case DROPPED_BY_POLICY:
103105
// Antithesis: Track traces dropped by policy
104-
java.util.Map<String, Object> policyDetails = new java.util.HashMap<>();
106+
ObjectNode policyDetails = JsonNodeFactory.instance.objectNode();
105107
policyDetails.put("decision", "dropped_policy");
106108
policyDetails.put("trace_id", root.getTraceId().toString());
107109
policyDetails.put("span_count", trace.size());
@@ -112,7 +114,7 @@ public void write(final List<DDSpan> trace) {
112114
break;
113115
case DROPPED_BUFFER_OVERFLOW:
114116
// Antithesis: Track traces dropped due to buffer overflow
115-
java.util.Map<String, Object> overflowDetails = new java.util.HashMap<>();
117+
ObjectNode overflowDetails = JsonNodeFactory.instance.objectNode();
116118
overflowDetails.put("decision", "dropped_buffer_overflow");
117119
overflowDetails.put("trace_id", root.getTraceId().toString());
118120
overflowDetails.put("span_count", trace.size());

dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import static java.util.concurrent.TimeUnit.SECONDS;
2121

2222
import com.antithesis.sdk.Assert;
23+
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
24+
import com.fasterxml.jackson.databind.node.ObjectNode;
2325

2426
import datadog.communication.ddagent.DDAgentFeaturesDiscovery;
2527
import datadog.communication.ddagent.ExternalAgentLauncher;
@@ -1249,7 +1251,7 @@ void write(final List<DDSpan> trace) {
12491251
boolean published = forceKeep || traceCollector.sample(spanToSample);
12501252
if (published) {
12511253
// Antithesis: Track traces accepted by sampling
1252-
java.util.Map<String, Object> acceptedDetails = new java.util.HashMap<>();
1254+
ObjectNode acceptedDetails = JsonNodeFactory.instance.objectNode();
12531255
acceptedDetails.put("decision", "accepted");
12541256
acceptedDetails.put("trace_id", writtenTrace.get(0).getTraceId().toString());
12551257
acceptedDetails.put("span_count", writtenTrace.size());
@@ -1258,7 +1260,7 @@ void write(final List<DDSpan> trace) {
12581260
writer.write(writtenTrace);
12591261
} else {
12601262
// Antithesis: Track traces dropped by sampling
1261-
java.util.Map<String, Object> droppedDetails = new java.util.HashMap<>();
1263+
ObjectNode droppedDetails = JsonNodeFactory.instance.objectNode();
12621264
droppedDetails.put("decision", "dropped_sampling");
12631265
droppedDetails.put("trace_id", writtenTrace.get(0).getTraceId().toString());
12641266
droppedDetails.put("span_count", writtenTrace.size());

0 commit comments

Comments
 (0)