File tree Expand file tree Collapse file tree 1 file changed +14
-8
lines changed
opentelemetry-sdk/src/trace Expand file tree Collapse file tree 1 file changed +14
-8
lines changed Original file line number Diff line number Diff line change @@ -294,7 +294,7 @@ impl FinishedSpan {
294294 pub fn new ( span_data : crate :: trace:: SpanData ) -> Self {
295295 FinishedSpan {
296296 span : Some ( span_data) ,
297- is_last_processor : false ,
297+ is_last_processor : true ,
298298 is_consumed : false ,
299299 }
300300 }
@@ -314,16 +314,22 @@ impl FinishedSpan {
314314 if self . is_consumed {
315315 opentelemetry:: otel_error!( name: "FinishedSpan.ConsumeTwice" , message = "consume called twice on FinishedSpan in the same span processor" ) ;
316316 }
317+ self . try_consume ( )
318+ . expect ( "Span data has already been consumed" )
319+ }
320+
321+ /// Takes ownership of the span data in the `FinishedSpan`.
322+ ///
323+ /// Returns `None` if the span data has already been consumed.
324+ pub fn try_consume ( & mut self ) -> Option < crate :: trace:: SpanData > {
325+ if self . is_consumed {
326+ return None ;
327+ }
317328 self . is_consumed = true ;
318329 if self . is_last_processor {
319- self . span
320- . take ( )
321- . expect ( "Span data has already been consumed" )
330+ self . span . take ( )
322331 } else {
323- self . span
324- . as_ref ( )
325- . expect ( "Span data has already been consumed" )
326- . clone ( )
332+ self . span . clone ( )
327333 }
328334 }
329335}
You can’t perform that action at this time.
0 commit comments