Simplify traceparent extraction using span context directly
Build it from trace_id/span_id/trace_flags instead of round-tripping
through a HashMap carrier. Also drops the opentelemetry_sdk dep from
quire-server since TraceContextPropagator is no longer needed there.
https://claude.ai/code/session_01Tbgz29e8A9KS4Bh94skkFX
diff --git a/Cargo.lock b/Cargo.lock
index 1fbda02..148e9d0 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2611,7 +2611,6 @@ dependencies = [
"miette",
"mlua",
"opentelemetry",
- "opentelemetry_sdk",
"petgraph",
"predicates",
"quire-core",
diff --git a/quire-server/Cargo.toml b/quire-server/Cargo.toml
index 42fc8ce..953e502 100644
--- a/quire-server/Cargo.toml
+++ b/quire-server/Cargo.toml
@@ -29,7 +29,6 @@ serde_json = { workspace = true }
tempfile = { workspace = true }
thiserror = { workspace = true }
opentelemetry = { workspace = true }
-opentelemetry_sdk = { workspace = true }
tracing = { workspace = true }
tracing-opentelemetry = { workspace = true }
diff --git a/quire-server/src/ci/mod.rs b/quire-server/src/ci/mod.rs
index 4b692d8..6c74b34 100644
--- a/quire-server/src/ci/mod.rs
+++ b/quire-server/src/ci/mod.rs
@@ -5,7 +5,7 @@ mod run;
pub(crate) mod error;
pub use error::{Error, Result};
-use opentelemetry::propagation::TextMapPropagator as _;
+use opentelemetry::trace::TraceContextExt as _;
pub use quire_core::ci::pipeline::{
DefinitionError, Diagnostic, Job, Pipeline, PipelineError, StructureError,
};
@@ -169,12 +169,15 @@ fn run_ref(ctx: &TriggerContext<'_>, pushed_at: jiff::Timestamp, push_ref: &Push
let session = ApiSession::new(ctx.port);
let span = tracing::info_span!("quire.ci.run", repo = %ctx.event_repo);
- let traceparent = {
- let mut carrier = std::collections::HashMap::new();
- opentelemetry_sdk::propagation::TraceContextPropagator::new()
- .inject_context(&span.context(), &mut carrier);
- carrier.remove("traceparent")
- };
+ let sc = span.context().span().span_context().clone();
+ let traceparent = sc.is_valid().then(|| {
+ format!(
+ "00-{}-{}-{:02x}",
+ sc.trace_id(),
+ sc.span_id(),
+ sc.trace_flags()
+ )
+ });
let _guard = span.enter();
sentry::with_scope(