@@ -9,7 +9,7 @@ use std::{
99
1010use opentelemetry:: {
1111 metrics:: { Meter , MeterProvider } ,
12- otel_debug, otel_error, InstrumentationScope ,
12+ otel_debug, otel_error, otel_info , InstrumentationScope ,
1313} ;
1414
1515use crate :: metrics:: { MetricError , MetricResult } ;
@@ -109,6 +109,10 @@ impl SdkMeterProvider {
109109 /// There is no guaranteed that all telemetry be flushed or all resources have
110110 /// been released on error.
111111 pub fn shutdown ( & self ) -> MetricResult < ( ) > {
112+ otel_info ! (
113+ name: "MeterProvider.Shutdown" ,
114+ message = "User initiated shutdown of MeterProvider."
115+ ) ;
112116 self . inner . shutdown ( )
113117 }
114118}
@@ -139,15 +143,25 @@ impl Drop for SdkMeterProviderInner {
139143 // shutdown(), then we don't need to call shutdown again.
140144 if self . is_shutdown . load ( Ordering :: Relaxed ) {
141145 otel_debug ! (
142- name: "MeterProvider.AlreadyShutdown" ,
143- message = "Meter provider was already shut down; drop will not attempt shutdown again."
146+ name: "MeterProvider.Drop. AlreadyShutdown" ,
147+ message = "MeterProvider was already shut down; drop will not attempt shutdown again."
144148 ) ;
145- } else if let Err ( err) = self . shutdown ( ) {
146- otel_error ! (
147- name: "MeterProvider.ShutdownFailed" ,
148- message = "Shutdown attempt failed during drop of MeterProvider." ,
149- reason = format!( "{}" , err)
149+ } else {
150+ otel_info ! (
151+ name: "MeterProvider.Drop" ,
152+ message = "Last reference of MeterProvider dropped, initiating shutdown."
150153 ) ;
154+ if let Err ( err) = self . shutdown ( ) {
155+ otel_error ! (
156+ name: "MeterProvider.Drop.ShutdownFailed" ,
157+ message = "Shutdown attempt failed during drop of MeterProvider." ,
158+ reason = format!( "{}" , err)
159+ ) ;
160+ } else {
161+ otel_info ! (
162+ name: "MeterProvider.Drop.ShutdownCompleted" ,
163+ ) ;
164+ }
151165 }
152166 }
153167}
@@ -231,7 +245,7 @@ impl MeterProviderBuilder {
231245 /// Construct a new [MeterProvider] with this configuration.
232246
233247 pub fn build ( self ) -> SdkMeterProvider {
234- SdkMeterProvider {
248+ let meter_provider = SdkMeterProvider {
235249 inner : Arc :: new ( SdkMeterProviderInner {
236250 pipes : Arc :: new ( Pipelines :: new (
237251 self . resource . unwrap_or_default ( ) ,
@@ -241,7 +255,12 @@ impl MeterProviderBuilder {
241255 meters : Default :: default ( ) ,
242256 is_shutdown : AtomicBool :: new ( false ) ,
243257 } ) ,
244- }
258+ } ;
259+
260+ otel_info ! (
261+ name: "MeterProvider.Built" ,
262+ ) ;
263+ meter_provider
245264 }
246265}
247266
0 commit comments