66import datadog .trace .core .PendingTrace ;
77import java .io .IOException ;
88import java .lang .ref .WeakReference ;
9+ import java .util .HashMap ;
910import java .util .HashSet ;
11+ import java .util .Map ;
1012import java .util .Set ;
1113import java .util .zip .ZipOutputStream ;
1214
@@ -19,31 +21,38 @@ public static void register() {
1921 }
2022
2123 private static final Set <WeakReference <DDSpan >> rootSpans = new HashSet <>();
24+ private static final Map <String , WeakReference <DDSpan >> idToWeakRef = new HashMap <>();
2225
23- public static void addActiveSpan (final AgentSpan rootSpan ) {
26+ public static void addUnfinishedRootSpan (final AgentSpan rootSpan ) {
2427 DDSpan rootDDSpan = (DDSpan ) rootSpan ;
2528 WeakReference <DDSpan > weakRootSpan = new WeakReference <>(rootDDSpan );
29+ idToWeakRef .put (getSpanIdString (rootSpan ), weakRootSpan );
2630 rootSpans .add (weakRootSpan );
2731 }
2832
2933 public static void suspendRootSpan (final AgentSpan rootSpan ) {
30- DDSpan rootDDSpan = (DDSpan ) rootSpan ;
31- WeakReference <DDSpan > weakRootSpan = new WeakReference <>(rootDDSpan );
34+ WeakReference <DDSpan > weakRootSpan = idToWeakRef .get (getSpanIdString (rootSpan ));
3235 rootSpans .remove (weakRootSpan );
3336 }
3437
3538 @ Override
3639 public void addReportToFlare (ZipOutputStream zip ) throws IOException {
40+ StringBuilder dumpText = new StringBuilder ();
3741 for (WeakReference <DDSpan > weakRootSpan : rootSpans ) {
3842 DDSpan rootSpan = weakRootSpan .get ();
3943 if (rootSpan != null ) {
4044 PendingTrace trace = (PendingTrace ) rootSpan .context ().getTraceCollector ();
4145 if (trace != null ) {
4246 for (DDSpan span : trace .getSpans ()) {
43- TracerFlare . addText ( zip , "trace_dump.txt" , span .toString ());
47+ dumpText . append ( span .toString ()). append ( " \n " );
4448 }
4549 }
4650 }
4751 }
52+ TracerFlare .addText (zip , "trace_dump.txt" , dumpText .toString ());
53+ }
54+
55+ private static String getSpanIdString (final AgentSpan rootSpan ) {
56+ return String .valueOf (rootSpan .getSpanId ());
4857 }
4958}
0 commit comments