Skip to content

Commit 3140cfd

Browse files
Move TracerProvider::force_flush to SDK (open-telemetry#658)
Co-authored-by: Rohith VenkataRamanaNanthan <[email protected]>
1 parent 69534d1 commit 3140cfd

File tree

6 files changed

+14
-55
lines changed

6 files changed

+14
-55
lines changed

opentelemetry-api/src/global/mod.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ pub use propagation::{get_text_map_propagator, set_text_map_propagator};
157157
#[cfg(feature = "trace")]
158158
#[cfg_attr(docsrs, doc(cfg(feature = "trace")))]
159159
pub use trace::{
160-
force_flush_tracer_provider, set_tracer_provider, shutdown_tracer_provider, tracer,
161-
tracer_provider, BoxedSpan, BoxedTracer, GlobalTracerProvider, ObjectSafeTracer,
162-
ObjectSafeTracerProvider,
160+
set_tracer_provider, shutdown_tracer_provider, tracer, tracer_provider, BoxedSpan, BoxedTracer,
161+
GlobalTracerProvider, ObjectSafeTracer, ObjectSafeTracerProvider,
163162
};

opentelemetry-api/src/global/trace.rs

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
use crate::global::handle_error;
2-
use crate::trace::{noop::NoopTracerProvider, SpanContext, Status, TraceResult};
1+
use crate::trace::{noop::NoopTracerProvider, SpanContext, Status};
32
use crate::{trace, trace::TracerProvider, Context, KeyValue};
43
use std::borrow::Cow;
54
use std::fmt;
@@ -287,9 +286,6 @@ pub trait ObjectSafeTracerProvider {
287286
version: Option<&'static str>,
288287
schema_url: Option<&'static str>,
289288
) -> Box<dyn ObjectSafeTracer + Send + Sync>;
290-
291-
/// Force flush all remaining spans in span processors and return results.
292-
fn force_flush(&self) -> Vec<TraceResult<()>>;
293289
}
294290

295291
impl<S, T, P> ObjectSafeTracerProvider for P
@@ -307,10 +303,6 @@ where
307303
) -> Box<dyn ObjectSafeTracer + Send + Sync> {
308304
Box::new(self.versioned_tracer(name, version, schema_url))
309305
}
310-
311-
fn force_flush(&self) -> Vec<TraceResult<()>> {
312-
self.force_flush()
313-
}
314306
}
315307

316308
/// Represents the globally configured [`TracerProvider`] instance for this
@@ -358,11 +350,6 @@ impl trace::TracerProvider for GlobalTracerProvider {
358350
.versioned_tracer_boxed(name.into(), version, schema_url),
359351
)
360352
}
361-
362-
/// Force flush all remaining spans in span processors and return results.
363-
fn force_flush(&self) -> Vec<TraceResult<()>> {
364-
self.provider.force_flush()
365-
}
366353
}
367354

368355
lazy_static::lazy_static! {
@@ -426,21 +413,3 @@ pub fn shutdown_tracer_provider() {
426413
GlobalTracerProvider::new(NoopTracerProvider::new()),
427414
);
428415
}
429-
430-
/// Force flush all remaining spans in span processors.
431-
///
432-
/// Use the [`global::handle_error`] to handle errors happened during force flush.
433-
///
434-
/// [`global::handle_error`]: crate::global::handle_error
435-
pub fn force_flush_tracer_provider() {
436-
let tracer_provider = GLOBAL_TRACER_PROVIDER
437-
.write()
438-
.expect("GLOBAL_TRACER_PROVIDER RwLock poisoned");
439-
440-
let results = trace::TracerProvider::force_flush(&*tracer_provider);
441-
for result in results {
442-
if let Err(err) = result {
443-
handle_error(err)
444-
}
445-
}
446-
}

opentelemetry-api/src/trace/noop.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
//! This implementation is returned as the global tracer if no `Tracer`
44
//! has been set. It is also useful for testing purposes as it is intended
55
//! to have minimal resource utilization and runtime impact.
6-
use crate::trace::TraceResult;
76
use crate::{
87
propagation::{text_map_propagator::FieldIter, Extractor, Injector, TextMapPropagator},
98
trace,
@@ -38,11 +37,6 @@ impl trace::TracerProvider for NoopTracerProvider {
3837
) -> Self::Tracer {
3938
NoopTracer::new()
4039
}
41-
42-
/// Return an empty `Vec` as there isn't any span processors in `NoopTracerProvider`
43-
fn force_flush(&self) -> Vec<TraceResult<()>> {
44-
Vec::new()
45-
}
4640
}
4741

4842
/// A no-op instance of a `Span`.

opentelemetry-api/src/trace/tracer_provider.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::trace::{TraceResult, Tracer};
1+
use crate::trace::Tracer;
22
use std::borrow::Cow;
33

44
/// Types that can create instances of [`Tracer`].
@@ -67,7 +67,4 @@ pub trait TracerProvider {
6767
version: Option<&'static str>,
6868
schema_url: Option<&'static str>,
6969
) -> Self::Tracer;
70-
71-
/// Force flush all remaining spans in span processors and return results.
72-
fn force_flush(&self) -> Vec<TraceResult<()>>;
7370
}

opentelemetry-jaeger/tests/integration_test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#[cfg(feature = "integration_test")]
22
mod tests {
33
use opentelemetry::sdk::trace::Tracer as SdkTracer;
4-
use opentelemetry::trace::{Status, TraceContextExt, Tracer, TracerProvider};
4+
use opentelemetry::trace::{Status, TraceContextExt, Tracer};
55
use opentelemetry::KeyValue;
66
use opentelemetry_jaeger::testing::{
77
jaeger_api_v2 as jaeger_api, jaeger_client::JaegerTestClient,

opentelemetry-sdk/src/trace/provider.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,14 @@ impl TracerProvider {
6969
pub fn config(&self) -> &crate::trace::Config {
7070
&self.inner.config
7171
}
72+
73+
/// Force flush all remaining spans in span processors and return results.
74+
pub fn force_flush(&self) -> Vec<TraceResult<()>> {
75+
self.span_processors()
76+
.iter()
77+
.map(|processor| processor.force_flush())
78+
.collect()
79+
}
7280
}
7381

7482
impl opentelemetry_api::trace::TracerProvider for TracerProvider {
@@ -97,14 +105,6 @@ impl opentelemetry_api::trace::TracerProvider for TracerProvider {
97105

98106
Tracer::new(instrumentation_lib, Arc::downgrade(&self.inner))
99107
}
100-
101-
/// Force flush all remaining spans in span processors and return results.
102-
fn force_flush(&self) -> Vec<TraceResult<()>> {
103-
self.span_processors()
104-
.iter()
105-
.map(|processor| processor.force_flush())
106-
.collect()
107-
}
108108
}
109109

110110
/// Builder for provider attributes.
@@ -200,7 +200,7 @@ mod tests {
200200
use crate::trace::provider::TracerProviderInner;
201201
use crate::trace::{Config, Span, SpanProcessor};
202202
use crate::Resource;
203-
use opentelemetry_api::trace::{TraceError, TraceResult, TracerProvider};
203+
use opentelemetry_api::trace::{TraceError, TraceResult};
204204
use opentelemetry_api::{Context, Key, KeyValue};
205205
use std::env;
206206
use std::sync::Arc;

0 commit comments

Comments
 (0)