Skip to content

Commit d0b325d

Browse files
committed
Support otel 0.31 release
1 parent 43d31fe commit d0b325d

File tree

6 files changed

+38
-1
lines changed

6 files changed

+38
-1
lines changed

reqwest-tracing/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77

88
## [Unreleased]
9+
- Added support fro OpenTelemetry `0.31` ([#249](https://github.com/TrueLayer/reqwest-middleware/pull/249))
910

1011
## [0.5.8] - 2025-06-16
1112

reqwest-tracing/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ opentelemetry_0_27 = ["opentelemetry_0_27_pkg", "tracing-opentelemetry_0_28_pkg"
2121
opentelemetry_0_28 = ["opentelemetry_0_28_pkg", "tracing-opentelemetry_0_29_pkg"]
2222
opentelemetry_0_29 = ["opentelemetry_0_29_pkg", "tracing-opentelemetry_0_30_pkg"]
2323
opentelemetry_0_30 = ["opentelemetry_0_30_pkg", "tracing-opentelemetry_0_31_pkg"]
24+
opentelemetry_0_31 = ["opentelemetry_0_31_pkg", "tracing-opentelemetry_0_32_pkg"]
2425
# This feature ensures that both the old (deprecated) and new attributes are published simultaneously.
2526
# By doing so, we maintain backward compatibility, allowing existing code that relies on the old attributes
2627
# to continue functioning while encouraging the transition to the new attributes.
@@ -47,6 +48,7 @@ opentelemetry_0_27_pkg = { package = "opentelemetry", version = "0.27.0", option
4748
opentelemetry_0_28_pkg = { package = "opentelemetry", version = "0.28.0", optional = true }
4849
opentelemetry_0_29_pkg = { package = "opentelemetry", version = "0.29.0", optional = true }
4950
opentelemetry_0_30_pkg = { package = "opentelemetry", version = "0.30.0", optional = true }
51+
opentelemetry_0_31_pkg = { package = "opentelemetry", version = "0.31.0", optional = true }
5052
tracing-opentelemetry_0_21_pkg = { package = "tracing-opentelemetry", version = "0.21.0", optional = true }
5153
tracing-opentelemetry_0_22_pkg = { package = "tracing-opentelemetry", version = "0.22.0", optional = true }
5254
tracing-opentelemetry_0_23_pkg = { package = "tracing-opentelemetry", version = "0.23.0", optional = true }
@@ -58,6 +60,7 @@ tracing-opentelemetry_0_28_pkg = { package = "tracing-opentelemetry", version =
5860
tracing-opentelemetry_0_29_pkg = { package = "tracing-opentelemetry", version = "0.29.0", optional = true }
5961
tracing-opentelemetry_0_30_pkg = { package = "tracing-opentelemetry", version = "0.30.0", optional = true }
6062
tracing-opentelemetry_0_31_pkg = { package = "tracing-opentelemetry", version = "0.31.0", optional = true }
63+
tracing-opentelemetry_0_32_pkg = { package = "tracing-opentelemetry", version = "0.32.0", optional = true }
6164

6265
[target.'cfg(target_arch = "wasm32")'.dependencies]
6366
getrandom = { version = "0.2.0", features = ["js"] }
@@ -78,6 +81,7 @@ opentelemetry_sdk_0_27 = { package = "opentelemetry_sdk", version = "0.27.0", fe
7881
opentelemetry_sdk_0_28 = { package = "opentelemetry_sdk", version = "0.28.0", features = ["trace"] }
7982
opentelemetry_sdk_0_29 = { package = "opentelemetry_sdk", version = "0.29.0", features = ["trace"] }
8083
opentelemetry_sdk_0_30 = { package = "opentelemetry_sdk", version = "0.30.0", features = ["trace"] }
84+
opentelemetry_sdk_0_31 = { package = "opentelemetry_sdk", version = "0.31.0", features = ["trace"] }
8185
opentelemetry_stdout_0_1 = { package = "opentelemetry-stdout", version = "0.1.0", features = ["trace"] }
8286
opentelemetry_stdout_0_2 = { package = "opentelemetry-stdout", version = "0.2.0", features = ["trace"] }
8387
opentelemetry_stdout_0_3 = { package = "opentelemetry-stdout", version = "0.3.0", features = ["trace"] }

reqwest-tracing/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ an opentelemetry version feature:
9999
reqwest-tracing = { version = "0.5.0", features = ["opentelemetry_0_22"] }
100100
```
101101

102-
Available opentelemetry features are `opentelemetry_0_22`, `opentelemetry_0_21`, and `opentelemetry_0_20`,
102+
Available opentelemetry features are `opentelemetry_0_20` through `opentelemetry_0_31`.
103103

104104
#### License
105105

reqwest-tracing/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ mod middleware;
9595
feature = "opentelemetry_0_28",
9696
feature = "opentelemetry_0_29",
9797
feature = "opentelemetry_0_30",
98+
feature = "opentelemetry_0_31",
9899
))]
99100
mod otel;
100101
mod reqwest_otel_span_builder;

reqwest-tracing/src/middleware.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ where
5757
feature = "opentelemetry_0_28",
5858
feature = "opentelemetry_0_29",
5959
feature = "opentelemetry_0_30",
60+
feature = "opentelemetry_0_31",
6061
))]
6162
let req = if extensions.get::<crate::DisableOtelPropagation>().is_none() {
6263
// Adds tracing headers to the given request to propagate the OpenTelemetry context to downstream revivers of the request.

reqwest-tracing/src/otel.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,13 @@ pub fn inject_opentelemetry_context_into_request(mut request: Request) -> Reques
8282
injector.inject_context(&context, &mut RequestCarrier::new(&mut request))
8383
});
8484

85+
#[cfg(feature = "opentelemetry_0_31")]
86+
opentelemetry_0_31_pkg::global::get_text_map_propagator(|injector| {
87+
use tracing_opentelemetry_0_32_pkg::OpenTelemetrySpanExt;
88+
let context = Span::current().context();
89+
injector.inject_context(&context, &mut RequestCarrier::new(&mut request))
90+
});
91+
8592
request
8693
}
8794

@@ -186,6 +193,13 @@ impl opentelemetry_0_30_pkg::propagation::Injector for RequestCarrier<'_> {
186193
}
187194
}
188195

196+
#[cfg(feature = "opentelemetry_0_31")]
197+
impl opentelemetry_0_31_pkg::propagation::Injector for RequestCarrier<'_> {
198+
fn set(&mut self, key: &str, value: String) {
199+
self.set_inner(key, value)
200+
}
201+
}
202+
189203
#[cfg(test)]
190204
mod test {
191205
use std::sync::OnceLock;
@@ -417,6 +431,22 @@ mod test {
417431
subscriber.with(telemetry)
418432
};
419433

434+
#[cfg(feature = "opentelemetry_0_31")]
435+
let subscriber = {
436+
use opentelemetry_0_31_pkg::trace::TracerProvider;
437+
438+
let provider = opentelemetry_sdk_0_31::trace::SdkTracerProvider::builder().build();
439+
440+
let tracer = provider.tracer("reqwest");
441+
let _ = opentelemetry_0_31_pkg::global::set_tracer_provider(provider);
442+
opentelemetry_0_31_pkg::global::set_text_map_propagator(
443+
opentelemetry_sdk_0_31::propagation::TraceContextPropagator::new(),
444+
);
445+
446+
let telemetry = tracing_opentelemetry_0_32_pkg::layer().with_tracer(tracer);
447+
subscriber.with(telemetry)
448+
};
449+
420450
tracing::subscriber::set_global_default(subscriber).unwrap();
421451
});
422452

0 commit comments

Comments
 (0)