From 9e7a36eb99251f26c9c1690b702730182bd5a1bd Mon Sep 17 00:00:00 2001 From: Josh W Lewis Date: Fri, 21 Feb 2025 10:08:56 -0600 Subject: [PATCH 1/4] Add extra header to with_headers test --- opentelemetry-otlp/src/exporter/http/mod.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/opentelemetry-otlp/src/exporter/http/mod.rs b/opentelemetry-otlp/src/exporter/http/mod.rs index f1b982511e..219b01c33f 100644 --- a/opentelemetry-otlp/src/exporter/http/mod.rs +++ b/opentelemetry-otlp/src/exporter/http/mod.rs @@ -675,7 +675,10 @@ mod tests { use std::collections::HashMap; // Arrange let initial_headers = HashMap::from([("k1".to_string(), "v1".to_string())]); - let extra_headers = HashMap::from([("k2".to_string(), "v2".to_string())]); + let extra_headers = HashMap::from([ + ("k2".to_string(), "v2".to_string()), + ("k3".to_string(), "v3".to_string()), + ]); let expected_headers = initial_headers.iter().chain(extra_headers.iter()).fold( HashMap::new(), |mut acc, (k, v)| { From 72f3fdab90ee20ebedac6047c1c52a51198579b3 Mon Sep 17 00:00:00 2001 From: Josh W Lewis Date: Fri, 21 Feb 2025 10:11:45 -0600 Subject: [PATCH 2/4] Adjust name of test to match function --- opentelemetry-otlp/src/exporter/http/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-otlp/src/exporter/http/mod.rs b/opentelemetry-otlp/src/exporter/http/mod.rs index 219b01c33f..5daef5f4f0 100644 --- a/opentelemetry-otlp/src/exporter/http/mod.rs +++ b/opentelemetry-otlp/src/exporter/http/mod.rs @@ -671,7 +671,7 @@ mod tests { } #[test] - fn test_http_exporter_builder_with_header() { + fn test_http_exporter_builder_with_headers() { use std::collections::HashMap; // Arrange let initial_headers = HashMap::from([("k1".to_string(), "v1".to_string())]); From 4b1b789c1b86640236ce1ec3ac98a9b9d647c327 Mon Sep 17 00:00:00 2001 From: Josh W Lewis Date: Fri, 21 Feb 2025 10:15:34 -0600 Subject: [PATCH 3/4] Adjust .with_headers to support multiple header pairs --- opentelemetry-otlp/src/exporter/http/mod.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/opentelemetry-otlp/src/exporter/http/mod.rs b/opentelemetry-otlp/src/exporter/http/mod.rs index 5daef5f4f0..537d41d108 100644 --- a/opentelemetry-otlp/src/exporter/http/mod.rs +++ b/opentelemetry-otlp/src/exporter/http/mod.rs @@ -449,13 +449,13 @@ impl WithHttpConfig for B { fn with_headers(mut self, headers: HashMap) -> Self { // headers will be wrapped, so we must do some logic to unwrap first. - self.http_client_config() + let http_client_headers = self + .http_client_config() .headers - .iter_mut() - .zip(headers) - .for_each(|(http_client_headers, (key, value))| { - http_client_headers.insert(key, super::url_decode(&value).unwrap_or(value)); - }); + .get_or_insert(HashMap::new()); + headers.into_iter().for_each(|(key, value)| { + http_client_headers.insert(key, super::url_decode(&value).unwrap_or(value)); + }); self } } From 2795f2f232cf4bea5f2b0b3b22ec912b26908c92 Mon Sep 17 00:00:00 2001 From: Josh W Lewis Date: Mon, 24 Feb 2025 15:34:44 -0600 Subject: [PATCH 4/4] Changelog entry for .with_headers --- opentelemetry-otlp/CHANGELOG.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/opentelemetry-otlp/CHANGELOG.md b/opentelemetry-otlp/CHANGELOG.md index dc859dd542..311a8a4bfc 100644 --- a/opentelemetry-otlp/CHANGELOG.md +++ b/opentelemetry-otlp/CHANGELOG.md @@ -3,6 +3,7 @@ ## vNext - The `OTEL_EXPORTER_OTLP_TIMEOUT`, `OTEL_EXPORTER_OTLP_TRACES_TIMEOUT`, `OTEL_EXPORTER_OTLP_METRICS_TIMEOUT` and `OTEL_EXPORTER_OTLP_LOGS_TIMEOUT` are changed from seconds to miliseconds. +- Fixed `.with_headers()` in `HttpExporterBuilder` to correctly support multiple key/value pairs. [#2699](https://github.com/open-telemetry/opentelemetry-rust/pull/2699) ## 0.28.0 @@ -41,7 +42,7 @@ Released 2024-Nov-11 - Update `opentelemetry-http` dependency version to 0.27 - Update `opentelemetry-proto` dependency version to 0.27 -- **BREAKING**: +- **BREAKING**: - ([#2217](https://github.com/open-telemetry/opentelemetry-rust/pull/2217)) **Replaced**: The `MetricsExporterBuilder` interface is modified from `with_temporality_selector` to `with_temporality` example can be seen below: Previous Signature: ```rust @@ -88,9 +89,9 @@ Released 2024-Nov-11 - `MetricsExporterBuilder` -> `MetricExporterBuilder` - [#2263](https://github.com/open-telemetry/opentelemetry-rust/pull/2263) - Support `hyper` client for opentelemetry-otlp. This can be enabled using flag `hyper-client`. + Support `hyper` client for opentelemetry-otlp. This can be enabled using flag `hyper-client`. Refer example: https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-otlp/examples/basic-otlp-http - + ## v0.26.0 Released 2024-Sep-30