@@ -23,17 +23,12 @@ pub const TXN_ID_ATTR_KEY: &str = "txn_id";
2323/// Calls provider shutdown exactly once when dropped.
2424pub struct OtelGuard {
2525 tracer_provider : Option < SdkTracerProvider > ,
26- tracer : Option < opentelemetry_sdk:: trace:: Tracer > ,
2726}
2827
2928impl OtelGuard {
30- fn new (
31- trace_provider : SdkTracerProvider ,
32- tracer : Option < opentelemetry_sdk:: trace:: Tracer > ,
33- ) -> Self {
29+ fn new ( trace_provider : SdkTracerProvider ) -> Self {
3430 Self {
3531 tracer_provider : Some ( trace_provider) ,
36- tracer,
3732 }
3833 }
3934
@@ -44,10 +39,6 @@ impl OtelGuard {
4439 }
4540 }
4641 }
47-
48- pub fn tracer ( & self ) -> Option < opentelemetry_sdk:: trace:: Tracer > {
49- self . tracer . clone ( )
50- }
5142}
5243
5344impl Drop for OtelGuard {
@@ -83,20 +74,23 @@ pub fn init_otel(
8374
8475 let ( _tracer, trace_provider) = build_tracer_provider ( service_name, "otlp-layer" ) ?;
8576 install_global_tracer_provider ( trace_provider. clone ( ) ) ;
86- Ok ( Some ( OtelGuard :: new ( trace_provider, None ) ) )
77+ Ok ( Some ( OtelGuard :: new ( trace_provider) ) )
8778}
8879
8980pub fn init_otel_tracing (
9081 service_name : & str ,
9182 tracer_name : & ' static str ,
92- ) -> Result < Option < OtelGuard > , Box < dyn std:: error:: Error + Send + Sync + ' static > > {
83+ ) -> Result <
84+ Option < ( opentelemetry_sdk:: trace:: Tracer , OtelGuard ) > ,
85+ Box < dyn std:: error:: Error + Send + Sync + ' static > ,
86+ > {
9387 if service_name. is_empty ( ) {
9488 return Ok ( None ) ;
9589 }
9690
9791 let ( tracer, trace_provider) = build_tracer_provider ( service_name, tracer_name) ?;
9892 install_global_tracer_provider ( trace_provider. clone ( ) ) ;
99- Ok ( Some ( OtelGuard :: new ( trace_provider, Some ( tracer ) ) ) )
93+ Ok ( Some ( ( tracer , OtelGuard :: new ( trace_provider) ) ) )
10094}
10195
10296fn build_tracer_provider (
@@ -594,7 +588,7 @@ mod tests {
594588 #[ test]
595589 fn otel_guard_shutdown_once_disarms_provider ( ) {
596590 let provider = SdkTracerProvider :: builder ( ) . build ( ) ;
597- let mut guard = OtelGuard :: new ( provider, None ) ;
591+ let mut guard = OtelGuard :: new ( provider) ;
598592 assert ! ( guard. tracer_provider. is_some( ) ) ;
599593
600594 guard. shutdown_once ( ) ;
@@ -606,19 +600,8 @@ mod tests {
606600 }
607601
608602 #[ test]
609- fn otel_guard_keeps_tracer_when_present ( ) {
610- let provider = SdkTracerProvider :: builder ( ) . build ( ) ;
611- let tracer = provider. tracer ( "test-tracer" ) ;
612- let runtime = OtelGuard :: new ( provider, Some ( tracer) ) ;
613-
614- assert ! ( runtime. tracer( ) . is_some( ) ) ;
615- }
616-
617- #[ test]
618- fn otel_guard_handles_absent_tracer ( ) {
619- let provider = SdkTracerProvider :: builder ( ) . build ( ) ;
620- let runtime = OtelGuard :: new ( provider, None ) ;
621-
622- assert ! ( runtime. tracer( ) . is_none( ) ) ;
603+ fn init_otel_tracing_empty_service_name_returns_none ( ) {
604+ let runtime = init_otel_tracing ( "" , "otlp-layer" ) . unwrap ( ) ;
605+ assert ! ( runtime. is_none( ) ) ;
623606 }
624607}
0 commit comments