Skip to content

Commit 62eed11

Browse files
authored
Merge branch 'main' into konsti/report-retry-counts
2 parents ad8b9d3 + cfd8951 commit 62eed11

File tree

7 files changed

+86
-3
lines changed

7 files changed

+86
-3
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- uses: actions-rs/cargo@v1
1818
with:
1919
command: test
20-
args: --workspace --all-targets --all-features
20+
args: --workspace --all-targets
2121

2222
test-features-reqwest-middleware:
2323
name: Run test suite for `reqwest-middleware` with every feature combination
@@ -69,7 +69,7 @@ jobs:
6969
uses: taiki-e/install-action@cargo-hack
7070
# Old opentelemetry features group to improve performance
7171
- name: test
72-
run: cargo hack test --feature-powerset -p reqwest-tracing --group-features opentelemetry_0_20,opentelemetry_0_21,opentelemetry_0_22,opentelemetry_0_23,opentelemetry_0_24,opentelemetry_0_25
72+
run: cargo hack test --feature-powerset -p reqwest-tracing --exclude-features opentelemetry_0_20 --group-features opentelemetry_0_21,opentelemetry_0_22,opentelemetry_0_23,opentelemetry_0_24,opentelemetry_0_25,opentelemetry_0_26,opentelemetry_0_27
7373

7474
rustfmt:
7575
name: Rustfmt

.github/workflows/permaref.yaml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Automatically creates a tag for each commit to `main` so when we rebase
2+
# changes on top of the upstream, we retain permanent references to each
3+
# previous commit so they are not orphaned and eventually deleted.
4+
name: Create permanent reference
5+
6+
on:
7+
push:
8+
branches:
9+
- "main"
10+
11+
jobs:
12+
create-permaref:
13+
runs-on: ubuntu-latest
14+
permissions:
15+
contents: "write"
16+
steps:
17+
- name: Checkout
18+
uses: actions/checkout@v5
19+
20+
- name: Get the permanent ref number
21+
id: get_version
22+
run: |
23+
# Enable pipefail so git command failures do not result in null versions downstream
24+
set -x
25+
26+
echo "LAST_PERMA_NUMBER=$(\
27+
git ls-remote --tags --refs --sort="v:refname" \
28+
https://github.com/astral-sh/pubgrub.git | grep "tags/perma-" | tail -n1 | sed 's/.*\/perma-//' \
29+
)" >> $GITHUB_OUTPUT
30+
31+
- name: Configure Git
32+
run: |
33+
git config user.name "$GITHUB_ACTOR"
34+
git config user.email "[email protected]"
35+
36+
- name: Create and push the new tag
37+
run: |
38+
TAG="perma-$((LAST_PERMA_NUMBER + 1))"
39+
git tag -a "$TAG" -m 'Automatically created on push to `main`'
40+
git push origin "$TAG"
41+
env:
42+
LAST_PERMA_NUMBER: ${{ steps.get_version.outputs.LAST_PERMA_NUMBER }}

reqwest-tracing/CHANGELOG.md

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

88
## [Unreleased]
99

