From 44a7df511a784ae455217f01cf7d689c5107f661 Mon Sep 17 00:00:00 2001 From: Floriane TUERNAL SABOTINOV Date: Wed, 1 Oct 2025 10:35:21 +0200 Subject: [PATCH] traceparent injection into headers --- common/bin-common/src/opentelemetry/context.rs | 7 +++++++ common/http-api-client/src/lib.rs | 8 ++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/common/bin-common/src/opentelemetry/context.rs b/common/bin-common/src/opentelemetry/context.rs index eec89b61ec..0938d5e042 100644 --- a/common/bin-common/src/opentelemetry/context.rs +++ b/common/bin-common/src/opentelemetry/context.rs @@ -4,6 +4,7 @@ use opentelemetry::trace::{SpanContext, TraceContextExt, TraceId}; use opentelemetry_sdk::{propagation::TraceContextPropagator, trace::IdGenerator}; use tracing_opentelemetry::OpenTelemetrySpanExt; use std::collections::HashMap; +use std::fmt::Display; /// Make a Carrier for context propagation pub struct ContextCarrier { @@ -76,6 +77,12 @@ impl Extractor for ContextCarrier { } } +impl Display for ContextCarrier { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{:?}", self.data) + } +} + pub struct ManualContextPropagator { pub root_span: tracing::Span, pub trace_id: TraceId, diff --git a/common/http-api-client/src/lib.rs b/common/http-api-client/src/lib.rs index 6946ef9b2f..a63d39ddde 100644 --- a/common/http-api-client/src/lib.rs +++ b/common/http-api-client/src/lib.rs @@ -979,14 +979,10 @@ impl ApiClientCore for Client { // if opentelemetry is activated add the current trace context to the request // TODO featurize opentelemetry use opentelemetry::Context; - use opentelemetry::propagation::TextMapPropagator; - use opentelemetry_sdk::propagation::TraceContextPropagator; use nym_bin_common::opentelemetry::context::ContextCarrier; - let context = Context::current(); - let propagator = TraceContextPropagator::new(); - let mut carrier = ContextCarrier::new_empty(); - propagator.inject_context(&context, &mut carrier); + let carrier = ContextCarrier::new_with_current_context(Context::current()); + if let Some(traceparent) = carrier.extract_traceparent() { if let Ok(header_value) = HeaderValue::from_str(&traceparent) { req.headers_mut()