Skip to content

Commit c888aae

Browse files
cschrammdjc
authored andcommitted
Update opentelemetry to 0.28
1 parent 1e4ad6b commit c888aae

17 files changed

+101
-114
lines changed

Cargo.toml

+8-8
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ default = ["tracing-log", "metrics"]
2020
# Enables support for exporting OpenTelemetry metrics
2121
metrics = ["opentelemetry/metrics","opentelemetry_sdk/metrics", "smallvec"]
2222
# Enables experimental support for OpenTelemetry gauge metrics
23-
metrics_gauge_unstable = ["opentelemetry/otel_unstable"]
23+
metrics_gauge_unstable = []
2424

2525
[dependencies]
26-
opentelemetry = { version = "0.27.0", default-features = false, features = ["trace"] }
27-
opentelemetry_sdk = { version = "0.27.0", default-features = false, features = ["trace"] }
26+
opentelemetry = { version = "0.28.0", default-features = false, features = ["trace"] }
27+
opentelemetry_sdk = { version = "0.28.0", default-features = false, features = ["trace"] }
2828
tracing = { version = "0.1.35", default-features = false, features = ["std"] }
2929
tracing-core = "0.1.28"
3030
tracing-subscriber = { version = "0.3.0", default-features = false, features = ["registry", "std"] }
@@ -43,11 +43,11 @@ smallvec = { version = "1.0", optional = true }
4343
[dev-dependencies]
4444
async-trait = "0.1.56"
4545
criterion = { version = "0.5.1", default-features = false, features = ["html_reports"] }
46-
opentelemetry = { version = "0.27.0", features = ["trace", "metrics"] }
47-
opentelemetry_sdk = { version = "0.27.0", default-features = false, features = ["trace", "rt-tokio"] }
48-
opentelemetry-stdout = { version = "0.27.0", features = ["trace", "metrics"] }
49-
opentelemetry-otlp = { version = "0.27.0", features = ["metrics"] }
50-
opentelemetry-semantic-conventions = { version = "0.27.0", features = ["semconv_experimental"] }
46+
opentelemetry = { version = "0.28.0", features = ["trace", "metrics"] }
47+
opentelemetry_sdk = { version = "0.28.0", default-features = false, features = ["trace", "rt-tokio"] }
48+
opentelemetry-stdout = { version = "0.28.0", features = ["trace", "metrics"] }
49+
opentelemetry-otlp = { version = "0.28.0", features = ["metrics", "grpc-tonic"] }
50+
opentelemetry-semantic-conventions = { version = "0.28.0", features = ["semconv_experimental"] }
5151
futures-util = { version = "0.3.17", default-features = false }
5252
tokio = { version = "1", features = ["full"] }
5353
tokio-stream = "0.1"

