@@ -126,13 +126,13 @@ public CompletableResultCode export(Collection<SpanData> spans) {
126126 }
127127
128128 try {
129- List <TelemetryItem > telemetryItems = new ArrayList <>();
130129 for (SpanData span : spans ) {
131130 logger .debug ("exporting span: {}" , span );
132- export (span , telemetryItems );
131+ export (span );
133132 }
134- telemetryClient .trackAsync (telemetryItems );
135- // FIXME (trask)
133+ // batching, retry, throttling, and writing to disk on failure occur downstream
134+ // for simplicity not reporting back success/failure from this layer
135+ // only that it was successfully delivered to the next layer
136136 return CompletableResultCode .ofSuccess ();
137137 } catch (Throwable t ) {
138138 logger .error (t .getMessage (), t );
@@ -150,30 +150,30 @@ public CompletableResultCode shutdown() {
150150 return CompletableResultCode .ofSuccess ();
151151 }
152152
153- private void export (SpanData span , List < TelemetryItem > telemetryItems ) {
153+ private void export (SpanData span ) {
154154 SpanKind kind = span .getKind ();
155155 String instrumentationName = span .getInstrumentationLibraryInfo ().getName ();
156156 Matcher matcher = COMPONENT_PATTERN .matcher (instrumentationName );
157157 String stdComponent = matcher .matches () ? matcher .group (1 ) : null ;
158158 if (kind == SpanKind .INTERNAL ) {
159159 Boolean isLog = span .getAttributes ().get (AI_LOG_KEY );
160160 if (isLog != null && isLog ) {
161- exportLogSpan (span , telemetryItems );
161+ exportLogSpan (span );
162162 } else if ("spring-scheduling" .equals (stdComponent ) && !span .getParentSpanContext ().isValid ()) {
163163 // TODO (trask) need semantic convention for determining whether to map INTERNAL to request or
164164 // dependency (or need clarification to use SERVER for this)
165- exportRequest (span , telemetryItems );
165+ exportRequest (span );
166166 } else {
167- exportRemoteDependency (span , true , telemetryItems );
167+ exportRemoteDependency (span , true );
168168 }
169169 } else if (kind == SpanKind .CLIENT || kind == SpanKind .PRODUCER ) {
170- exportRemoteDependency (span , false , telemetryItems );
170+ exportRemoteDependency (span , false );
171171 } else if (kind == SpanKind .CONSUMER && !span .getParentSpanContext ().isRemote ()) {
172172 // TODO need spec clarification, but it seems polling for messages can be CONSUMER also
173173 // in which case the span will not have a remote parent and should be treated as a dependency instead of a request
174- exportRemoteDependency (span , false , telemetryItems );
174+ exportRemoteDependency (span , false );
175175 } else if (kind == SpanKind .SERVER || kind == SpanKind .CONSUMER ) {
176- exportRequest (span , telemetryItems );
176+ exportRequest (span );
177177 } else {
178178 throw new UnsupportedOperationException (kind .name ());
179179 }
@@ -195,8 +195,7 @@ private static List<TelemetryExceptionDetails> minimalParse(String errorStack) {
195195 return Collections .singletonList (details );
196196 }
197197
198- private void exportRemoteDependency (SpanData span , boolean inProc ,
199- List <TelemetryItem > telemetryItems ) {
198+ private void exportRemoteDependency (SpanData span , boolean inProc ) {
200199 TelemetryItem telemetry = new TelemetryItem ();
201200 RemoteDependencyData data = new RemoteDependencyData ();
202201 telemetryClient .initRemoteDependencyTelemetry (telemetry , data );
@@ -228,8 +227,8 @@ private void exportRemoteDependency(SpanData span, boolean inProc,
228227
229228 float samplingPercentage = getSamplingPercentage (span .getSpanContext ().getTraceState ());
230229 telemetry .setSampleRate (samplingPercentage );
231- telemetryItems . add (telemetry );
232- exportEvents (span , samplingPercentage , telemetryItems );
230+ telemetryClient . trackAsync (telemetry );
231+ exportEvents (span , samplingPercentage );
233232 }
234233
235234 private static float getSamplingPercentage (TraceState traceState ) {
@@ -259,16 +258,16 @@ private void applySemanticConventions(Attributes attributes, RemoteDependencyDat
259258 }
260259 }
261260
262- private void exportLogSpan (SpanData span , List < TelemetryItem > telemetryItems ) {
261+ private void exportLogSpan (SpanData span ) {
263262 String errorStack = span .getAttributes ().get (AI_LOG_ERROR_STACK_KEY );
264263 if (errorStack == null ) {
265- trackTrace (span , telemetryItems );
264+ trackTrace (span );
266265 } else {
267- trackTraceAsException (span , errorStack , telemetryItems );
266+ trackTraceAsException (span , errorStack );
268267 }
269268 }
270269
271- private void trackTrace (SpanData span , List < TelemetryItem > telemetryItems ) {
270+ private void trackTrace (SpanData span ) {
272271 Attributes attributes = span .getAttributes ();
273272 String level = attributes .get (AI_LOG_LEVEL_KEY );
274273 String loggerName = attributes .get (AI_LOGGER_NAME_KEY );
@@ -292,10 +291,10 @@ private void trackTrace(SpanData span, List<TelemetryItem> telemetryItems) {
292291
293292 float samplingPercentage = getSamplingPercentage (span .getSpanContext ().getTraceState ());
294293 telemetry .setSampleRate (samplingPercentage );
295- telemetryItems . add (telemetry );
294+ telemetryClient . trackAsync (telemetry );
296295 }
297296
298- private void trackTraceAsException (SpanData span , String errorStack , List < TelemetryItem > telemetryItems ) {
297+ private void trackTraceAsException (SpanData span , String errorStack ) {
299298 Attributes attributes = span .getAttributes ();
300299 String level = attributes .get (AI_LOG_LEVEL_KEY );
301300 String loggerName = attributes .get (AI_LOGGER_NAME_KEY );
@@ -318,7 +317,7 @@ private void trackTraceAsException(SpanData span, String errorStack, List<Teleme
318317
319318 float samplingPercentage = getSamplingPercentage (span .getSpanContext ().getTraceState ());
320319 telemetry .setSampleRate (samplingPercentage );
321- telemetryItems . add (telemetry );
320+ telemetryClient . trackAsync (telemetry );
322321 }
323322
324323 private static void setLoggerProperties (MonitorDomain data , String level , String loggerName ) {
@@ -498,7 +497,7 @@ private static int getDefaultPortForDbSystem(String dbSystem) {
498497 }
499498 }
500499
501- private void exportRequest (SpanData span , List < TelemetryItem > telemetryItems ) {
500+ private void exportRequest (SpanData span ) {
502501 TelemetryItem telemetry = new TelemetryItem ();
503502 RequestData data = new RequestData ();
504503 telemetryClient .initRequestTelemetry (telemetry , data );
@@ -585,8 +584,8 @@ private void exportRequest(SpanData span, List<TelemetryItem> telemetryItems) {
585584
586585 float samplingPercentage = getSamplingPercentage (span .getSpanContext ().getTraceState ());
587586 telemetry .setSampleRate (samplingPercentage );
588- telemetryItems . add (telemetry );
589- exportEvents (span , samplingPercentage , telemetryItems );
587+ telemetryClient . trackAsync (telemetry );
588+ exportEvents (span , samplingPercentage );
590589 }
591590
592591 private String getTelemetryName (SpanData span ) {
@@ -611,7 +610,7 @@ private static String nullAwareConcat(String str1, String str2, String separator
611610 return str1 + separator + str2 ;
612611 }
613612
614- private void exportEvents (SpanData span , float samplingPercentage , List < TelemetryItem > telemetryItems ) {
613+ private void exportEvents (SpanData span , float samplingPercentage ) {
615614 for (EventData event : span .getEvents ()) {
616615 boolean lettuce51 =
617616 span .getInstrumentationLibraryInfo ().getName ().equals ("io.opentelemetry.javaagent.lettuce-5.1" );
@@ -635,17 +634,17 @@ private void exportEvents(SpanData span, float samplingPercentage, List<Telemetr
635634 // TODO map OpenTelemetry exception to Application Insights exception better
636635 String stacktrace = event .getAttributes ().get (SemanticAttributes .EXCEPTION_STACKTRACE );
637636 if (stacktrace != null ) {
638- trackException (stacktrace , span , operationId , span .getSpanId (), samplingPercentage , telemetryItems );
637+ trackException (stacktrace , span , operationId , span .getSpanId (), samplingPercentage );
639638 }
640639 } else {
641640 telemetry .setSampleRate (samplingPercentage );
642- telemetryItems . add (telemetry );
641+ telemetryClient . trackAsync (telemetry );
643642 }
644643 }
645644 }
646645
647646 private void trackException (String errorStack , SpanData span , String operationId ,
648- String id , float samplingPercentage , List < TelemetryItem > telemetryItems ) {
647+ String id , float samplingPercentage ) {
649648 TelemetryItem telemetry = new TelemetryItem ();
650649 TelemetryExceptionData data = new TelemetryExceptionData ();
651650 telemetryClient .initExceptionTelemetry (telemetry , data );
@@ -655,7 +654,7 @@ private void trackException(String errorStack, SpanData span, String operationId
655654 telemetry .setTime (getFormattedTime (span .getEndEpochNanos ()));
656655 telemetry .setSampleRate (samplingPercentage );
657656 data .setExceptions (minimalParse (errorStack ));
658- telemetryItems . add (telemetry );
657+ telemetryClient . trackAsync (telemetry );
659658 }
660659
661660 private static final long NANOSECONDS_PER_DAY = DAYS .toNanos (1 );
0 commit comments