Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: clean up trace SDK APIs #1755

Merged
merged 9 commits into from
May 30, 2024
2 changes: 1 addition & 1 deletion examples/tracing-jaeger/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ fn init_tracer_provider() -> Result<opentelemetry_sdk::trace::TracerProvider, Tr
.with_endpoint("http://localhost:4317"),
)
.with_trace_config(
sdktrace::config().with_resource(Resource::new(vec![KeyValue::new(
sdktrace::Config::default().with_resource(Resource::new(vec![KeyValue::new(
SERVICE_NAME,
"tracing-jaeger",
)])),
Expand Down
7 changes: 4 additions & 3 deletions opentelemetry-appender-tracing/src/layer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,8 @@ mod tests {
use opentelemetry::{logs::AnyValue, Key};
use opentelemetry_sdk::logs::LoggerProvider;
use opentelemetry_sdk::testing::logs::InMemoryLogsExporter;
use opentelemetry_sdk::trace::{config, Sampler, TracerProvider};
use opentelemetry_sdk::trace;
use opentelemetry_sdk::trace::{Sampler, TracerProvider};
use tracing::error;
use tracing_subscriber::layer::SubscriberExt;

Expand Down Expand Up @@ -300,7 +301,7 @@ mod tests {

// setup tracing as well.
let tracer_provider = TracerProvider::builder()
.with_config(config().with_sampler(Sampler::AlwaysOn))
.with_config(trace::Config::default().with_sampler(Sampler::AlwaysOn))
.build();
let tracer = tracer_provider.tracer("test-tracer");

Expand Down Expand Up @@ -464,7 +465,7 @@ mod tests {

// setup tracing as well.
let tracer_provider = TracerProvider::builder()
.with_config(config().with_sampler(Sampler::AlwaysOn))
.with_config(trace::Config::default().with_sampler(Sampler::AlwaysOn))
.build();
let tracer = tracer_provider.tracer("test-tracer");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ fn init_tracer_provider() -> Result<sdktrace::TracerProvider, TraceError> {
.tracing()
.with_exporter(opentelemetry_otlp::new_exporter().tonic())
.with_trace_config(
sdktrace::config().with_resource(Resource::new(vec![KeyValue::new(
sdktrace::Config::default().with_resource(Resource::new(vec![KeyValue::new(
opentelemetry_semantic_conventions::resource::SERVICE_NAME,
"basic-otlp-tracing-example",
)])),
Expand Down
4 changes: 4 additions & 0 deletions opentelemetry-sdk/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@
reference or owned`LogData`. If the exporter needs to process the log data
asynchronously, it should clone the log data to ensure it can be safely processed without
lifetime issues.
- Clean up public methods in SDK.
- [`TracerProvider::span_processors`] and [`TracerProvider::config`] was removed as it's not part of the spec.
cijothomas marked this conversation as resolved.
Show resolved Hide resolved
- Added `non_exhaustive` annotation to [`trace::Config`]. Marked [`config`] as deprecated since it's only a wrapper for `Config::default`
- Removed [`Tracer::tracer_provder`] and [`Tracer::instrument_libraries`] as it's not part of the spec.

- **Breaking** [#1830](https://github.com/open-telemetry/opentelemetry-rust/pull/1830/files) [Traces SDK] Improves
performance by sending Resource information to processors (and exporters) once, instead of sending with every log. If you are an author
Expand Down
7 changes: 5 additions & 2 deletions opentelemetry-sdk/benches/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ use opentelemetry::{
};
use opentelemetry_sdk::{
export::trace::{ExportResult, SpanData, SpanExporter},
trace::{config, Sampler, TracerProvider},
trace,
trace::{Sampler, TracerProvider},
};
#[cfg(not(target_os = "windows"))]
use pprof::criterion::{Output, PProfProfiler};
Expand Down Expand Up @@ -126,7 +127,9 @@ impl Display for Environment {

fn parent_sampled_tracer(inner_sampler: Sampler) -> (TracerProvider, BoxedTracer) {
let provider = TracerProvider::builder()
.with_config(config().with_sampler(Sampler::ParentBased(Box::new(inner_sampler))))
.with_config(
trace::Config::default().with_sampler(Sampler::ParentBased(Box::new(inner_sampler))),
)
.with_simple_exporter(NoopExporter)
.build();
let tracer = provider.tracer(module_path!());
Expand Down
5 changes: 3 additions & 2 deletions opentelemetry-sdk/benches/log.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ use opentelemetry::trace::TracerProvider as _;
use opentelemetry::Key;
use opentelemetry_sdk::export::logs::{LogData, LogExporter};
use opentelemetry_sdk::logs::{Logger, LoggerProvider};
use opentelemetry_sdk::trace::{config, Sampler, TracerProvider};
use opentelemetry_sdk::trace;
use opentelemetry_sdk::trace::{Sampler, TracerProvider};

#[derive(Debug)]
struct VoidExporter;
Expand Down Expand Up @@ -51,7 +52,7 @@ fn log_benchmark_group<F: Fn(&Logger)>(c: &mut Criterion, name: &str, f: F) {

// setup tracing as well.
let tracer_provider = TracerProvider::builder()
.with_config(config().with_sampler(Sampler::AlwaysOn))
.with_config(trace::Config::default().with_sampler(Sampler::AlwaysOn))
.build();
let tracer = tracer_provider.tracer("bench-tracer");

Expand Down
2 changes: 1 addition & 1 deletion opentelemetry-sdk/benches/span_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ fn span_builder_benchmark_group(c: &mut Criterion) {

fn not_sampled_provider() -> (sdktrace::TracerProvider, sdktrace::Tracer) {
let provider = sdktrace::TracerProvider::builder()
.with_config(sdktrace::config().with_sampler(sdktrace::Sampler::AlwaysOff))
.with_config(sdktrace::Config::default().with_sampler(sdktrace::Sampler::AlwaysOff))
.with_simple_exporter(NoopExporter)
.build();
let tracer = provider.tracer("not-sampled");
Expand Down
4 changes: 2 additions & 2 deletions opentelemetry-sdk/benches/trace.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ fn trace_benchmark_group<F: Fn(&sdktrace::Tracer)>(c: &mut Criterion, name: &str

group.bench_function("always-sample", |b| {
let provider = sdktrace::TracerProvider::builder()
.with_config(sdktrace::config().with_sampler(sdktrace::Sampler::AlwaysOn))
.with_config(sdktrace::Config::default().with_sampler(sdktrace::Sampler::AlwaysOn))
.with_simple_exporter(VoidExporter)
.build();
let always_sample = provider.tracer("always-sample");
Expand All @@ -80,7 +80,7 @@ fn trace_benchmark_group<F: Fn(&sdktrace::Tracer)>(c: &mut Criterion, name: &str

group.bench_function("never-sample", |b| {
let provider = sdktrace::TracerProvider::builder()
.with_config(sdktrace::config().with_sampler(sdktrace::Sampler::AlwaysOff))
.with_config(sdktrace::Config::default().with_sampler(sdktrace::Sampler::AlwaysOff))
.with_simple_exporter(VoidExporter)
.build();
let never_sample = provider.tracer("never-sample");
Expand Down
2 changes: 2 additions & 0 deletions opentelemetry-sdk/src/trace/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@ use std::env;
use std::str::FromStr;

/// Default trace configuration
#[deprecated(since = "0.23.0", note = "Use Config::default() instead")]
cijothomas marked this conversation as resolved.
Show resolved Hide resolved
pub fn config() -> Config {
Config::default()
}

/// Tracer configuration
#[derive(Debug)]
#[non_exhaustive]
pub struct Config {
/// The sampler that the sdk should use
pub sampler: Box<dyn ShouldSample>,
Expand Down
4 changes: 2 additions & 2 deletions opentelemetry-sdk/src/trace/provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,12 @@ impl TracerProvider {
}

/// Span processors associated with this provider
pub fn span_processors(&self) -> &[Box<dyn SpanProcessor>] {
pub(crate) fn span_processors(&self) -> &[Box<dyn SpanProcessor>] {
&self.inner.processors
}

/// Config associated with this tracer
pub fn config(&self) -> &crate::trace::Config {
pub(crate) fn config(&self) -> &crate::trace::Config {
&self.inner.config
}

Expand Down
4 changes: 2 additions & 2 deletions opentelemetry-sdk/src/trace/tracer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ impl Tracer {
}

/// TracerProvider associated with this tracer.
pub fn provider(&self) -> Option<TracerProvider> {
pub(crate) fn provider(&self) -> Option<TracerProvider> {
self.provider.upgrade().map(TracerProvider::new)
}

/// Instrumentation library information of this tracer.
pub fn instrumentation_library(&self) -> &InstrumentationLibrary {
pub(crate) fn instrumentation_library(&self) -> &InstrumentationLibrary {
&self.instrumentation_lib
}

Expand Down
11 changes: 2 additions & 9 deletions opentelemetry-zipkin/src/exporter/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,7 @@
));
cfg
} else {
Config {
resource: Cow::Owned(Resource::empty()),
..Default::default()
}
Config::default().with_resource(Resource::empty())

Check warning on line 109 in opentelemetry-zipkin/src/exporter/mod.rs

View check run for this annotation

Codecov / codecov/patch

opentelemetry-zipkin/src/exporter/mod.rs#L109

Added line #L109 was not covered by tests
};
(config, Endpoint::new(service_name, self.service_addr))
} else {
Expand All @@ -119,11 +116,7 @@
.unwrap()
.to_string();
(
Config {
// use a empty resource to prevent TracerProvider to assign a service name.
resource: Cow::Owned(Resource::empty()),
..Default::default()
},
Config::default().with_resource(Resource::empty()),

Check warning on line 119 in opentelemetry-zipkin/src/exporter/mod.rs

View check run for this annotation

Codecov / codecov/patch

opentelemetry-zipkin/src/exporter/mod.rs#L119

Added line #L119 was not covered by tests
Endpoint::new(service_name, self.service_addr),
)
}
Expand Down
4 changes: 0 additions & 4 deletions scripts/integration_tests.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1 @@
#COMPOSE_FILE=./opentelemetry-jaeger/tests/docker-compose.yaml
#docker-compose -f $COMPOSE_FILE down -v &&
#docker-compose -f $COMPOSE_FILE up --build --abort-on-container-exit --exit-code-from opentelemetry-jaeger

cargo test ./opentelemetry-otlp/tests/integration_test/tests -- --ignored
2 changes: 1 addition & 1 deletion stress/src/traces.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ mod throughput;

lazy_static! {
static ref PROVIDER: sdktrace::TracerProvider = sdktrace::TracerProvider::builder()
.with_config(sdktrace::config().with_sampler(sdktrace::Sampler::AlwaysOn))
.with_config(sdktrace::Config::default().with_sampler(sdktrace::Sampler::AlwaysOn))
.with_span_processor(NoOpSpanProcessor {})
.build();
static ref TRACER: sdktrace::Tracer = PROVIDER.tracer("stress");
Expand Down
Loading