benches/trace.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use opentelemetry::{
33
trace::{Span, SpanBuilder, Tracer as _, TracerProvider as _},
44
Context,
55
};
6-
use opentelemetry_sdk::trace::{Tracer, TracerProvider};
6+
use opentelemetry_sdk::trace::{SdkTracerProvider, Tracer};
77
#[cfg(not(target_os = "windows"))]
88
use pprof::criterion::{Output, PProfProfiler};
99
use std::time::SystemTime;
@@ -14,7 +14,7 @@ fn many_enters(c: &mut Criterion) {
1414
let mut group = c.benchmark_group("otel_many_enters");
1515

1616
group.bench_function("spec_baseline", |b| {
17-
let provider = TracerProvider::default();
17+
let provider = SdkTracerProvider::default();
1818
let tracer = provider.tracer("bench");
1919
b.iter(|| {
2020
fn dummy(tracer: &Tracer, cx: &Context) {
@@ -43,7 +43,7 @@ fn many_enters(c: &mut Criterion) {
4343
}
4444

4545
{
46-
let provider = TracerProvider::default();
46+
let provider = SdkTracerProvider::default();
4747
let tracer = provider.tracer("bench");
4848
let otel_layer = tracing_opentelemetry::layer()
4949
.with_tracer(tracer)
@@ -56,7 +56,7 @@ fn many_enters(c: &mut Criterion) {
5656
}
5757

5858
{
59-
let provider = TracerProvider::default();
59+
let provider = SdkTracerProvider::default();
6060
let tracer = provider.tracer("bench");
6161
let otel_layer = tracing_opentelemetry::layer()
6262
.with_tracer(tracer)
@@ -73,7 +73,7 @@ fn many_children(c: &mut Criterion) {
7373
let mut group = c.benchmark_group("otel_many_children");
7474

7575
group.bench_function("spec_baseline", |b| {
76-
let provider = TracerProvider::default();
76+
let provider = SdkTracerProvider::default();
7777
let tracer = provider.tracer("bench");
7878
b.iter(|| {
7979
fn dummy(tracer: &Tracer, cx: &Context) {
@@ -101,7 +101,7 @@ fn many_children(c: &mut Criterion) {
101101
}
102102

103103
{
104-
let provider = TracerProvider::default();
104+
let provider = SdkTracerProvider::default();
105105
let tracer = provider.tracer("bench");
106106
let otel_layer = tracing_opentelemetry::layer()
107107
.with_tracer(tracer)
@@ -118,7 +118,7 @@ fn many_events(c: &mut Criterion) {
118118
let mut group = c.benchmark_group("otel_many_events");
119119

120120
group.bench_function("spec_baseline", |b| {
121-
let provider = TracerProvider::default();
121+
let provider = SdkTracerProvider::default();
122122
let tracer = provider.tracer("bench");
123123
b.iter(|| {
124124
fn dummy(tracer: &Tracer, cx: &Context) {
@@ -147,7 +147,7 @@ fn many_events(c: &mut Criterion) {
147147
}
148148

149149
{
150-
let provider = TracerProvider::default();
150+
let provider = SdkTracerProvider::default();
151151
let tracer = provider.tracer("bench");
152152
let otel_layer = tracing_opentelemetry::layer()
153153
.with_tracer(tracer)
@@ -160,7 +160,7 @@ fn many_events(c: &mut Criterion) {
160160
}
161161

162162
{
163-
let provider = TracerProvider::builder()
163+
let provider = SdkTracerProvider::builder()
164164
.with_max_events_per_span(1000)
165165
.build();
166166
let tracer = provider.tracer("bench");

examples/basic.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
use opentelemetry::trace::TracerProvider as _;
2-
use opentelemetry_sdk::trace::TracerProvider;
2+
use opentelemetry_sdk::trace::SdkTracerProvider;
33
use opentelemetry_stdout as stdout;
44
use tracing::{error, span};
55
use tracing_subscriber::layer::SubscriberExt;
66
use tracing_subscriber::Registry;
77

88
fn main() {
99
// Create a new OpenTelemetry trace pipeline that prints to stdout
10-
let provider = TracerProvider::builder()
10+
let provider = SdkTracerProvider::builder()
1111
.with_simple_exporter(stdout::SpanExporter::default())
1212
.build();
1313
let tracer = provider.tracer("readme_example");

examples/opentelemetry-error.rs

+8-11
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@ use std::{
88

99
use opentelemetry::global;
1010
use opentelemetry::trace::TracerProvider as _;
11-
use opentelemetry_sdk::{
12-
self as sdk,
13-
export::trace::{ExportResult, SpanExporter},
14-
};
11+
use opentelemetry_sdk::{self as sdk, error::OTelSdkResult, trace::SpanExporter};
1512
use tracing::{error, instrument, span, trace, warn};
1613
use tracing_subscriber::prelude::*;
1714

@@ -57,11 +54,11 @@ fn double_failable_work(fail: bool) -> Result<&'static str, Error> {
5754
}
5855

5956
fn main() -> Result<(), Box<dyn StdError + Send + Sync + 'static>> {
60-
let builder = sdk::trace::TracerProvider::builder().with_simple_exporter(WriterExporter);
57+
let builder = sdk::trace::SdkTracerProvider::builder().with_simple_exporter(WriterExporter);
6158
let provider = builder.build();
6259
let tracer = provider.tracer("opentelemetry-write-exporter");
6360

64-
global::set_tracer_provider(provider);
61+
global::set_tracer_provider(provider.clone());
6562

6663
let opentelemetry = tracing_opentelemetry::layer().with_tracer(tracer);
6764
tracing_subscriber::registry()
@@ -86,7 +83,7 @@ fn main() -> Result<(), Box<dyn StdError + Send + Sync + 'static>> {
8683
// Shut down the current tracer provider. This will invoke the shutdown
8784
// method on all span processors. span processors should export remaining
8885
// spans before return.
89-
global::shutdown_tracer_provider();
86+
provider.shutdown().unwrap();
9087

9188
Ok(())
9289
}
@@ -97,19 +94,19 @@ struct WriterExporter;
9794
impl SpanExporter for WriterExporter {
9895
fn export(
9996
&mut self,
100-
batch: Vec<sdk::export::trace::SpanData>,
101-
) -> futures_util::future::BoxFuture<'static, sdk::export::trace::ExportResult> {
97+
batch: Vec<sdk::trace::SpanData>,
98+
) -> futures_util::future::BoxFuture<'static, OTelSdkResult> {
10299
let mut writer = std::io::stdout();
103100
for span in batch {
104101
writeln!(writer, "{}", SpanData(span)).unwrap();
105102
}
106103
writeln!(writer).unwrap();
107104

108-
Box::pin(async move { ExportResult::Ok(()) })
105+
Box::pin(async move { OTelSdkResult::Ok(()) })
109106
}
110107
}
111108

112-
struct SpanData(sdk::export::trace::SpanData);
109+
struct SpanData(sdk::trace::SpanData);
113110
impl Display for SpanData {
114111
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
115112
writeln!(f, "Span: \"{}\"", self.0.name)?;

examples/opentelemetry-otlp.rs

+18-20
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
use opentelemetry::{global, trace::TracerProvider as _, KeyValue};
22
use opentelemetry_sdk::{
33
metrics::{MeterProviderBuilder, PeriodicReader, SdkMeterProvider},
4-
runtime,
5-
trace::{RandomIdGenerator, Sampler, TracerProvider},
4+
trace::{RandomIdGenerator, Sampler, SdkTracerProvider},
65
Resource,
76
};
87
use opentelemetry_semantic_conventions::{
@@ -15,14 +14,16 @@ use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
1514

1615
// Create a Resource that captures information about the entity for which telemetry is recorded.
1716
fn resource() -> Resource {
18-
Resource::from_schema_url(
19-
[
20-
KeyValue::new(SERVICE_NAME, env!("CARGO_PKG_NAME")),
21-
KeyValue::new(SERVICE_VERSION, env!("CARGO_PKG_VERSION")),
22-
KeyValue::new(DEPLOYMENT_ENVIRONMENT_NAME, "develop"),
23-
],
24-
SCHEMA_URL,
25-
)
17+
Resource::builder()
18+
.with_schema_url(
19+
[
20+
KeyValue::new(SERVICE_NAME, env!("CARGO_PKG_NAME")),
21+
KeyValue::new(SERVICE_VERSION, env!("CARGO_PKG_VERSION")),
22+
KeyValue::new(DEPLOYMENT_ENVIRONMENT_NAME, "develop"),
23+
],
24+
SCHEMA_URL,
25+
)
26+
.build()
2627
}
2728

2829
// Construct MeterProvider for MetricsLayer
@@ -33,16 +34,13 @@ fn init_meter_provider() -> SdkMeterProvider {
3334
.build()
3435
.unwrap();
3536

36-
let reader = PeriodicReader::builder(exporter, runtime::Tokio)
37+
let reader = PeriodicReader::builder(exporter)
3738
.with_interval(std::time::Duration::from_secs(30))
3839
.build();
3940

4041
// For debugging in development
41-
let stdout_reader = PeriodicReader::builder(
42-
opentelemetry_stdout::MetricExporter::default(),
43-
runtime::Tokio,
44-
)
45-
.build();
42+
let stdout_reader =
43+
PeriodicReader::builder(opentelemetry_stdout::MetricExporter::default()).build();
4644

4745
let meter_provider = MeterProviderBuilder::default()
4846
.with_resource(resource())
@@ -56,21 +54,21 @@ fn init_meter_provider() -> SdkMeterProvider {
5654
}
5755

5856
// Construct TracerProvider for OpenTelemetryLayer
59-
fn init_tracer_provider() -> TracerProvider {
57+
fn init_tracer_provider() -> SdkTracerProvider {
6058
let exporter = opentelemetry_otlp::SpanExporter::builder()
6159
.with_tonic()
6260
.build()
6361
.unwrap();
6462

65-
TracerProvider::builder()
63+
SdkTracerProvider::builder()
6664
// Customize sampling strategy
6765
.with_sampler(Sampler::ParentBased(Box::new(Sampler::TraceIdRatioBased(
6866
1.0,
6967
))))
7068
// If export trace to AWS X-Ray, you can use XrayIdGenerator
7169
.with_id_generator(RandomIdGenerator::default())
7270
.with_resource(resource())
73-
.with_batch_exporter(exporter, runtime::Tokio)
71+
.with_batch_exporter(exporter)
7472
.build()
7573
}
7674

@@ -104,7 +102,7 @@ fn init_tracing_subscriber() -> OtelGuard {
104102
}
105103

106104
struct OtelGuard {
107-
tracer_provider: TracerProvider,
105+
tracer_provider: SdkTracerProvider,
108106
meter_provider: SdkMeterProvider,
109107
}
110108

src/layer.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ where
546546
/// .build()
547547
/// .unwrap();
548548
///
549-
/// let tracer = opentelemetry_sdk::trace::TracerProvider::builder()
549+
/// let tracer = opentelemetry_sdk::trace::SdkTracerProvider::builder()
550550
/// .with_simple_exporter(otlp_exporter)
551551
/// .build()
552552
/// .tracer("trace_demo");
@@ -598,7 +598,7 @@ where
598598
/// .build()
599599
/// .unwrap();
600600
///
601-
/// let tracer = opentelemetry_sdk::trace::TracerProvider::builder()
601+
/// let tracer = opentelemetry_sdk::trace::SdkTracerProvider::builder()
602602
/// .with_simple_exporter(otlp_exporter)
603603
/// .build()
604604
/// .tracer("trace_demo");

src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,14 @@
5151
//! ## Examples
5252
//!
5353
//! ```
54-
//! use opentelemetry_sdk::trace::TracerProvider;
54+
//! use opentelemetry_sdk::trace::SdkTracerProvider;
5555
//! use opentelemetry::trace::{Tracer, TracerProvider as _};
5656
//! use tracing::{error, span};
5757
//! use tracing_subscriber::layer::SubscriberExt;
5858
//! use tracing_subscriber::Registry;
5959
//!
6060
//! // Create a new OpenTelemetry trace pipeline that prints to stdout
61-
//! let provider = TracerProvider::builder()
61+
//! let provider = SdkTracerProvider::builder()
6262
//! .with_simple_exporter(opentelemetry_stdout::SpanExporter::default())
6363
//! .build();
6464
//! let tracer = provider.tracer("readme_example");

src/tracer.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,11 @@ mod tests {
152152
use super::*;
153153
use crate::OtelData;
154154
use opentelemetry::trace::TracerProvider as _;
155-
use opentelemetry_sdk::trace::{Sampler, TracerProvider};
155+
use opentelemetry_sdk::trace::{Sampler, SdkTracerProvider};
156156

157157
#[test]
158158
fn assigns_default_trace_id_if_missing() {
159-
let provider = TracerProvider::default();
159+
let provider = SdkTracerProvider::default();
160160
let tracer = provider.tracer("test");
161161
let mut builder = SpanBuilder::from_name("empty".to_string());
162162
builder.span_id = Some(SpanId::from(1u64));
@@ -195,7 +195,7 @@ mod tests {
195195
#[test]
196196
fn sampled_context() {
197197
for (name, sampler, parent_cx, previous_sampling_result, is_sampled) in sampler_data() {
198-
let provider = TracerProvider::builder().with_sampler(sampler).build();
198+
let provider = SdkTracerProvider::builder().with_sampler(sampler).build();
199199
let tracer = provider.tracer("test");
200200
let mut builder = SpanBuilder::from_name("parent".to_string());
201201
builder.sampling_result = previous_sampling_result;

tests/batch_global_subscriber.rs

+8-9
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
use futures_util::future::BoxFuture;
22
use opentelemetry::{global as otel_global, trace::TracerProvider as _};
33
use opentelemetry_sdk::{
4-
export::trace::{ExportResult, SpanData, SpanExporter},
5-
runtime,
6-
trace::TracerProvider,
4+
error::OTelSdkResult,
5+
trace::{SdkTracerProvider, SpanData, SpanExporter},
76
};
87
use tokio::runtime::Runtime;
98
use tracing::{info_span, subscriber, Level, Subscriber};
@@ -17,7 +16,7 @@ use std::sync::{Arc, Mutex};
1716
struct TestExporter(Arc<Mutex<Vec<SpanData>>>);
1817

1918
impl SpanExporter for TestExporter {
20-
fn export(&mut self, mut batch: Vec<SpanData>) -> BoxFuture<'static, ExportResult> {
19+
fn export(&mut self, mut batch: Vec<SpanData>) -> BoxFuture<'static, OTelSdkResult> {
2120
let spans = self.0.clone();
2221
Box::pin(async move {
2322
if let Ok(mut inner) = spans.lock() {
@@ -28,12 +27,12 @@ impl SpanExporter for TestExporter {
2827
}
2928
}
3029

31-
fn test_tracer(runtime: &Runtime) -> (TracerProvider, TestExporter, impl Subscriber) {
30+
fn test_tracer(runtime: &Runtime) -> (SdkTracerProvider, TestExporter, impl Subscriber) {
3231
let _guard = runtime.enter();
3332

3433
let exporter = TestExporter::default();
35-
let provider = TracerProvider::builder()
36-
.with_batch_exporter(exporter.clone(), runtime::Tokio)
34+
let provider = SdkTracerProvider::builder()
35+
.with_batch_exporter(exporter.clone())
3736
.build();
3837
let tracer = provider.tracer("test");
3938

@@ -70,15 +69,15 @@ fn shutdown_global() {
7069
let rt = Runtime::new().unwrap();
7170
let (provider, exporter, subscriber) = test_tracer(&rt);
7271

73-
otel_global::set_tracer_provider(provider);
72+
otel_global::set_tracer_provider(provider.clone());
7473
subscriber::set_global_default(subscriber).unwrap();
7574

7675
for _ in 0..1000 {
7776
let _span = info_span!(target: "test_telemetry", "test_span").entered();
7877
}
7978

8079
// Should flush all batched telemetry spans
81-
otel_global::shutdown_tracer_provider();
80+
provider.shutdown().unwrap();
8281

8382
let spans = exporter.0.lock().unwrap();
8483
assert_eq!(spans.len(), 1000);

0 commit comments

Comments
 (0)