10+
## [0.5.8] - 2025-06-16
11+
12+
### Added
13+
- Added support for OpenTelemetry `0.30` ([#236](https://github.com/TrueLayer/reqwest-middleware/pull/236))
14+
1015
## [0.5.7] - 2025-04-08
1116

1217
### Added

reqwest-tracing/Cargo.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "reqwest-tracing"
3-
version = "0.5.7"
3+
version = "0.5.8"
44
authors = ["Rodrigo Gryzinski <[email protected]>"]
55
edition = "2018"
66
description = "Opentracing middleware for reqwest."
@@ -20,6 +20,7 @@ opentelemetry_0_26 = ["opentelemetry_0_26_pkg", "tracing-opentelemetry_0_27_pkg"
2020
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"]
23+
opentelemetry_0_30 = ["opentelemetry_0_30_pkg", "tracing-opentelemetry_0_31_pkg"]
2324
# This feature ensures that both the old (deprecated) and new attributes are published simultaneously.
2425
# By doing so, we maintain backward compatibility, allowing existing code that relies on the old attributes
2526
# to continue functioning while encouraging the transition to the new attributes.
@@ -45,6 +46,7 @@ opentelemetry_0_26_pkg = { package = "opentelemetry", version = "0.26.0", option
4546
opentelemetry_0_27_pkg = { package = "opentelemetry", version = "0.27.0", optional = true }
4647
opentelemetry_0_28_pkg = { package = "opentelemetry", version = "0.28.0", optional = true }
4748
opentelemetry_0_29_pkg = { package = "opentelemetry", version = "0.29.0", optional = true }
49+
opentelemetry_0_30_pkg = { package = "opentelemetry", version = "0.30.0", optional = true }
4850
tracing-opentelemetry_0_21_pkg = { package = "tracing-opentelemetry", version = "0.21.0", optional = true }
4951
tracing-opentelemetry_0_22_pkg = { package = "tracing-opentelemetry", version = "0.22.0", optional = true }
5052
tracing-opentelemetry_0_23_pkg = { package = "tracing-opentelemetry", version = "0.23.0", optional = true }
@@ -55,6 +57,7 @@ tracing-opentelemetry_0_27_pkg = { package = "tracing-opentelemetry", version =
5557
tracing-opentelemetry_0_28_pkg = { package = "tracing-opentelemetry", version = "0.28.0", optional = true }
5658
tracing-opentelemetry_0_29_pkg = { package = "tracing-opentelemetry", version = "0.29.0", optional = true }
5759
tracing-opentelemetry_0_30_pkg = { package = "tracing-opentelemetry", version = "0.30.0", optional = true }
60+
tracing-opentelemetry_0_31_pkg = { package = "tracing-opentelemetry", version = "0.31.0", optional = true }
5861

5962
[target.'cfg(target_arch = "wasm32")'.dependencies]
6063
getrandom = { version = "0.2.0", features = ["js"] }
@@ -74,6 +77,7 @@ opentelemetry_sdk_0_26 = { package = "opentelemetry_sdk", version = "0.26.0", fe
7477
opentelemetry_sdk_0_27 = { package = "opentelemetry_sdk", version = "0.27.0", features = ["trace"] }
7578
opentelemetry_sdk_0_28 = { package = "opentelemetry_sdk", version = "0.28.0", features = ["trace"] }
7679
opentelemetry_sdk_0_29 = { package = "opentelemetry_sdk", version = "0.29.0", features = ["trace"] }
80+
opentelemetry_sdk_0_30 = { package = "opentelemetry_sdk", version = "0.30.0", features = ["trace"] }
7781
opentelemetry_stdout_0_1 = { package = "opentelemetry-stdout", version = "0.1.0", features = ["trace"] }
7882
opentelemetry_stdout_0_2 = { package = "opentelemetry-stdout", version = "0.2.0", features = ["trace"] }
7983
opentelemetry_stdout_0_3 = { package = "opentelemetry-stdout", version = "0.3.0", features = ["trace"] }

reqwest-tracing/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ mod middleware;
9494
feature = "opentelemetry_0_27",
9595
feature = "opentelemetry_0_28",
9696
feature = "opentelemetry_0_29",
97+
feature = "opentelemetry_0_30",
9798
))]
9899
mod otel;
99100
mod reqwest_otel_span_builder;

reqwest-tracing/src/middleware.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ where
5656
feature = "opentelemetry_0_27",
5757
feature = "opentelemetry_0_28",
5858
feature = "opentelemetry_0_29",
59+
feature = "opentelemetry_0_30",
5960
))]
6061
let req = if extensions.get::<crate::DisableOtelPropagation>().is_none() {
6162
// 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
@@ -75,6 +75,13 @@ pub fn inject_opentelemetry_context_into_request(mut request: Request) -> Reques
7575
injector.inject_context(&context, &mut RequestCarrier::new(&mut request))
7676
});
7777

78+
#[cfg(feature = "opentelemetry_0_30")]
79+
opentelemetry_0_30_pkg::global::get_text_map_propagator(|injector| {
80+
use tracing_opentelemetry_0_31_pkg::OpenTelemetrySpanExt;
81+
let context = Span::current().context();
82+
injector.inject_context(&context, &mut RequestCarrier::new(&mut request))
83+
});
84+
7885
request
7986
}
8087

@@ -172,6 +179,13 @@ impl opentelemetry_0_29_pkg::propagation::Injector for RequestCarrier<'_> {
172179
}
173180
}
174181

182+
#[cfg(feature = "opentelemetry_0_30")]
183+
impl opentelemetry_0_30_pkg::propagation::Injector for RequestCarrier<'_> {
184+
fn set(&mut self, key: &str, value: String) {
185+
self.set_inner(key, value)
186+
}
187+
}
188+
175189
#[cfg(test)]
176190
mod test {
177191
use std::sync::OnceLock;
@@ -387,6 +401,22 @@ mod test {
387401
subscriber.with(telemetry)
388402
};
389403

404+
#[cfg(feature = "opentelemetry_0_30")]
405+
let subscriber = {
406+
use opentelemetry_0_30_pkg::trace::TracerProvider;
407+
408+
let provider = opentelemetry_sdk_0_30::trace::SdkTracerProvider::builder().build();
409+
410+
let tracer = provider.tracer("reqwest");
411+
let _ = opentelemetry_0_30_pkg::global::set_tracer_provider(provider);
412+
opentelemetry_0_30_pkg::global::set_text_map_propagator(
413+
opentelemetry_sdk_0_30::propagation::TraceContextPropagator::new(),
414+
);
415+
416+
let telemetry = tracing_opentelemetry_0_31_pkg::layer().with_tracer(tracer);
417+
subscriber.with(telemetry)
418+
};
419+
390420
tracing::subscriber::set_global_default(subscriber).unwrap();
391421
});
392422

0 commit comments

Comments
 (0)