8000 rebasing · DataDog/dd-trace-java@3e4955a · GitHub
[go: up one dir, main page]

Skip to content

Commit 3e4955a

Browse files
committed
rebasing
1 parent 3490fe8 commit 3e4955a

File tree

3 files changed

+45
-60
lines changed

3 files changed

+45
-60
lines changed

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,6 @@ public void onRootSpanFinished(AgentSpan root, EndpointTracker tracker) {
252252
if (!root.isOutbound()) {
253253
profilingContextIntegration.onRootSpanFinished(root, tracker);
254254
}
255-
TracerDump.suspendRootSpan(root);
256255
}
257256

258257
/**
@@ -277,7 +276,6 @@ public EndpointTracker onRootSpanStarted(AgentSpan root) {
277276
if (!root.isOutbound()) {
278277
return profilingContextIntegration.onRootSpanStarted(root);
279278
}
280-
TracerDump.addUnfinishedRootSpan(root);
281279
return null;
282280
}
283281

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

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,14 @@
66

77
import datadog.communication.ddagent.SharedCommunicationObjects;
88
import datadog.trace.api.Config;
9+
import datadog.trace.api.flare.TracerFlare;
910
import datadog.trace.api.time.TimeSource;
1011
import datadog.trace.core.monitor.HealthMetrics;
12+
import java.io.IOException;
13+
import java.util.ArrayList;
1114
import java.util.concurrent.TimeUnit;
1215
import java.util.concurrent.atomic.AtomicInteger;
16+
import java.util.zip.ZipOutputStream;
1317
import org.jctools.queues.MessagePassingQueue;
1418
import org.jctools.queues.MpscBlockingConsumerArrayQueue;
1519
import org.slf4j.Logger;
@@ -44,6 +48,7 @@ public interface Element {
4448
}
4549

4650
private static class DelayingPendingTraceBuffer extends PendingTraceBuffer {
51+
private static final Logger log = LoggerFactory.getLogger(DelayingPendingTraceBuffer.class);
4752
private static final long FORCE_SEND_DELAY_MS = TimeUnit.SECONDS.toMillis(5);
4853
private static final long SEND_DELAY_NS = TimeUnit.MILLISECONDS.toNanos(500);
4954
private static final long SLEEP_TIME_MS = 100;
@@ -78,6 +83,7 @@ public void enqueue(Element pendingTrace) {
7883

7984
@Override
8085
public void start() {
86+
TracerFlare.addReporter(new TracerDump(this));
8187
worker.start();
8288
}
8389

@@ -235,6 +241,45 @@ public DelayingPendingTraceBuffer(
235241
config, bufferSize, sharedCommunicationObjects, healthMetrics)
236242
: null;
237243
}
244+
245+
static class TracerDump implements TracerFlare.Reporter {
246+
247+
private final DelayingPendingTraceBuffer buffer;
248+
249+
public TracerDump(DelayingPendingTraceBuffer buffer) {
250+
this.buffer = buffer;
251+
}
252+
253+
@Override
254+
public void addReportToFlare(ZipOutputStream zip) throws IOException {
255+
TracerFlare.addText(zip, "trace_dump.txt", getDumpText());
256+
}
257+
258+
private String getDumpText() {
259+
StringBuilder dumpText = new StringBuilder();
260+
try {
261+
Element head = buffer.queue.poll(1, TimeUnit.SECONDS);
262+
ArrayList<Element> dumpSpans = new ArrayList<>();
263+
while (head != null && dumpSpans.size() < 100) { // temp arbitrary limit
264+
dumpSpans.add(head);
265+
head = buffer.queue.poll();
266+
}
267+
for (Element e : dumpSpans) {
268+
buffer.queue.offer(e);
269+
if (e instanceof PendingTrace) {
270+
PendingTrace trace = (PendingTrace) e;
271+
for (DDSpan span : trace.getSpans()) {
272+
dumpText.append(span.toString()).append("\n");
273+
}
274+
}
275+
}
276+
} catch (InterruptedException e) {
277+
log.error("Error with polling the buffer queue. Buffer: {}", buffer);
278+
Thread.currentThread().interrupt();
279+
}
280+
return dumpText.toString();
281+
}
282+
}
238283
}
239284

240285
static class DiscardingPendingTraceBuffer extends PendingTraceBuffer {

dd-trace-core/src/main/java/datadog/trace/core/util/TracerDump.java

Lines changed: 0 additions & 58 deletions
This file was deleted.

0 commit comments

Comments
 (0)
0