Skip to content

Commit

Permalink
Refactor/deprecate trace config (#2303)
Browse files Browse the repository at this point in the history
  • Loading branch information
pitoniak32 authored Nov 19, 2024
1 parent 41afd7f commit 849778d
Show file tree
Hide file tree
Showing 18 changed files with 175 additions and 65 deletions.
12 changes: 5 additions & 7 deletions examples/tracing-jaeger/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use opentelemetry::{
KeyValue,
};
use opentelemetry_sdk::trace::TracerProvider;
use opentelemetry_sdk::{runtime, trace as sdktrace, Resource};
use opentelemetry_sdk::{runtime, Resource};
use opentelemetry_semantic_conventions::resource::SERVICE_NAME;

use std::error::Error;
Expand All @@ -17,12 +17,10 @@ fn init_tracer_provider() -> Result<opentelemetry_sdk::trace::TracerProvider, Tr

Ok(TracerProvider::builder()
.with_batch_exporter(exporter, runtime::Tokio)
.with_config(
sdktrace::Config::default().with_resource(Resource::new(vec![KeyValue::new(
SERVICE_NAME,
"tracing-jaeger",
)])),
)
.with_resource(Resource::new(vec![KeyValue::new(
SERVICE_NAME,
"tracing-jaeger",
)]))
.build())
}

