Skip to content

Commit e750f61

Browse files
Java Antithesis log before assertion
1 parent 14f2568 commit e750f61

File tree

5 files changed

+22
-0
lines changed

5 files changed

+22
-0
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public void onDroppedTrace(int spanCount) {
6666
dropDetails.put("total_dropped_traces", droppedTraceCount.sum() + 1);
6767
dropDetails.put("total_dropped_spans", droppedSpanCount.sum() + spanCount);
6868

69+
log.debug("ANTITHESIS_ASSERT: Traces dropped before sending (unreachable) - span_count: {}, total_dropped: {}", spanCount, droppedTraceCount.sum() + 1);
6970
Assert.unreachable(
7071
"Traces should not be dropped before attempting to send - indicates buffer overflow or backpressure",
7172
dropDetails);
@@ -117,7 +118,9 @@ public void accept(int messageCount, ByteBuffer buffer) {
117118
// or when the packer is flushed at a heartbeat
118119
if (messageCount > 0) {
119120
// Antithesis: Verify that we're attempting to send traces
121+
log.debug("ANTITHESIS_ASSERT: Trace sending code path exercised (reachable) - message_count: {}", messageCount);
120122
Assert.reachable("Trace sending code path is exercised", null);
123+
log.debug("ANTITHESIS_ASSERT: Checking if traces are being sent to API (sometimes) - message_count: {}", messageCount);
121124
Assert.sometimes(
122125
messageCount > 0,
123126
"Traces are being sent to the API",
@@ -141,6 +144,7 @@ public void accept(int messageCount, ByteBuffer buffer) {
141144
});
142145
response.status().ifPresent(status -> sendDetails.put("http_status", status));
143146

147+
log.debug("ANTITHESIS_ASSERT: Checking trace sending success (always) - success: {}, trace_count: {}", response.success(), messageCount);
144148
Assert.always(
145149
response.success(),
146150
"Trace sending to API should always succeed - no traces should be lost",
@@ -162,6 +166,7 @@ public void accept(int messageCount, ByteBuffer buffer) {
162166
});
163167
response.status().ifPresent(status -> failureDetails.put("http_status", status));
164168

169+
log.debug("ANTITHESIS_ASSERT: Trace sending failed (unreachable) - trace_count: {}, size: {} bytes", messageCount, sizeInBytes);
165170
Assert.unreachable(
166171
"Trace sending failure path should never be reached - indicates traces are being lost",
167172
failureDetails);

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public void write(final List<DDSpan> trace) {
7676
writeAttemptDetails.put("trace_size", trace.size());
7777
writeAttemptDetails.put("has_traces", !trace.isEmpty());
7878

79+
log.debug("ANTITHESIS_ASSERT: Checking writer not closed when writing (always) - closed: {}, trace_size: {}", closed, trace.size());
7980
Assert.always(
8081
!closed,
8182
"Writer should never be closed when attempting to write traces",
@@ -90,6 +91,7 @@ public void write(final List<DDSpan> trace) {
9091
shutdownDetails.put("trace_size", trace.size());
9192
shutdownDetails.put("reason", "writer_closed_during_shutdown");
9293

94+
log.debug("ANTITHESIS_ASSERT: Traces dropped due to shutdown (sometimes) - closed: {}, trace_size: {}", closed, trace.size());
9395
Assert.sometimes(
9496
closed && !trace.isEmpty(),
9597
"Traces are dropped due to writer shutdown - tracking shutdown behavior",
@@ -123,6 +125,7 @@ public void write(final List<DDSpan> trace) {
123125
overflowDetails.put("buffer_capacity", traceProcessingWorker.getCapacity());
124126
overflowDetails.put("reason", "buffer_overflow_backpressure");
125127

128+
log.debug("ANTITHESIS_ASSERT: Buffer overflow occurred (unreachable) - trace_size: {}, capacity: {}", trace.size(), traceProcessingWorker.getCapacity());
126129
Assert.unreachable(
127130
"Buffer overflow should never occur - traces are being dropped due to backpressure",
128131
overflowDetails);

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@ public Response sendSerializedTraces(final Payload payload) {
9494
final int sizeInBytes = payload.sizeInBytes();
9595

9696
// Antithesis: Track that agent API send is being exercised
97+
log.debug("ANTITHESIS_ASSERT: Verifying DDAgentApi trace sending is exercised (reachable) with {} traces", payload.traceCount());
9798
Assert.reachable("DDAgentApi trace sending is exercised", null);
99+
log.debug("ANTITHESIS_ASSERT: Checking if traces are being sent through DDAgentApi (sometimes) - count: {}", payload.traceCount());
98100
Assert.sometimes(
99101
payload.traceCount() > 0,
100102
"Traces are being sent through DDAgentApi",
@@ -112,6 +114,7 @@ public Response sendSerializedTraces(final Payload payload) {
112114
agentDetectionDetails.put("agent_url", agentUrl.toString());
113115
agentDetectionDetails.put("failure_reason", "agent_not_detected");
114116

117+
log.debug("ANTITHESIS_ASSERT: Agent not detected (unreachable) - url: {}, traces: {}", agentUrl, payload.traceCount());
115118
Assert.unreachable(
116119
"Datadog agent should always be detected - agent communication failure",
117120
agentDetectionDetails);
@@ -154,6 +157,7 @@ public Response sendSerializedTraces(final Payload payload) {
154157
httpResponseDetails.put("success", response.code() == 200);
155158
httpResponseDetails.put("agent_url", tracesUrl.toString());
156159

160+
log.debug("ANTITHESIS_ASSERT: Checking HTTP response status (always) - code: {}, traces: {}", response.code(), payload.traceCount());
157161
Assert.always(
158162
response.code() == 200,
159163
"HTTP response from Datadog agent should always be 200 - API communication failure",
@@ -168,6 +172,7 @@ public Response sendSerializedTraces(final Payload payload) {
168172
errorDetails.put("http_message", response.message());
169173
errorDetails.put("failure_reason", "http_error_response");
170174

175+
log.debug("ANTITHESIS_ASSERT: Non-200 HTTP response (unreachable) - code: {}, message: {}, traces: {}", response.code(), response.message(), payload.traceCount());
171176
Assert.unreachable(
172177
"Non-200 HTTP response from agent indicates API failure - traces may be lost",
173178
errorDetails);
@@ -204,6 +209,7 @@ public Response sendSerializedTraces(final Payload payload) {
204209
networkErrorDetails.put("agent_url", agentUrl.toString());
205210
networkErrorDetails.put("failure_reason", "network_io_exception");
206211

212+
log.debug("ANTITHESIS_ASSERT: Network/IO exception (unreachable) - type: {}, message: {}, traces: {}", e.getClass().getName(), e.getMessage(), payload.traceCount());
207213
Assert.unreachable(
208214
"Network/IO exceptions should not occur when sending to agent - indicates connectivity issues",
209215
networkErrorDetails);

telemetry/src/main/java/datadog/telemetry/TelemetryClient.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public Result sendHttpRequest(Request.Builder httpRequestBuilder) {
9999
String requestType = httpRequest.header(DD_TELEMETRY_REQUEST_TYPE);
100100

101101
// Antithesis: Track telemetry sending attempts
102+
log.debug("ANTITHESIS_ASSERT: Telemetry sending exercised (reachable) - request_type: {}", requestType);
102103
Assert.reachable("Telemetry sending is exercised", null);
103104

104105
try (okhttp3.Response response =
@@ -119,6 +120,7 @@ public Result sendHttpRequest(Request.Builder httpRequestBuilder) {
119120
notFoundDetails.put("url", url.toString());
120121
notFoundDetails.put("reason", "endpoint_disabled_404");
121122

123+
log.debug("ANTITHESIS_ASSERT: Telemetry endpoint 404 (sometimes) - request_type: {}, url: {}", requestType, url);
122124
Assert.sometimes(
123125
response.code() == 404,
124126
"Telemetry endpoint returns 404 - endpoint may be disabled",
@@ -137,6 +139,7 @@ public Result sendHttpRequest(Request.Builder httpRequestBuilder) {
137139
failureDetails.put("url", url.toString());
138140
failureDetails.put("reason", "http_error_response");
139141

142+
log.debug("ANTITHESIS_ASSERT: Telemetry HTTP request failed (unreachable) - request_type: {}, status: {}", requestType, response.code());
140143
Assert.unreachable(
141144
"Telemetry HTTP request failed - telemetry data should not be dropped, should retry",
142145
failureDetails);
@@ -150,6 +153,7 @@ public Result sendHttpRequest(Request.Builder httpRequestBuilder) {
150153
}
151154

152155
// Antithesis: Assert success
156+
log.debug("ANTITHESIS_ASSERT: Checking telemetry request success (always) - successful: {}, request_type: {}", response.isSuccessful(), requestType);
153157
Assert.always(
154158
response.isSuccessful(),
155159
"Telemetry requests should always succeed - no telemetry data should be lost",
@@ -168,6 +172,7 @@ public Result sendHttpRequest(Request.Builder httpRequestBuilder) {
168172
ioErrorDetails.put("url", url.toString());
169173
ioErrorDetails.put("reason", "network_io_exception");
170174

175+
log.debug("ANTITHESIS_ASSERT: Telemetry network/IO exception (unreachable) - request_type: {}, exception: {}", requestType, e.getClass().getName());
171176
Assert.unreachable(
172177
"Telemetry network/IO failure - telemetry data should not be dropped, should retry",
173178
ioErrorDetails);

telemetry/src/main/java/datadog/telemetry/TelemetryRouter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public TelemetryClient.Result sendRequest(TelemetryRequest request) {
5353
routingDetails.put("has_fallback", intakeClient != null);
5454
routingDetails.put("url", currentClient.getUrl().toString());
5555

56+
log.debug("ANTITHESIS_ASSERT: Checking telemetry routing success (always) - result: {}, client: {}", result, currentClient == agentClient ? "agent" : "intake");
5657
Assert.always(
5758
result == TelemetryClient.Result.SUCCESS || result == TelemetryClient.Result.INTERRUPTED,
5859
"Telemetry routing should always succeed - failures indicate data loss without retry mechanism",
@@ -67,6 +68,7 @@ public TelemetryClient.Result sendRequest(TelemetryRequest request) {
6768
agentFailureDetails.put("has_intake_fallback", intakeClient != null);
6869
agentFailureDetails.put("reason", "agent_telemetry_failure");
6970

71+
log.debug("ANTITHESIS_ASSERT: Agent telemetry endpoint failed (unreachable) - result: {}, has_fallback: {}", result, intakeClient != null);
7072
Assert.unreachable(
7173
"Agent telemetry endpoint failed - switching to intake but current request data is lost",
7274
agentFailureDetails);
@@ -87,6 +89,7 @@ public TelemetryClient.Result sendRequest(TelemetryRequest request) {
8789
intakeFailureDetails.put("will_fallback_to_agent", true);
8890
intakeFailureDetails.put("reason", "intake_telemetry_failure");
8991

92+
log.debug("ANTITHESIS_ASSERT: Intake telemetry endpoint failed (unreachable) - result: {}, will_fallback: true", result);
9093
Assert.unreachable(
9194
"Intake telemetry endpoint failed - switching to agent but current request data is lost",
9295
intakeFailureDetails);

0 commit comments

Comments
 (0)