@@ -280,24 +280,12 @@ impl OtelMeterProvider {
280
280
Err ( err) => Err ( ObservabilityError :: new ( ErrorKind :: MetricsFlush , err) ) ,
281
281
}
282
282
}
283
-
284
- /// Gracefully shutdown the metric pipeline.
285
- pub fn shutdown ( & self ) -> Result < ( ) , ObservabilityError > {
286
- match self . meter_provider . force_flush ( ) {
287
- Ok ( _) => Ok ( ( ) ) ,
288
- Err ( err) => Err ( ObservabilityError :: new ( ErrorKind :: MetricsShutdown , err) ) ,
289
- }
290
- }
291
283
}
292
284
293
285
impl ProvideMeter for OtelMeterProvider {
294
286
fn get_meter ( & self , scope : & ' static str , _attributes : Option < & Attributes > ) -> Meter {
295
287
Meter :: new ( Arc :: new ( MeterWrap ( self . meter_provider . meter ( scope) ) ) )
296
288
}
297
-
298
- fn as_any ( & self ) -> & dyn std:: any:: Any {
299
- self
300
- }
301
289
}
302
290
303
291
#[ cfg( test) ]
@@ -325,7 +313,8 @@ mod tests {
325
313
let otel_mp = SdkMeterProvider :: builder ( ) . with_reader ( reader) . build ( ) ;
326
314
327
315
// Create the SDK metrics types from the OTel objects
328
- let sdk_mp = OtelMeterProvider :: new ( otel_mp) ;
316
+ let sdk_mp = Arc :: new ( OtelMeterProvider :: new ( otel_mp) ) ;
317
+ let sdk_ref = sdk_mp. clone ( ) ;
329
318
let sdk_tp = TelemetryProvider :: builder ( ) . meter_provider ( sdk_mp) . build ( ) ;
330
319
331
320
// Get the dyn versions of the SDK metrics objects
@@ -345,12 +334,7 @@ mod tests {
345
334
histogram. record ( 1.234 , None , None ) ;
346
335
347
336
// Gracefully shutdown the metrics provider so all metrics are flushed through the pipeline
348
- dyn_sdk_mp
349
- . as_any ( )
350
- . downcast_ref :: < OtelMeterProvider > ( )
351
- . unwrap ( )
352
- . shutdown ( )
353
- . unwrap ( ) ;
337
+ sdk_ref. flush ( ) . unwrap ( ) ;
354
338
355
339
// Extract the metrics from the exporter and assert that they are what we expect
356
340
let finished_metrics = exporter. get_finished_metrics ( ) . unwrap ( ) ;
@@ -390,7 +374,8 @@ mod tests {
390
374
let otel_mp = SdkMeterProvider :: builder ( ) . with_reader ( reader) . build ( ) ;
391
375
392
376
// Create the SDK metrics types from the OTel objects
393
- let sdk_mp = OtelMeterProvider :: new ( otel_mp) ;
377
+ let sdk_mp = Arc :: new ( OtelMeterProvider :: new ( otel_mp) ) ;
378
+ let sdk_ref = sdk_mp. clone ( ) ;
394
379
let sdk_tp = TelemetryProvider :: builder ( ) . meter_provider ( sdk_mp) . build ( ) ;
395
380
396
381
// Get the dyn versions of the SDK metrics objects
@@ -445,12 +430,7 @@ mod tests {
445
430
async_mono_counter. record ( 4 , None , None ) ;
446
431
447
432
// Gracefully shutdown the metrics provider so all metrics are flushed through the pipeline
448
- dyn_sdk_mp
449
- . as_any ( )
450
- . downcast_ref :: < OtelMeterProvider > ( )
451
- . unwrap ( )
452
- . shutdown ( )
453
- . unwrap ( ) ;
433
+ sdk_ref. flush ( ) . unwrap ( ) ;
454
434
455
435
// Extract the metrics from the exporter
456
436
let finished_metrics = exporter. get_finished_metrics ( ) . unwrap ( ) ;
0 commit comments