Expand Down
5 changes: 2 additions & 3 deletions opentelemetry-appender-tracing/src/layer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,6 @@ mod tests {
use opentelemetry_sdk::export::logs::{LogBatch, LogExporter};
use opentelemetry_sdk::logs::{LogRecord, LogResult, LoggerProvider};
use opentelemetry_sdk::testing::logs::InMemoryLogExporter;
use opentelemetry_sdk::trace;
use opentelemetry_sdk::trace::{Sampler, TracerProvider};
use tracing::{error, warn};
use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt;
Expand Down Expand Up @@ -402,7 +401,7 @@ mod tests {

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

Expand Down Expand Up @@ -579,7 +578,7 @@ mod tests {

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

Expand Down
4 changes: 2 additions & 2 deletions opentelemetry-otlp/examples/basic-otlp-http/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use opentelemetry_sdk::{
logs::LoggerProvider,
metrics::{MetricError, PeriodicReader, SdkMeterProvider},
runtime,
trace::{self as sdktrace, Config, TracerProvider},
trace::{self as sdktrace, TracerProvider},
};
use opentelemetry_sdk::{
logs::{self as sdklogs},
Expand Down Expand Up @@ -52,7 +52,7 @@ fn init_tracer_provider() -> Result<sdktrace::TracerProvider, TraceError> {

Ok(TracerProvider::builder()
.with_batch_exporter(exporter, runtime::Tokio)
.with_config(Config::default().with_resource(RESOURCE.clone()))
.with_resource(RESOURCE.clone())
.build())
}

Expand Down
3 changes: 1 addition & 2 deletions opentelemetry-otlp/examples/basic-otlp/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ use opentelemetry_sdk::logs::LogError;
use opentelemetry_sdk::logs::LoggerProvider;
use opentelemetry_sdk::metrics::MetricError;
use opentelemetry_sdk::metrics::{PeriodicReader, SdkMeterProvider};
use opentelemetry_sdk::trace::Config;
use opentelemetry_sdk::{runtime, trace as sdktrace, Resource};
use std::error::Error;
use tracing::info;
Expand All @@ -28,7 +27,7 @@ fn init_tracer_provider() -> Result<sdktrace::TracerProvider, TraceError> {
.with_endpoint("http://localhost:4317")
.build()?;
Ok(sdktrace::TracerProvider::builder()
.with_config(Config::default().with_resource(RESOURCE.clone()))
.with_resource(RESOURCE.clone())
.with_batch_exporter(exporter, runtime::Tokio)
.build())
}
Expand Down
10 changes: 4 additions & 6 deletions opentelemetry-otlp/tests/integration_test/tests/traces.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,10 @@ fn init_tracer_provider() -> Result<sdktrace::TracerProvider, TraceError> {
.build()?;
Ok(opentelemetry_sdk::trace::TracerProvider::builder()
.with_batch_exporter(exporter, runtime::Tokio)
.with_config(
sdktrace::Config::default().with_resource(Resource::new(vec![KeyValue::new(
opentelemetry_semantic_conventions::resource::SERVICE_NAME,
"basic-otlp-tracing-example",
)])),
)
.with_resource(Resource::new(vec![KeyValue::new(
opentelemetry_semantic_conventions::resource::SERVICE_NAME,
"basic-otlp-tracing-example",
)]))
.build())
}

Expand Down
16 changes: 16 additions & 0 deletions opentelemetry-sdk/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,22 @@

## vNext

- **DEPRECATED**:
- `trace::Config` methods are moving onto `TracerProvider` Builder to be consistent with other signals. See https://github.com/open-telemetry/opentelemetry-rust/pull/2303 for migration guide.
`trace::Config` is scheduled to be removed from public API in `v0.28.0`.
example:
```rust
// old
let tracer_provider: TracerProvider = TracerProvider::builder()
.with_config(Config::default().with_resource(Resource::empty()))
.build();

// new
let tracer_provider: TracerProvider = TracerProvider::builder()
.with_resource(Resource::empty())
.build();
```

## 0.27.0

Released 2024-Nov-11
Expand Down
5 changes: 1 addition & 4 deletions opentelemetry-sdk/benches/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ use opentelemetry::{
};
use opentelemetry_sdk::{
export::trace::{ExportResult, SpanData, SpanExporter},
trace,
trace::{Sampler, TracerProvider},
};
#[cfg(not(target_os = "windows"))]
Expand Down Expand Up @@ -127,9 +126,7 @@ impl Display for Environment {

fn parent_sampled_tracer(inner_sampler: Sampler) -> (TracerProvider, BoxedTracer) {
let provider = TracerProvider::builder()
.with_config(
trace::Config::default().with_sampler(Sampler::ParentBased(Box::new(inner_sampler))),
)
.with_sampler(Sampler::ParentBased(Box::new(inner_sampler)))
.with_simple_exporter(NoopExporter)
.build();
let tracer = provider.tracer(module_path!());
Expand Down
3 changes: 1 addition & 2 deletions opentelemetry-sdk/benches/log.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ use opentelemetry::trace::Tracer;
use opentelemetry::trace::TracerProvider as _;
use opentelemetry::{InstrumentationScope, Key};
use opentelemetry_sdk::logs::{LogProcessor, LogRecord, LogResult, Logger, LoggerProvider};
use opentelemetry_sdk::trace;
use opentelemetry_sdk::trace::{Sampler, TracerProvider};

#[derive(Debug)]
Expand Down Expand Up @@ -65,7 +64,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(trace::Config::default().with_sampler(Sampler::AlwaysOn))
.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::default().with_sampler(sdktrace::Sampler::AlwaysOff))
.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::default().with_sampler(sdktrace::Sampler::AlwaysOn))
.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::default().with_sampler(sdktrace::Sampler::AlwaysOff))
.with_sampler(sdktrace::Sampler::AlwaysOff)
.with_simple_exporter(VoidExporter)
.build();
let never_sample = provider.tracer("never-sample");
Expand Down
8 changes: 8 additions & 0 deletions opentelemetry-sdk/src/resource/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,14 @@ impl Resource {
}
}

/// Create a new `Resource::default()` and merge with provided key value pairs.
///
/// Values are de-duplicated by key, and the first key-value pair with a non-empty string value
/// will be retained
pub fn new_with_defaults<T: IntoIterator<Item = KeyValue>>(keys: T) -> Self {
Resource::default().merge(&mut Resource::new(keys))
}

/// Create a new `Resource` from a key value pairs and [schema url].
///
/// Values are de-duplicated by key, and the first key-value pair with a non-empty string value
Expand Down
46 changes: 41 additions & 5 deletions opentelemetry-sdk/src/trace/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,54 +34,90 @@ pub struct Config {

impl Config {
/// Specify the sampler to be used.
#[deprecated(
since = "0.27.1",
note = "Config is becoming private. Please use Builder::with_sampler(...) instead."
)]
pub fn with_sampler<T: crate::trace::ShouldSample + 'static>(mut self, sampler: T) -> Self {
self.sampler = Box::new(sampler);
self
}

/// Specify the id generator to be used.
#[deprecated(
since = "0.27.1",
note = "Config is becoming private. Please use Builder::with_id_generator(...) instead."
)]
pub fn with_id_generator<T: IdGenerator + 'static>(mut self, id_generator: T) -> Self {
self.id_generator = Box::new(id_generator);
self
}

