Skip to content

Commit

Permalink
Prepare for otel v0.28 (#168)
Browse files Browse the repository at this point in the history
  • Loading branch information
lalitb authored Feb 11, 2025
1 parent a1db4ed commit 8c443b2
Show file tree
Hide file tree
Showing 59 changed files with 499 additions and 372 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
msrv:
strategy:
matrix:
rust: ["1.71.1"]
rust: ["1.75.0"]
runs-on: ubuntu-latest
continue-on-error: true
steps:
Expand Down
14 changes: 7 additions & 7 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ resolver = "2"
debug = 1

[workspace.dependencies]
opentelemetry = "0.27"
opentelemetry-appender-tracing = "0.27"
opentelemetry-http = "0.27"
opentelemetry-proto = { version = "0.27", default-features = false }
opentelemetry_sdk = { version = "0.27", default-features = false }
opentelemetry-stdout = "0.27"
opentelemetry-semantic-conventions = { version = "0.27", features = [
opentelemetry = "0.28"
opentelemetry-appender-tracing = "0.28"
opentelemetry-http = "0.28"
opentelemetry-proto = { version = "0.28", default-features = false }
opentelemetry_sdk = { version = "0.28", default-features = false }
opentelemetry-stdout = "0.28"
opentelemetry-semantic-conventions = { version = "0.28", features = [
"semconv_experimental",
] }
criterion = "0.5"
6 changes: 3 additions & 3 deletions examples/traceresponse/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ use opentelemetry::{
};
use opentelemetry_contrib::trace::propagator::trace_context_response::TraceContextResponsePropagator;
use opentelemetry_http::{Bytes, HeaderExtractor, HeaderInjector};
use opentelemetry_sdk::{propagation::TraceContextPropagator, trace::TracerProvider};
use opentelemetry_sdk::{propagation::TraceContextPropagator, trace::SdkTracerProvider};
use opentelemetry_stdout::SpanExporter;

fn init_traces() -> Result<TracerProvider, TraceError> {
fn init_traces() -> Result<SdkTracerProvider, TraceError> {
global::set_text_map_propagator(TraceContextPropagator::new());
// Install stdout exporter pipeline to be able to retrieve the collected spans.
// For the demonstration, use `Sampler::AlwaysOn` sampler to sample all traces. In a production
// application, use `Sampler::ParentBased` or `Sampler::TraceIdRatioBased` with a desired ratio.
Ok(TracerProvider::builder()
Ok(SdkTracerProvider::builder()
.with_simple_exporter(SpanExporter::default())
.build())
}
Expand Down
6 changes: 3 additions & 3 deletions examples/traceresponse/src/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use opentelemetry::{
};
use opentelemetry_contrib::trace::propagator::trace_context_response::TraceContextResponsePropagator;
use opentelemetry_http::{Bytes, HeaderExtractor, HeaderInjector};
use opentelemetry_sdk::{propagation::TraceContextPropagator, trace::TracerProvider};
use opentelemetry_sdk::{propagation::TraceContextPropagator, trace::SdkTracerProvider};
use opentelemetry_stdout::SpanExporter;
use std::{convert::Infallible, net::SocketAddr};
use tokio::net::TcpListener;
Expand Down Expand Up @@ -45,13 +45,13 @@ async fn handle(
Ok(res)
}

fn init_traces() -> Result<TracerProvider, TraceError> {
fn init_traces() -> Result<SdkTracerProvider, TraceError> {
global::set_text_map_propagator(TraceContextPropagator::new());

// Install stdout exporter pipeline to be able to retrieve the collected spans.
// For the demonstration, use `Sampler::AlwaysOn` sampler to sample all traces. In a production
// application, use `Sampler::ParentBased` or `Sampler::TraceIdRatioBased` with a desired ratio.
Ok(TracerProvider::builder()
Ok(SdkTracerProvider::builder()
.with_simple_exporter(SpanExporter::default())
.build())
}
Expand Down
5 changes: 5 additions & 0 deletions opentelemetry-aws/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

## vNext

## v0.16.0

- Bump msrv to 1.75.0
- Bump opentelemetry and opentelemetry_sdk versions to 0.27.0

## v0.15.0

- Bump opentelemetry and opentelemetry_sdk versions to 0.27.0
Expand Down
4 changes: 2 additions & 2 deletions opentelemetry-aws/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "opentelemetry-aws"
version = "0.15.0"
version = "0.16.0"
description = "AWS exporters and propagators for OpenTelemetry"
homepage = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-aws"
repository = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-aws"
Expand All @@ -12,7 +12,7 @@ categories = [
keywords = ["opentelemetry", "tracing"]
license = "Apache-2.0"
edition = "2021"
rust-version = "1.70.0"
rust-version = "1.75.0"

[package.metadata.docs.rs]
all-features = true
Expand Down
51 changes: 27 additions & 24 deletions opentelemetry-aws/src/detector/lambda.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ use opentelemetry_sdk::resource::ResourceDetector;
use opentelemetry_sdk::Resource;
use opentelemetry_semantic_conventions as semconv;
use std::env;
use std::time::Duration;

// For a complete list of reserved environment variables in Lambda, see:
// https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html
Expand All @@ -18,12 +17,12 @@ const AWS_LAMBDA_LOG_GROUP_NAME_ENV_VAR: &str = "AWS_LAMBDA_LOG_GROUP_NAME";
pub struct LambdaResourceDetector;

impl ResourceDetector for LambdaResourceDetector {
fn detect(&self, _: Duration) -> Resource {
fn detect(&self) -> Resource {
let lambda_name = env::var(AWS_LAMBDA_FUNCTION_NAME_ENV_VAR).unwrap_or_default();
// If no lambda name is provided, it means that
// we're not on a Lambda environment, so we return empty resource.
if lambda_name.is_empty() {
return Resource::empty();
return Resource::builder_empty().build();
}

let aws_region = env::var(AWS_REGION_ENV_VAR).unwrap_or_default();
Expand All @@ -50,7 +49,9 @@ impl ResourceDetector for LambdaResourceDetector {
),
];

Resource::new(attributes)
Resource::builder_empty()
.with_attributes(attributes)
.build()
}
}

Expand All @@ -75,26 +76,28 @@ mod tests {
"/aws/lambda/my-lambda-function",
);

let expected = Resource::new([
KeyValue::new(semconv::resource::CLOUD_PROVIDER, "aws"),
KeyValue::new(semconv::resource::CLOUD_REGION, "eu-west-3"),
KeyValue::new(
semconv::resource::FAAS_INSTANCE,
"2023/01/01/[$LATEST]5d1edb9e525d486696cf01a3503487bc",
),
KeyValue::new(semconv::resource::FAAS_NAME, "my-lambda-function"),
KeyValue::new(semconv::resource::FAAS_VERSION, "$LATEST"),
KeyValue::new(semconv::resource::FAAS_MAX_MEMORY, 128 * 1024 * 1024),
KeyValue::new(
semconv::resource::AWS_LOG_GROUP_NAMES,
Value::Array(Array::from(vec![StringValue::from(
"/aws/lambda/my-lambda-function".to_string(),
)])),
),
]);
let expected = Resource::builder_empty()
.with_attributes([
KeyValue::new(semconv::resource::CLOUD_PROVIDER, "aws"),
KeyValue::new(semconv::resource::CLOUD_REGION, "eu-west-3"),
KeyValue::new(
semconv::resource::FAAS_INSTANCE,
"2023/01/01/[$LATEST]5d1edb9e525d486696cf01a3503487bc",
),
KeyValue::new(semconv::resource::FAAS_NAME, "my-lambda-function"),
KeyValue::new(semconv::resource::FAAS_VERSION, "$LATEST"),
KeyValue::new(semconv::resource::FAAS_MAX_MEMORY, 128 * 1024 * 1024),
KeyValue::new(
semconv::resource::AWS_LOG_GROUP_NAMES,
Value::Array(Array::from(vec![StringValue::from(
"/aws/lambda/my-lambda-function".to_string(),
)])),
),
])
.build();

let detector = LambdaResourceDetector {};
let got = detector.detect(Duration::from_secs(0));
let got = detector.detect();

assert_eq!(expected, got);

Expand All @@ -109,7 +112,7 @@ mod tests {
#[sealed_test]
fn test_aws_lambda_detector_returns_empty_if_no_lambda_environment() {
let detector = LambdaResourceDetector {};
let got = detector.detect(Duration::from_secs(0));
assert_eq!(Resource::empty(), got);
let got = detector.detect();
assert_eq!(Resource::builder_empty().build(), got);
}
}
4 changes: 2 additions & 2 deletions opentelemetry-aws/src/trace/id_generator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ use std::time::{Duration, UNIX_EPOCH};
///
/// ```
/// use opentelemetry::trace::{TraceId};
/// use opentelemetry_sdk::trace::{self, IdGenerator, TracerProvider};
/// use opentelemetry_sdk::trace::{self, IdGenerator, SdkTracerProvider};
/// use opentelemetry_aws::trace::XrayIdGenerator;
/// let _provider: TracerProvider = TracerProvider::builder()
/// let _provider:SdkTracerProvider = SdkTracerProvider::builder()
/// .with_config(trace::config().with_id_generator(XrayIdGenerator::default()))
/// .build();
/// ```
Expand Down
4 changes: 2 additions & 2 deletions opentelemetry-aws/src/trace/xray_propagator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@
//! ```no_run
//! use opentelemetry::{global, trace::{Tracer, TracerProvider as _}};
//! use opentelemetry_aws::trace::XrayPropagator;
//! use opentelemetry_sdk::trace::TracerProvider;
//! use opentelemetry_sdk::trace::SdkTracerProvider;
//! use opentelemetry_stdout::SpanExporter;
//! use opentelemetry_http::HeaderInjector;
//!
//! #[tokio::main]
//! async fn main() -> std::result::Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
//! // Set the global propagator to X-Ray propagator
//! global::set_text_map_propagator(XrayPropagator::default());
//! let provider = TracerProvider::builder()
//! let provider = SdkTracerProvider::builder()
//! .with_simple_exporter(SpanExporter::default())
//! .build();
//! let tracer = provider.tracer("readme_example");
Expand Down
5 changes: 5 additions & 0 deletions opentelemetry-contrib/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

## vNext

## v0.20.0

- Bump msrv to 1.75.0
- Bump opentelemetry and opentelemetry_sdk versions to 0.28
- Bump opentelemetry-semantic-conventions version to 0.28
- [Breaking] `JaegerJsonExporter::install_batch()` now returns `TracerProvider`.
Additionally, global tracer provider now needs to be set by the user by calling `global::set_tracer_provider(tracer_provider.clone())` (original PR [opentelemetry-rust#1812](https://github.com/open-telemetry/opentelemetry-rust/pull/1812))

Expand Down
4 changes: 2 additions & 2 deletions opentelemetry-contrib/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "opentelemetry-contrib"
version = "0.19.0"
version = "0.20.0"
description = "Rust contrib repo for OpenTelemetry"
homepage = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-contrib"
repository = "https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-contrib"
Expand All @@ -12,7 +12,7 @@ categories = [
keywords = ["opentelemetry", "tracing"]
license = "Apache-2.0"
edition = "2021"
rust-version = "1.70.0"
rust-version = "1.75.0"

[package.metadata.docs.rs]
all-features = true
Expand Down
13 changes: 7 additions & 6 deletions opentelemetry-contrib/benches/new_span.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ use opentelemetry_contrib::trace::{
new_span_if_parent_sampled, new_span_if_recording, TracerSource,
};
use opentelemetry_sdk::{
export::trace::{ExportResult, SpanData, SpanExporter},
trace::{Sampler, TracerProvider},
error::OTelSdkResult,
trace::{Sampler, SdkTracerProvider},
trace::{SpanData, SpanExporter},
};
#[cfg(not(target_os = "windows"))]
use pprof::criterion::{Output, PProfProfiler};
Expand Down Expand Up @@ -120,7 +121,7 @@ impl Environment {
}
}

fn setup(&self) -> (Option<TracerProvider>, BoxedTracer, Option<ContextGuard>) {
fn setup(&self) -> (Option<SdkTracerProvider>, BoxedTracer, Option<ContextGuard>) {
match self {
Environment::InContext => {
let guard = Context::current()
Expand Down Expand Up @@ -150,8 +151,8 @@ impl Display for Environment {
}
}

fn parent_sampled_tracer(inner_sampler: Sampler) -> (TracerProvider, BoxedTracer) {
let provider = TracerProvider::builder()
fn parent_sampled_tracer(inner_sampler: Sampler) -> (SdkTracerProvider, BoxedTracer) {
let provider = SdkTracerProvider::builder()
.with_sampler(Sampler::ParentBased(Box::new(inner_sampler)))
.with_simple_exporter(NoopExporter)
.build();
Expand All @@ -163,7 +164,7 @@ fn parent_sampled_tracer(inner_sampler: Sampler) -> (TracerProvider, BoxedTracer
struct NoopExporter;

impl SpanExporter for NoopExporter {
fn export(&mut self, _spans: Vec<SpanData>) -> BoxFuture<'static, ExportResult> {
fn export(&mut self, _spans: Vec<SpanData>) -> BoxFuture<'static, OTelSdkResult> {
Box::pin(futures_util::future::ready(Ok(())))
}
}
Expand Down
Loading

0 comments on commit 8c443b2

Please sign in to comment.