80
80
let ( description, data) = extract_span_data ( attrs) ;
81
81
82
82
let trace_id = parent
83
- . map ( |parent| parent. trace_id . clone ( ) )
83
+ . map ( |parent| parent. trace_id )
84
84
. unwrap_or_else ( TraceId :: default) ;
85
85
86
86
protocol:: Span {
@@ -127,9 +127,9 @@ where
127
127
span_id : sentry_span. span_id ,
128
128
trace_id : sentry_span. trace_id ,
129
129
parent_span_id : sentry_span. parent_span_id ,
130
- op : sentry_span. op . clone ( ) ,
131
- description : sentry_span. description . clone ( ) ,
132
- status : sentry_span. status . clone ( ) ,
130
+ op : sentry_span. op ,
131
+ description : sentry_span. description ,
132
+ status : sentry_span. status ,
133
133
} ) ) ,
134
134
) ;
135
135
@@ -291,7 +291,10 @@ where
291
291
/// When a new Span gets created, run the filter and initialize the trace extension
292
292
/// if it passes
293
293
fn new_span ( & self , attrs : & span:: Attributes < ' _ > , id : & span:: Id , ctx : Context < ' _ , S > ) {
294
- let span = ctx. span ( id) . expect ( "Span not found, this is a bug" ) ;
294
+ let span = match ctx. span ( id) {
295
+ Some ( span) => span,
296
+ None => return ,
297
+ } ;
295
298
296
299
if !( self . span_filter ) ( span. metadata ( ) ) {
297
300
return ;
@@ -319,9 +322,12 @@ where
319
322
/// From the tracing-subscriber implementation of span timings,
320
323
/// keep track of when the span was last entered
321
324
fn on_enter ( & self , id : & span:: Id , ctx : Context < ' _ , S > ) {
322
- let span = ctx. span ( id) . expect ( "Span not found, this is a bug" ) ;
323
- let mut extensions = span. extensions_mut ( ) ;
325
+ let span = match ctx. span ( id) {
326
+ Some ( span) => span,
327
+ None => return ,
328
+ } ;
324
329
330
+ let mut extensions = span. extensions_mut ( ) ;
325
331
if let Some ( timings) = extensions. get_mut :: < Trace > ( ) {
326
332
let now = Instant :: now ( ) ;
327
333
timings. idle += ( now - timings. last ) . as_nanos ( ) as u64 ;
@@ -332,9 +338,12 @@ where
332
338
/// From the tracing-subscriber implementation of span timings,
333
339
/// keep track of when the span was last exited
334
340
fn on_exit ( & self , id : & span:: Id , ctx : Context < ' _ , S > ) {
335
- let span = ctx. span ( id) . expect ( "Span not found, this is a bug" ) ;
336
- let mut extensions = span. extensions_mut ( ) ;
341
+ let span = match ctx. span ( id) {
342
+ Some ( span) => span,
343
+ None => return ,
344
+ } ;
337
345
346
+ let mut extensions = span. extensions_mut ( ) ;
338
347
if let Some ( timings) = extensions. get_mut :: < Trace > ( ) {
339
348
let now = Instant :: now ( ) ;
340
349
timings. busy += ( now - timings. last ) . as_nanos ( ) as u64 ;
@@ -347,9 +356,12 @@ where
347
356
/// attach it to a parent span or submit it as a Transaction if
348
357
/// it is a root of the span tree
349
358
fn on_close ( & self , id : span:: Id , ctx : Context < ' _ , S > ) {
350
- let span = ctx. span ( & id) . expect ( "Span not found, this is a bug" ) ;
351
- let mut extensions = span. extensions_mut ( ) ;
359
+ let span = match ctx. span ( & id) {
360
+ Some ( span) => span,
361
+ None => return ,
362
+ } ;
352
363
364
+ let mut extensions = span. extensions_mut ( ) ;
353
365
let mut trace = match extensions. remove :: < Trace > ( ) {
354
366
Some ( trace) => trace,
355
367
None => return ,
@@ -384,7 +396,11 @@ where
384
396
// transaction root and submit it to Sentry
385
397
let span = & span;
386
398
Hub :: with_active ( move |hub| {
387
- let client = hub. client ( ) . unwrap ( ) ;
399
+ let client = match hub. client ( ) {
400
+ Some ( client) => client,
401
+ None => return ,
402
+ } ;
403
+
388
404
if !client. sample_traces_should_send ( ) {
389
405
return ;
390
406
}
0 commit comments