/// Specify the number of events to be recorded per span.
/// Specify the maximum number of events that can be recorded per span.
#[deprecated(
since = "0.27.1",
note = "Config is becoming private. Please use Builder::with_max_events_per_span(...) instead."
)]
pub fn with_max_events_per_span(mut self, max_events: u32) -> Self {
self.span_limits.max_events_per_span = max_events;
self
}

/// Specify the number of attributes to be recorded per span.
/// Specify the maximum number of attributes that can be recorded per span.
#[deprecated(
since = "0.27.1",
note = "Config is becoming private. Please use Builder::with_max_attributes_per_span(...) instead."
)]
pub fn with_max_attributes_per_span(mut self, max_attributes: u32) -> Self {
self.span_limits.max_attributes_per_span = max_attributes;
self
}

/// Specify the number of events to be recorded per span.
/// Specify the maximum number of links that can be recorded per span.
#[deprecated(
since = "0.27.1",
note = "Config is becoming private. Please use Builder::with_max_links_per_span(...) instead."
)]
pub fn with_max_links_per_span(mut self, max_links: u32) -> Self {
self.span_limits.max_links_per_span = max_links;
self
}

/// Specify the number of attributes one event can have.
/// Specify the maximum number of attributes one event can have.
#[deprecated(
since = "0.27.1",
note = "Config is becoming private. Please use Builder::with_max_attributes_per_event(...) instead."
)]
pub fn with_max_attributes_per_event(mut self, max_attributes: u32) -> Self {
self.span_limits.max_attributes_per_event = max_attributes;
self
}

/// Specify the number of attributes one link can have.
/// Specify the maximum number of attributes one link can have.
#[deprecated(
since = "0.27.1",
note = "Config is becoming private. Please use Builder::with_max_attributes_per_link(...) instead."
)]
pub fn with_max_attributes_per_link(mut self, max_attributes: u32) -> Self {
self.span_limits.max_attributes_per_link = max_attributes;
self
}

/// Specify all limit via the span_limits
#[deprecated(
since = "0.27.1",
note = "Config is becoming private. Please use Builder::with_span_limits(...) instead."
)]
pub fn with_span_limits(mut self, span_limits: SpanLimits) -> Self {
self.span_limits = span_limits;
self
}

/// Specify the attributes representing the entity that produces telemetry
#[deprecated(
since = "0.27.1",
note = "Config is becoming private. Please use Builder::with_resource(...) instead."
)]
pub fn with_resource(mut self, resource: Resource) -> Self {
self.resource = Cow::Owned(resource);
self
Expand Down
4 changes: 2 additions & 2 deletions opentelemetry-sdk/src/trace/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ mod tests {
fn trace_state_for_dropped_sampler() {
let exporter = InMemorySpanExporterBuilder::new().build();
let provider = TracerProvider::builder()
.with_config(Config::default().with_sampler(Sampler::AlwaysOff))
.with_sampler(Sampler::AlwaysOff)
.with_span_processor(SimpleSpanProcessor::new(Box::new(exporter.clone())))
.build();

Expand Down Expand Up @@ -293,7 +293,7 @@ mod tests {
fn trace_state_for_record_only_sampler() {
let exporter = InMemorySpanExporterBuilder::new().build();
let provider = TracerProvider::builder()
.with_config(Config::default().with_sampler(TestRecordOnlySampler::default()))
.with_sampler(TestRecordOnlySampler::default())
.with_span_processor(SimpleSpanProcessor::new(Box::new(exporter.clone())))
.build();

Expand Down
Loading

0 comments on commit 849778d

Please sign in to comment.