@@ -5,7 +5,7 @@ use once_cell::unsync;
5
5
#[ cfg( feature = "activate_context" ) ]
6
6
use opentelemetry:: ContextGuard ;
7
7
use opentelemetry:: {
8
- trace:: { self as otel, noop, SpanBuilder , SpanKind , Status , TraceContextExt } ,
8
+ trace:: { self as otel, noop, Span , SpanBuilder , SpanKind , Status , TraceContextExt } ,
9
9
Context as OtelContext , Key , KeyValue , StringValue , Value ,
10
10
} ;
11
11
#[ cfg( feature = "activate_context" ) ]
@@ -1314,30 +1314,31 @@ where
1314
1314
end_time,
1315
1315
} ) = otel_data
1316
1316
{
1317
- let cx = if let Some ( builder) = builder {
1318
- let span = builder. start_with_context ( & self . tracer , & parent_cx) ;
1319
- parent_cx. with_span ( span)
1320
- } else {
1321
- parent_cx
1322
- } ;
1323
-
1324
- let span = cx. span ( ) ;
1325
1317
// Append busy/idle timings when enabled.
1326
- if let Some ( timings) = timings {
1318
+ let timings = timings. and_then ( |timings| {
1327
1319
let busy_ns = Key :: new ( "busy_ns" ) ;
1328
1320
let idle_ns = Key :: new ( "idle_ns" ) ;
1329
1321
1330
- span . set_attributes ( vec ! [
1322
+ Some ( vec ! [
1331
1323
KeyValue :: new( busy_ns, timings. busy) ,
1332
1324
KeyValue :: new( idle_ns, timings. idle) ,
1333
- ] ) ;
1334
- }
1325
+ ] )
1326
+ } ) ;
1335
1327
1336
- if let Some ( end_time) = end_time {
1337
- span. end_with_timestamp ( end_time) ;
1328
+ if let Some ( builder) = builder {
1329
+ // Don't create the context here just to get a SpanRef since it's costly
1330
+ let mut span = builder. start_with_context ( & self . tracer , & parent_cx) ;
1331
+ timings. map ( |timings| span. set_attributes ( timings) ) ;
1332
+ if let Some ( end_time) = end_time {
1333
+ span. end_with_timestamp ( end_time) ;
1334
+ } else {
1335
+ span. end ( ) ;
1336
+ }
1338
1337
} else {
1339
- span. end ( ) ;
1340
- }
1338
+ let span = parent_cx. span ( ) ;
1339
+ timings. map ( |timings| span. set_attributes ( timings) ) ;
1340
+ end_time. map_or_else ( || span. end ( ) , |end_time| span. end_with_timestamp ( end_time) ) ;
1341
+ } ;
1341
1342
}
1342
1343
}
1343
1344
0 commit comments