From 6b4c4ce522c7d6b16abdd54c7730f08193dc49a5 Mon Sep 17 00:00:00 2001 From: Christopher Schramm Date: Tue, 11 Feb 2025 17:07:07 +0100 Subject: [PATCH 1/3] Update opentelemetry to 0.28 --- Cargo.toml | 16 +++++++------- benches/trace.rs | 18 +++++++-------- examples/basic.rs | 4 ++-- examples/opentelemetry-error.rs | 19 +++++++--------- examples/opentelemetry-otlp.rs | 38 +++++++++++++++----------------- src/layer.rs | 4 ++-- src/lib.rs | 4 ++-- src/tracer.rs | 6 ++--- tests/batch_global_subscriber.rs | 17 +++++++------- tests/errors.rs | 12 +++++----- tests/filtered.rs | 12 +++++----- tests/follows_from.rs | 10 ++++----- tests/metrics_publishing.rs | 7 +++--- tests/parallel.rs | 12 +++++----- tests/parents.rs | 12 +++++----- tests/span_ext.rs | 10 ++++----- tests/trace_state_propagation.rs | 14 ++++++------ 17 files changed, 101 insertions(+), 114 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index ccafc12..2ad46e1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,11 +20,11 @@ default = ["tracing-log", "metrics"] # Enables support for exporting OpenTelemetry metrics metrics = ["opentelemetry/metrics","opentelemetry_sdk/metrics", "smallvec"] # Enables experimental support for OpenTelemetry gauge metrics -metrics_gauge_unstable = ["opentelemetry/otel_unstable"] +metrics_gauge_unstable = [] [dependencies] -opentelemetry = { version = "0.27.0", default-features = false, features = ["trace"] } -opentelemetry_sdk = { version = "0.27.0", default-features = false, features = ["trace"] } +opentelemetry = { version = "0.28.0", default-features = false, features = ["trace"] } +opentelemetry_sdk = { version = "0.28.0", default-features = false, features = ["trace"] } tracing = { version = "0.1.35", default-features = false, features = ["std"] } tracing-core = "0.1.28" tracing-subscriber = { version = "0.3.0", default-features = false, features = ["registry", "std"] } @@ -43,11 +43,11 @@ smallvec = { version = "1.0", optional = true } [dev-dependencies] async-trait = "0.1.56" criterion = { version = "0.5.1", default-features = false, features = ["html_reports"] } -opentelemetry = { version = "0.27.0", features = ["trace", "metrics"] } -opentelemetry_sdk = { version = "0.27.0", default-features = false, features = ["trace", "rt-tokio"] } -opentelemetry-stdout = { version = "0.27.0", features = ["trace", "metrics"] } -opentelemetry-otlp = { version = "0.27.0", features = ["metrics"] } -opentelemetry-semantic-conventions = { version = "0.27.0", features = ["semconv_experimental"] } +opentelemetry = { version = "0.28.0", features = ["trace", "metrics"] } +opentelemetry_sdk = { version = "0.28.0", default-features = false, features = ["trace", "rt-tokio"] } +opentelemetry-stdout = { version = "0.28.0", features = ["trace", "metrics"] } +opentelemetry-otlp = { version = "0.28.0", features = ["metrics", "grpc-tonic"] } +opentelemetry-semantic-conventions = { version = "0.28.0", features = ["semconv_experimental"] } futures-util = { version = "0.3.17", default-features = false } tokio = { version = "1", features = ["full"] } tokio-stream = "0.1" diff --git a/benches/trace.rs b/benches/trace.rs index c0711f0..5fd7693 100644 --- a/benches/trace.rs +++ b/benches/trace.rs @@ -3,7 +3,7 @@ use opentelemetry::{ trace::{Span, SpanBuilder, Tracer as _, TracerProvider as _}, Context, }; -use opentelemetry_sdk::trace::{Tracer, TracerProvider}; +use opentelemetry_sdk::trace::{SdkTracerProvider, Tracer}; #[cfg(not(target_os = "windows"))] use pprof::criterion::{Output, PProfProfiler}; use std::time::SystemTime; @@ -14,7 +14,7 @@ fn many_enters(c: &mut Criterion) { let mut group = c.benchmark_group("otel_many_enters"); group.bench_function("spec_baseline", |b| { - let provider = TracerProvider::default(); + let provider = SdkTracerProvider::default(); let tracer = provider.tracer("bench"); b.iter(|| { fn dummy(tracer: &Tracer, cx: &Context) { @@ -43,7 +43,7 @@ fn many_enters(c: &mut Criterion) { } { - let provider = TracerProvider::default(); + let provider = SdkTracerProvider::default(); let tracer = provider.tracer("bench"); let otel_layer = tracing_opentelemetry::layer() .with_tracer(tracer) @@ -56,7 +56,7 @@ fn many_enters(c: &mut Criterion) { } { - let provider = TracerProvider::default(); + let provider = SdkTracerProvider::default(); let tracer = provider.tracer("bench"); let otel_layer = tracing_opentelemetry::layer() .with_tracer(tracer) @@ -73,7 +73,7 @@ fn many_children(c: &mut Criterion) { let mut group = c.benchmark_group("otel_many_children"); group.bench_function("spec_baseline", |b| { - let provider = TracerProvider::default(); + let provider = SdkTracerProvider::default(); let tracer = provider.tracer("bench"); b.iter(|| { fn dummy(tracer: &Tracer, cx: &Context) { @@ -101,7 +101,7 @@ fn many_children(c: &mut Criterion) { } { - let provider = TracerProvider::default(); + let provider = SdkTracerProvider::default(); let tracer = provider.tracer("bench"); let otel_layer = tracing_opentelemetry::layer() .with_tracer(tracer) @@ -118,7 +118,7 @@ fn many_events(c: &mut Criterion) { let mut group = c.benchmark_group("otel_many_events"); group.bench_function("spec_baseline", |b| { - let provider = TracerProvider::default(); + let provider = SdkTracerProvider::default(); let tracer = provider.tracer("bench"); b.iter(|| { fn dummy(tracer: &Tracer, cx: &Context) { @@ -147,7 +147,7 @@ fn many_events(c: &mut Criterion) { } { - let provider = TracerProvider::default(); + let provider = SdkTracerProvider::default(); let tracer = provider.tracer("bench"); let otel_layer = tracing_opentelemetry::layer() .with_tracer(tracer) @@ -160,7 +160,7 @@ fn many_events(c: &mut Criterion) { } { - let provider = TracerProvider::builder() + let provider = SdkTracerProvider::builder() .with_max_events_per_span(1000) .build(); let tracer = provider.tracer("bench"); diff --git a/examples/basic.rs b/examples/basic.rs index b571b29..ae56164 100644 --- a/examples/basic.rs +++ b/examples/basic.rs @@ -1,5 +1,5 @@ use opentelemetry::trace::TracerProvider as _; -use opentelemetry_sdk::trace::TracerProvider; +use opentelemetry_sdk::trace::SdkTracerProvider; use opentelemetry_stdout as stdout; use tracing::{error, span}; use tracing_subscriber::layer::SubscriberExt; @@ -7,7 +7,7 @@ use tracing_subscriber::Registry; fn main() { // Create a new OpenTelemetry trace pipeline that prints to stdout - let provider = TracerProvider::builder() + let provider = SdkTracerProvider::builder() .with_simple_exporter(stdout::SpanExporter::default()) .build(); let tracer = provider.tracer("readme_example"); diff --git a/examples/opentelemetry-error.rs b/examples/opentelemetry-error.rs index 37c3d3b..6f02fe8 100644 --- a/examples/opentelemetry-error.rs +++ b/examples/opentelemetry-error.rs @@ -8,10 +8,7 @@ use std::{ use opentelemetry::global; use opentelemetry::trace::TracerProvider as _; -use opentelemetry_sdk::{ - self as sdk, - export::trace::{ExportResult, SpanExporter}, -}; +use opentelemetry_sdk::{self as sdk, error::OTelSdkResult, trace::SpanExporter}; use tracing::{error, instrument, span, trace, warn}; use tracing_subscriber::prelude::*; @@ -57,11 +54,11 @@ fn double_failable_work(fail: bool) -> Result<&'static str, Error> { } fn main() -> Result<(), Box> { - let builder = sdk::trace::TracerProvider::builder().with_simple_exporter(WriterExporter); + let builder = sdk::trace::SdkTracerProvider::builder().with_simple_exporter(WriterExporter); let provider = builder.build(); let tracer = provider.tracer("opentelemetry-write-exporter"); - global::set_tracer_provider(provider); + global::set_tracer_provider(provider.clone()); let opentelemetry = tracing_opentelemetry::layer().with_tracer(tracer); tracing_subscriber::registry() @@ -86,7 +83,7 @@ fn main() -> Result<(), Box> { // Shut down the current tracer provider. This will invoke the shutdown // method on all span processors. span processors should export remaining // spans before return. - global::shutdown_tracer_provider(); + provider.shutdown().unwrap(); Ok(()) } @@ -97,19 +94,19 @@ struct WriterExporter; impl SpanExporter for WriterExporter { fn export( &mut self, - batch: Vec, - ) -> futures_util::future::BoxFuture<'static, sdk::export::trace::ExportResult> { + batch: Vec, + ) -> futures_util::future::BoxFuture<'static, OTelSdkResult> { let mut writer = std::io::stdout(); for span in batch { writeln!(writer, "{}", SpanData(span)).unwrap(); } writeln!(writer).unwrap(); - Box::pin(async move { ExportResult::Ok(()) }) + Box::pin(async move { OTelSdkResult::Ok(()) }) } } -struct SpanData(sdk::export::trace::SpanData); +struct SpanData(sdk::trace::SpanData); impl Display for SpanData { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { writeln!(f, "Span: \"{}\"", self.0.name)?; diff --git a/examples/opentelemetry-otlp.rs b/examples/opentelemetry-otlp.rs index f04eb69..a8aa2d6 100644 --- a/examples/opentelemetry-otlp.rs +++ b/examples/opentelemetry-otlp.rs @@ -1,8 +1,7 @@ use opentelemetry::{global, trace::TracerProvider as _, KeyValue}; use opentelemetry_sdk::{ metrics::{MeterProviderBuilder, PeriodicReader, SdkMeterProvider}, - runtime, - trace::{RandomIdGenerator, Sampler, TracerProvider}, + trace::{RandomIdGenerator, Sampler, SdkTracerProvider}, Resource, }; use opentelemetry_semantic_conventions::{ @@ -15,14 +14,16 @@ use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; // Create a Resource that captures information about the entity for which telemetry is recorded. fn resource() -> Resource { - Resource::from_schema_url( - [ - KeyValue::new(SERVICE_NAME, env!("CARGO_PKG_NAME")), - KeyValue::new(SERVICE_VERSION, env!("CARGO_PKG_VERSION")), - KeyValue::new(DEPLOYMENT_ENVIRONMENT_NAME, "develop"), - ], - SCHEMA_URL, - ) + Resource::builder() + .with_schema_url( + [ + KeyValue::new(SERVICE_NAME, env!("CARGO_PKG_NAME")), + KeyValue::new(SERVICE_VERSION, env!("CARGO_PKG_VERSION")), + KeyValue::new(DEPLOYMENT_ENVIRONMENT_NAME, "develop"), + ], + SCHEMA_URL, + ) + .build() } // Construct MeterProvider for MetricsLayer @@ -33,16 +34,13 @@ fn init_meter_provider() -> SdkMeterProvider { .build() .unwrap(); - let reader = PeriodicReader::builder(exporter, runtime::Tokio) + let reader = PeriodicReader::builder(exporter) .with_interval(std::time::Duration::from_secs(30)) .build(); // For debugging in development - let stdout_reader = PeriodicReader::builder( - opentelemetry_stdout::MetricExporter::default(), - runtime::Tokio, - ) - .build(); + let stdout_reader = + PeriodicReader::builder(opentelemetry_stdout::MetricExporter::default()).build(); let meter_provider = MeterProviderBuilder::default() .with_resource(resource()) @@ -56,13 +54,13 @@ fn init_meter_provider() -> SdkMeterProvider { } // Construct TracerProvider for OpenTelemetryLayer -fn init_tracer_provider() -> TracerProvider { +fn init_tracer_provider() -> SdkTracerProvider { let exporter = opentelemetry_otlp::SpanExporter::builder() .with_tonic() .build() .unwrap(); - TracerProvider::builder() + SdkTracerProvider::builder() // Customize sampling strategy .with_sampler(Sampler::ParentBased(Box::new(Sampler::TraceIdRatioBased( 1.0, @@ -70,7 +68,7 @@ fn init_tracer_provider() -> TracerProvider { // If export trace to AWS X-Ray, you can use XrayIdGenerator .with_id_generator(RandomIdGenerator::default()) .with_resource(resource()) - .with_batch_exporter(exporter, runtime::Tokio) + .with_batch_exporter(exporter) .build() } @@ -104,7 +102,7 @@ fn init_tracing_subscriber() -> OtelGuard { } struct OtelGuard { - tracer_provider: TracerProvider, + tracer_provider: SdkTracerProvider, meter_provider: SdkMeterProvider, } diff --git a/src/layer.rs b/src/layer.rs index 1afdade..3aeee7f 100644 --- a/src/layer.rs +++ b/src/layer.rs @@ -546,7 +546,7 @@ where /// .build() /// .unwrap(); /// - /// let tracer = opentelemetry_sdk::trace::TracerProvider::builder() + /// let tracer = opentelemetry_sdk::trace::SdkTracerProvider::builder() /// .with_simple_exporter(otlp_exporter) /// .build() /// .tracer("trace_demo"); @@ -598,7 +598,7 @@ where /// .build() /// .unwrap(); /// - /// let tracer = opentelemetry_sdk::trace::TracerProvider::builder() + /// let tracer = opentelemetry_sdk::trace::SdkTracerProvider::builder() /// .with_simple_exporter(otlp_exporter) /// .build() /// .tracer("trace_demo"); diff --git a/src/lib.rs b/src/lib.rs index fb3ebb4..897fcb4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -51,14 +51,14 @@ //! ## Examples //! //! ``` -//! use opentelemetry_sdk::trace::TracerProvider; +//! use opentelemetry_sdk::trace::SdkTracerProvider; //! use opentelemetry::trace::{Tracer, TracerProvider as _}; //! use tracing::{error, span}; //! use tracing_subscriber::layer::SubscriberExt; //! use tracing_subscriber::Registry; //! //! // Create a new OpenTelemetry trace pipeline that prints to stdout -//! let provider = TracerProvider::builder() +//! let provider = SdkTracerProvider::builder() //! .with_simple_exporter(opentelemetry_stdout::SpanExporter::default()) //! .build(); //! let tracer = provider.tracer("readme_example"); diff --git a/src/tracer.rs b/src/tracer.rs index 0cc7678..2d666c2 100644 --- a/src/tracer.rs +++ b/src/tracer.rs @@ -152,11 +152,11 @@ mod tests { use super::*; use crate::OtelData; use opentelemetry::trace::TracerProvider as _; - use opentelemetry_sdk::trace::{Sampler, TracerProvider}; + use opentelemetry_sdk::trace::{Sampler, SdkTracerProvider}; #[test] fn assigns_default_trace_id_if_missing() { - let provider = TracerProvider::default(); + let provider = SdkTracerProvider::default(); let tracer = provider.tracer("test"); let mut builder = SpanBuilder::from_name("empty".to_string()); builder.span_id = Some(SpanId::from(1u64)); @@ -195,7 +195,7 @@ mod tests { #[test] fn sampled_context() { for (name, sampler, parent_cx, previous_sampling_result, is_sampled) in sampler_data() { - let provider = TracerProvider::builder().with_sampler(sampler).build(); + let provider = SdkTracerProvider::builder().with_sampler(sampler).build(); let tracer = provider.tracer("test"); let mut builder = SpanBuilder::from_name("parent".to_string()); builder.sampling_result = previous_sampling_result; diff --git a/tests/batch_global_subscriber.rs b/tests/batch_global_subscriber.rs index 0cc0586..109bd77 100644 --- a/tests/batch_global_subscriber.rs +++ b/tests/batch_global_subscriber.rs @@ -1,9 +1,8 @@ use futures_util::future::BoxFuture; use opentelemetry::{global as otel_global, trace::TracerProvider as _}; use opentelemetry_sdk::{ - export::trace::{ExportResult, SpanData, SpanExporter}, - runtime, - trace::TracerProvider, + error::OTelSdkResult, + trace::{SdkTracerProvider, SpanData, SpanExporter}, }; use tokio::runtime::Runtime; use tracing::{info_span, subscriber, Level, Subscriber}; @@ -17,7 +16,7 @@ use std::sync::{Arc, Mutex}; struct TestExporter(Arc>>); impl SpanExporter for TestExporter { - fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, ExportResult> { + fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, OTelSdkResult> { let spans = self.0.clone(); Box::pin(async move { if let Ok(mut inner) = spans.lock() { @@ -28,12 +27,12 @@ impl SpanExporter for TestExporter { } } -fn test_tracer(runtime: &Runtime) -> (TracerProvider, TestExporter, impl Subscriber) { +fn test_tracer(runtime: &Runtime) -> (SdkTracerProvider, TestExporter, impl Subscriber) { let _guard = runtime.enter(); let exporter = TestExporter::default(); - let provider = TracerProvider::builder() - .with_batch_exporter(exporter.clone(), runtime::Tokio) + let provider = SdkTracerProvider::builder() + .with_batch_exporter(exporter.clone()) .build(); let tracer = provider.tracer("test"); @@ -70,7 +69,7 @@ fn shutdown_global() { let rt = Runtime::new().unwrap(); let (provider, exporter, subscriber) = test_tracer(&rt); - otel_global::set_tracer_provider(provider); + otel_global::set_tracer_provider(provider.clone()); subscriber::set_global_default(subscriber).unwrap(); for _ in 0..1000 { @@ -78,7 +77,7 @@ fn shutdown_global() { } // Should flush all batched telemetry spans - otel_global::shutdown_tracer_provider(); + provider.shutdown().unwrap(); let spans = exporter.0.lock().unwrap(); assert_eq!(spans.len(), 1000); diff --git a/tests/errors.rs b/tests/errors.rs index 93162fa..86c2124 100644 --- a/tests/errors.rs +++ b/tests/errors.rs @@ -1,9 +1,7 @@ use futures_util::future::BoxFuture; use opentelemetry::trace::TracerProvider as _; -use opentelemetry_sdk::{ - export::trace::{ExportResult, SpanData, SpanExporter}, - trace::{Tracer, TracerProvider}, -}; +use opentelemetry_sdk::error::OTelSdkResult; +use opentelemetry_sdk::trace::{SdkTracerProvider, SpanData, SpanExporter, Tracer}; use std::sync::{Arc, Mutex}; use tracing::{instrument, Subscriber}; use tracing_opentelemetry::layer; @@ -85,9 +83,9 @@ fn test_tracer( // Uses options to capture changes of the default behavior error_event_exceptions: Option, error_event_status: Option, -) -> (Tracer, TracerProvider, TestExporter, impl Subscriber) { +) -> (Tracer, SdkTracerProvider, TestExporter, impl Subscriber) { let exporter = TestExporter::default(); - let provider = TracerProvider::builder() + let provider = SdkTracerProvider::builder() .with_simple_exporter(exporter.clone()) .build(); let tracer = provider.tracer("test"); @@ -108,7 +106,7 @@ fn test_tracer( struct TestExporter(Arc>>); impl SpanExporter for TestExporter { - fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, ExportResult> { + fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, OTelSdkResult> { let spans = self.0.clone(); Box::pin(async move { if let Ok(mut inner) = spans.lock() { diff --git a/tests/filtered.rs b/tests/filtered.rs index 678d1a1..ce0f7d9 100644 --- a/tests/filtered.rs +++ b/tests/filtered.rs @@ -1,9 +1,7 @@ use futures_util::future::BoxFuture; use opentelemetry::trace::TracerProvider as _; -use opentelemetry_sdk::{ - export::trace::{ExportResult, SpanData, SpanExporter}, - trace::{Tracer, TracerProvider}, -}; +use opentelemetry_sdk::error::OTelSdkResult; +use opentelemetry_sdk::trace::{SdkTracerProvider, SpanData, SpanExporter, Tracer}; use std::sync::{Arc, Mutex}; use tracing::level_filters::LevelFilter; use tracing::Subscriber; @@ -14,7 +12,7 @@ use tracing_subscriber::prelude::*; struct TestExporter(Arc>>); impl SpanExporter for TestExporter { - fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, ExportResult> { + fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, OTelSdkResult> { let spans = self.0.clone(); Box::pin(async move { if let Ok(mut inner) = spans.lock() { @@ -25,9 +23,9 @@ impl SpanExporter for TestExporter { } } -fn test_tracer() -> (Tracer, TracerProvider, TestExporter, impl Subscriber) { +fn test_tracer() -> (Tracer, SdkTracerProvider, TestExporter, impl Subscriber) { let exporter = TestExporter::default(); - let provider = TracerProvider::builder() + let provider = SdkTracerProvider::builder() .with_simple_exporter(exporter.clone()) .build(); let tracer = provider.tracer("test"); diff --git a/tests/follows_from.rs b/tests/follows_from.rs index 4240948..551837a 100644 --- a/tests/follows_from.rs +++ b/tests/follows_from.rs @@ -1,8 +1,8 @@ use futures_util::future::BoxFuture; use opentelemetry::trace::TracerProvider as _; use opentelemetry_sdk::{ - export::trace::{ExportResult, SpanData, SpanExporter}, - trace::{Tracer, TracerProvider}, + error::OTelSdkResult, + trace::{SdkTracerProvider, SpanData, SpanExporter, Tracer}, }; use std::sync::{Arc, Mutex}; use tracing::Subscriber; @@ -13,7 +13,7 @@ use tracing_subscriber::prelude::*; struct TestExporter(Arc>>); impl SpanExporter for TestExporter { - fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, ExportResult> { + fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, OTelSdkResult> { let spans = self.0.clone(); Box::pin(async move { if let Ok(mut inner) = spans.lock() { @@ -24,9 +24,9 @@ impl SpanExporter for TestExporter { } } -fn test_tracer() -> (Tracer, TracerProvider, TestExporter, impl Subscriber) { +fn test_tracer() -> (Tracer, SdkTracerProvider, TestExporter, impl Subscriber) { let exporter = TestExporter::default(); - let provider = TracerProvider::builder() + let provider = SdkTracerProvider::builder() .with_simple_exporter(exporter.clone()) .build(); let tracer = provider.tracer("test"); diff --git a/tests/metrics_publishing.rs b/tests/metrics_publishing.rs index 7868b5b..496bf85 100644 --- a/tests/metrics_publishing.rs +++ b/tests/metrics_publishing.rs @@ -1,5 +1,6 @@ use opentelemetry::KeyValue; use opentelemetry_sdk::{ + error::OTelSdkResult, metrics::{ data::{self, Gauge, Histogram, Sum}, reader::MetricReader, @@ -554,11 +555,11 @@ impl MetricReader for TestReader { self.inner.collect(rm) } - fn force_flush(&self) -> opentelemetry_sdk::metrics::MetricResult<()> { + fn force_flush(&self) -> OTelSdkResult { self.inner.force_flush() } - fn shutdown(&self) -> opentelemetry_sdk::metrics::MetricResult<()> { + fn shutdown(&self) -> OTelSdkResult { self.inner.shutdown() } @@ -582,7 +583,7 @@ where { fn export(&self) -> Result<(), MetricError> { let mut rm = data::ResourceMetrics { - resource: Resource::default(), + resource: Resource::builder().build(), scope_metrics: Vec::new(), }; self.reader.collect(&mut rm)?; diff --git a/tests/parallel.rs b/tests/parallel.rs index afc2d21..5a2756b 100644 --- a/tests/parallel.rs +++ b/tests/parallel.rs @@ -1,9 +1,7 @@ use futures_util::future::BoxFuture; use opentelemetry::trace::TracerProvider as _; -use opentelemetry_sdk::{ - export::trace::{ExportResult, SpanData, SpanExporter}, - trace::{SpanLimits, Tracer, TracerProvider}, -}; +use opentelemetry_sdk::error::OTelSdkResult; +use opentelemetry_sdk::trace::{SdkTracerProvider, SpanData, SpanExporter, SpanLimits, Tracer}; use std::sync::{Arc, Mutex}; use tracing::level_filters::LevelFilter; use tracing::Subscriber; @@ -14,7 +12,7 @@ use tracing_subscriber::prelude::*; struct TestExporter(Arc>>); impl SpanExporter for TestExporter { - fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, ExportResult> { + fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, OTelSdkResult> { let spans = self.0.clone(); Box::pin(async move { if let Ok(mut inner) = spans.lock() { @@ -27,12 +25,12 @@ impl SpanExporter for TestExporter { fn test_tracer() -> ( Tracer, - TracerProvider, + SdkTracerProvider, TestExporter, impl Subscriber + Clone, ) { let exporter = TestExporter::default(); - let provider = TracerProvider::builder() + let provider = SdkTracerProvider::builder() .with_simple_exporter(exporter.clone()) // `with_max_events_per_span()` is buggy https://github.com/open-telemetry/opentelemetry-rust/pull/2405 .with_span_limits(SpanLimits { diff --git a/tests/parents.rs b/tests/parents.rs index 2934d20..8fda109 100644 --- a/tests/parents.rs +++ b/tests/parents.rs @@ -1,9 +1,7 @@ use futures_util::future::BoxFuture; use opentelemetry::trace::TracerProvider as _; -use opentelemetry_sdk::{ - export::trace::{ExportResult, SpanData, SpanExporter}, - trace::{Tracer, TracerProvider}, -}; +use opentelemetry_sdk::error::OTelSdkResult; +use opentelemetry_sdk::trace::{SdkTracerProvider, SpanData, SpanExporter, Tracer}; use std::sync::{Arc, Mutex}; use tracing::level_filters::LevelFilter; use tracing::Subscriber; @@ -14,7 +12,7 @@ use tracing_subscriber::prelude::*; struct TestExporter(Arc>>); impl SpanExporter for TestExporter { - fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, ExportResult> { + fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, OTelSdkResult> { let spans = self.0.clone(); Box::pin(async move { if let Ok(mut inner) = spans.lock() { @@ -25,9 +23,9 @@ impl SpanExporter for TestExporter { } } -fn test_tracer() -> (Tracer, TracerProvider, TestExporter, impl Subscriber) { +fn test_tracer() -> (Tracer, SdkTracerProvider, TestExporter, impl Subscriber) { let exporter = TestExporter::default(); - let provider = TracerProvider::builder() + let provider = SdkTracerProvider::builder() .with_simple_exporter(exporter.clone()) .build(); let tracer = provider.tracer("test"); diff --git a/tests/span_ext.rs b/tests/span_ext.rs index acfdcdf..cdb9129 100644 --- a/tests/span_ext.rs +++ b/tests/span_ext.rs @@ -1,8 +1,8 @@ use futures_util::future::BoxFuture; use opentelemetry::trace::{Status, TracerProvider as _}; use opentelemetry_sdk::{ - export::trace::{ExportResult, SpanData, SpanExporter}, - trace::{Tracer, TracerProvider}, + error::OTelSdkResult, + trace::{SdkTracerProvider, SpanData, SpanExporter, Tracer}, }; use std::sync::{Arc, Mutex}; use tracing::level_filters::LevelFilter; @@ -14,7 +14,7 @@ use tracing_subscriber::prelude::*; struct TestExporter(Arc>>); impl SpanExporter for TestExporter { - fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, ExportResult> { + fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, OTelSdkResult> { let spans = self.0.clone(); Box::pin(async move { if let Ok(mut inner) = spans.lock() { @@ -25,9 +25,9 @@ impl SpanExporter for TestExporter { } } -fn test_tracer() -> (Tracer, TracerProvider, TestExporter, impl Subscriber) { +fn test_tracer() -> (Tracer, SdkTracerProvider, TestExporter, impl Subscriber) { let exporter = TestExporter::default(); - let provider = TracerProvider::builder() + let provider = SdkTracerProvider::builder() .with_simple_exporter(exporter.clone()) .build(); let tracer = provider.tracer("test"); diff --git a/tests/trace_state_propagation.rs b/tests/trace_state_propagation.rs index c4cf067..91a804f 100644 --- a/tests/trace_state_propagation.rs +++ b/tests/trace_state_propagation.rs @@ -5,9 +5,9 @@ use opentelemetry::{ Context, }; use opentelemetry_sdk::{ - export::trace::{ExportResult, SpanData, SpanExporter}, + error::OTelSdkResult, propagation::{BaggagePropagator, TraceContextPropagator}, - trace::{Sampler, Tracer, TracerProvider}, + trace::{Sampler, SdkTracerProvider, SpanData, SpanExporter, Tracer}, }; use std::collections::{HashMap, HashSet}; use std::sync::{Arc, Mutex}; @@ -105,7 +105,7 @@ fn inject_context_into_outgoing_requests() { fn sampling_decision_respects_new_parent() { // custom setup required due to ParentBased(AlwaysOff) sampler let exporter = TestExporter::default(); - let provider = TracerProvider::builder() + let provider = SdkTracerProvider::builder() .with_simple_exporter(exporter.clone()) .with_sampler(Sampler::ParentBased(Box::new(Sampler::AlwaysOff))) .build(); @@ -169,9 +169,9 @@ fn assert_carrier_attrs_eq( assert_eq!(carrier_a.get("tracestate"), carrier_b.get("tracestate")); } -fn test_tracer() -> (Tracer, TracerProvider, TestExporter, impl Subscriber) { +fn test_tracer() -> (Tracer, SdkTracerProvider, TestExporter, impl Subscriber) { let exporter = TestExporter::default(); - let provider = TracerProvider::builder() + let provider = SdkTracerProvider::builder() .with_simple_exporter(exporter.clone()) .build(); let tracer = provider.tracer("test"); @@ -206,7 +206,7 @@ fn test_carrier() -> HashMap { carrier } -fn build_sampled_context() -> (Context, impl Subscriber, TestExporter, TracerProvider) { +fn build_sampled_context() -> (Context, impl Subscriber, TestExporter, SdkTracerProvider) { let (tracer, provider, exporter, subscriber) = test_tracer(); let span = tracer.start("sampled"); let cx = Context::current_with_span(span); @@ -218,7 +218,7 @@ fn build_sampled_context() -> (Context, impl Subscriber, TestExporter, TracerPro struct TestExporter(Arc>>); impl SpanExporter for TestExporter { - fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, ExportResult> { + fn export(&mut self, mut batch: Vec) -> BoxFuture<'static, OTelSdkResult> { let spans = self.0.clone(); Box::pin(async move { if let Ok(mut inner) = spans.lock() { From c1597bc5ac206e434b797e77e11b091f36565d1f Mon Sep 17 00:00:00 2001 From: Christopher Schramm Date: Tue, 11 Feb 2025 17:26:47 +0100 Subject: [PATCH 2/3] Update MSRV --- .github/workflows/CI.yml | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 68f2aae..b7ef6a1 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -80,7 +80,7 @@ jobs: - run: cargo hack check --feature-powerset --no-dev-deps check-msrv: - # Run `cargo check` on our minimum supported Rust version (1.70.0). This + # Run `cargo check` on our minimum supported Rust version (1.75.0). This # checks with minimal versions; maximal versions are checked above. name: "cargo check (+MSRV -Zminimal-versions)" needs: check @@ -88,7 +88,7 @@ jobs: strategy: matrix: toolchain: - - 1.70.0 + - 1.75.0 - stable steps: - uses: actions/checkout@v4 diff --git a/Cargo.toml b/Cargo.toml index 2ad46e1..fd69f6e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ categories = [ keywords = ["tracing", "opentelemetry", "jaeger", "zipkin", "async"] license = "MIT" edition = "2021" -rust-version = "1.70.0" +rust-version = "1.75.0" [features] default = ["tracing-log", "metrics"] From 19da32009fad11e9996b35269129fc998e89b86e Mon Sep 17 00:00:00 2001 From: Christopher Schramm Date: Tue, 11 Feb 2025 17:31:38 +0100 Subject: [PATCH 3/3] Bump version --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index fd69f6e..eaacf15 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tracing-opentelemetry" -version = "0.28.0" +version = "0.29.0" description = "OpenTelemetry integration for tracing" homepage = "https://github.com/tokio-rs/tracing-opentelemetry" repository = "https://github.com/tokio-rs/tracing-opentelemetry"