diff --git a/opentelemetry-api/src/global/mod.rs b/opentelemetry-api/src/global/mod.rs index 25a865a2c5..4dd7df4f5a 100644 --- a/opentelemetry-api/src/global/mod.rs +++ b/opentelemetry-api/src/global/mod.rs @@ -157,7 +157,6 @@ pub use propagation::{get_text_map_propagator, set_text_map_propagator}; #[cfg(feature = "trace")] #[cfg_attr(docsrs, doc(cfg(feature = "trace")))] pub use trace::{ - force_flush_tracer_provider, set_tracer_provider, shutdown_tracer_provider, tracer, - tracer_provider, BoxedSpan, BoxedTracer, GlobalTracerProvider, ObjectSafeTracer, - ObjectSafeTracerProvider, + set_tracer_provider, shutdown_tracer_provider, tracer, tracer_provider, BoxedSpan, BoxedTracer, + GlobalTracerProvider, ObjectSafeTracer, ObjectSafeTracerProvider, }; diff --git a/opentelemetry-api/src/global/trace.rs b/opentelemetry-api/src/global/trace.rs index 2d4ecffa95..27dae44178 100644 --- a/opentelemetry-api/src/global/trace.rs +++ b/opentelemetry-api/src/global/trace.rs @@ -1,5 +1,4 @@ -use crate::global::handle_error; -use crate::trace::{noop::NoopTracerProvider, SpanContext, Status, TraceResult}; +use crate::trace::{noop::NoopTracerProvider, SpanContext, Status}; use crate::{trace, trace::TracerProvider, Context, KeyValue}; use std::borrow::Cow; use std::fmt; @@ -287,9 +286,6 @@ pub trait ObjectSafeTracerProvider { version: Option<&'static str>, schema_url: Option<&'static str>, ) -> Box; - - /// Force flush all remaining spans in span processors and return results. - fn force_flush(&self) -> Vec>; } impl ObjectSafeTracerProvider for P @@ -307,10 +303,6 @@ where ) -> Box { Box::new(self.versioned_tracer(name, version, schema_url)) } - - fn force_flush(&self) -> Vec> { - self.force_flush() - } } /// Represents the globally configured [`TracerProvider`] instance for this @@ -358,11 +350,6 @@ impl trace::TracerProvider for GlobalTracerProvider { .versioned_tracer_boxed(name.into(), version, schema_url), ) } - - /// Force flush all remaining spans in span processors and return results. - fn force_flush(&self) -> Vec> { - self.provider.force_flush() - } } lazy_static::lazy_static! { @@ -426,21 +413,3 @@ pub fn shutdown_tracer_provider() { GlobalTracerProvider::new(NoopTracerProvider::new()), ); } - -/// Force flush all remaining spans in span processors. -/// -/// Use the [`global::handle_error`] to handle errors happened during force flush. -/// -/// [`global::handle_error`]: crate::global::handle_error -pub fn force_flush_tracer_provider() { - let tracer_provider = GLOBAL_TRACER_PROVIDER - .write() - .expect("GLOBAL_TRACER_PROVIDER RwLock poisoned"); - - let results = trace::TracerProvider::force_flush(&*tracer_provider); - for result in results { - if let Err(err) = result { - handle_error(err) - } - } -} diff --git a/opentelemetry-api/src/trace/noop.rs b/opentelemetry-api/src/trace/noop.rs index f5f620a124..2af3e13cfc 100644 --- a/opentelemetry-api/src/trace/noop.rs +++ b/opentelemetry-api/src/trace/noop.rs @@ -3,7 +3,6 @@ //! This implementation is returned as the global tracer if no `Tracer` //! has been set. It is also useful for testing purposes as it is intended //! to have minimal resource utilization and runtime impact. -use crate::trace::TraceResult; use crate::{ propagation::{text_map_propagator::FieldIter, Extractor, Injector, TextMapPropagator}, trace, @@ -38,11 +37,6 @@ impl trace::TracerProvider for NoopTracerProvider { ) -> Self::Tracer { NoopTracer::new() } - - /// Return an empty `Vec` as there isn't any span processors in `NoopTracerProvider` - fn force_flush(&self) -> Vec> { - Vec::new() - } } /// A no-op instance of a `Span`. diff --git a/opentelemetry-api/src/trace/tracer_provider.rs b/opentelemetry-api/src/trace/tracer_provider.rs index b6a4e62552..c560a3e945 100644 --- a/opentelemetry-api/src/trace/tracer_provider.rs +++ b/opentelemetry-api/src/trace/tracer_provider.rs @@ -1,4 +1,4 @@ -use crate::trace::{TraceResult, Tracer}; +use crate::trace::Tracer; use std::borrow::Cow; /// Types that can create instances of [`Tracer`]. @@ -67,7 +67,4 @@ pub trait TracerProvider { version: Option<&'static str>, schema_url: Option<&'static str>, ) -> Self::Tracer; - - /// Force flush all remaining spans in span processors and return results. - fn force_flush(&self) -> Vec>; } diff --git a/opentelemetry-jaeger/tests/integration_test.rs b/opentelemetry-jaeger/tests/integration_test.rs index cdbb6b53a9..dd987f050c 100644 --- a/opentelemetry-jaeger/tests/integration_test.rs +++ b/opentelemetry-jaeger/tests/integration_test.rs @@ -1,7 +1,7 @@ #[cfg(feature = "integration_test")] mod tests { use opentelemetry::sdk::trace::Tracer as SdkTracer; - use opentelemetry::trace::{Status, TraceContextExt, Tracer, TracerProvider}; + use opentelemetry::trace::{Status, TraceContextExt, Tracer}; use opentelemetry::KeyValue; use opentelemetry_jaeger::testing::{ jaeger_api_v2 as jaeger_api, jaeger_client::JaegerTestClient, diff --git a/opentelemetry-sdk/src/trace/provider.rs b/opentelemetry-sdk/src/trace/provider.rs index 3c1f267929..4b5210023f 100644 --- a/opentelemetry-sdk/src/trace/provider.rs +++ b/opentelemetry-sdk/src/trace/provider.rs @@ -69,6 +69,14 @@ impl TracerProvider { pub fn config(&self) -> &crate::trace::Config { &self.inner.config } + + /// Force flush all remaining spans in span processors and return results. + pub fn force_flush(&self) -> Vec> { + self.span_processors() + .iter() + .map(|processor| processor.force_flush()) + .collect() + } } impl opentelemetry_api::trace::TracerProvider for TracerProvider { @@ -97,14 +105,6 @@ impl opentelemetry_api::trace::TracerProvider for TracerProvider { Tracer::new(instrumentation_lib, Arc::downgrade(&self.inner)) } - - /// Force flush all remaining spans in span processors and return results. - fn force_flush(&self) -> Vec> { - self.span_processors() - .iter() - .map(|processor| processor.force_flush()) - .collect() - } } /// Builder for provider attributes. @@ -200,7 +200,7 @@ mod tests { use crate::trace::provider::TracerProviderInner; use crate::trace::{Config, Span, SpanProcessor}; use crate::Resource; - use opentelemetry_api::trace::{TraceError, TraceResult, TracerProvider}; + use opentelemetry_api::trace::{TraceError, TraceResult}; use opentelemetry_api::{Context, Key, KeyValue}; use std::env; use std::sync::Arc;