@@ -12,8 +12,11 @@ use opentelemetry::{
1212 otel_debug, otel_error, otel_info, InstrumentationScope ,
1313} ;
1414
15- use crate :: metrics:: { MetricError , MetricResult } ;
1615use crate :: Resource ;
16+ use crate :: {
17+ error:: ShutdownResult ,
18+ metrics:: { MetricError , MetricResult } ,
19+ } ;
1720
1821use super :: {
1922 meter:: SdkMeter , noop:: NoopMeter , pipeline:: Pipelines , reader:: MetricReader , view:: View ,
@@ -108,7 +111,7 @@ impl SdkMeterProvider {
108111 ///
109112 /// There is no guaranteed that all telemetry be flushed or all resources have
110113 /// been released on error.
111- pub fn shutdown ( & self ) -> MetricResult < ( ) > {
114+ pub fn shutdown ( & self ) -> ShutdownResult {
112115 otel_info ! (
113116 name: "MeterProvider.Shutdown" ,
114117 message = "User initiated shutdown of MeterProvider."
@@ -131,15 +134,13 @@ impl SdkMeterProviderInner {
131134 }
132135 }
133136
134- fn shutdown ( & self ) -> MetricResult < ( ) > {
137+ fn shutdown ( & self ) -> ShutdownResult {
135138 if self
136139 . shutdown_invoked
137140 . swap ( true , std:: sync:: atomic:: Ordering :: SeqCst )
138141 {
139142 // If the previous value was true, shutdown was already invoked.
140- Err ( MetricError :: Other (
141- "MeterProvider shutdown already invoked." . into ( ) ,
142- ) )
143+ Err ( crate :: error:: ShutdownError :: AlreadyShutdown )
143144 } else {
144145 self . pipes . shutdown ( )
145146 }
0 commit comments