diff --git a/example-service/Cargo.toml b/example-service/Cargo.toml index 5e4c114..32f3acd 100644 --- a/example-service/Cargo.toml +++ b/example-service/Cargo.toml @@ -17,13 +17,13 @@ anyhow = "1.0" clap = "3.0.0-beta.2" log = "0.4" futures = "0.3" -opentelemetry = { version = "0.13", features = ["rt-tokio"] } -opentelemetry-jaeger = { version = "0.12", features = ["tokio"] } +opentelemetry = { version = "0.16", features = ["rt-tokio"] } +opentelemetry-jaeger = { version = "0.15", features = ["rt-tokio"] } rand = "0.8" tarpc = { version = "0.26", path = "../tarpc", features = ["full"] } tokio = { version = "1", features = ["macros", "net", "rt-multi-thread"] } tracing = { version = "0.1" } -tracing-opentelemetry = "0.12" +tracing-opentelemetry = "0.15" tracing-subscriber = "0.2" [lib] diff --git a/tarpc/Cargo.toml b/tarpc/Cargo.toml index 82fcbbe..12e2060 100644 --- a/tarpc/Cargo.toml +++ b/tarpc/Cargo.toml @@ -41,8 +41,8 @@ tokio = { version = "1", features = ["time"] } tokio-util = { version = "0.6.3", features = ["time"] } tokio-serde = { optional = true, version = "0.8" } tracing = { version = "0.1", default-features = false, features = ["attributes", "log"] } -tracing-opentelemetry = { version = "0.12", default-features = false } -opentelemetry = { version = "0.13", default-features = false } +tracing-opentelemetry = { version = "0.15", default-features = false } +opentelemetry = { version = "0.16", default-features = false } [dev-dependencies] @@ -51,8 +51,8 @@ bincode = "1.3" bytes = { version = "1", features = ["serde"] } flate2 = "1.0" futures-test = "0.3" -opentelemetry = { version = "0.13", default-features = false, features = ["rt-tokio"] } -opentelemetry-jaeger = { version = "0.12", features = ["tokio"] } +opentelemetry = { version = "0.16", default-features = false, features = ["rt-tokio"] } +opentelemetry-jaeger = { version = "0.15", features = ["rt-tokio"] } pin-utils = "0.1.0-alpha" serde_bytes = "0.11" tracing-subscriber = "0.2" diff --git a/tarpc/src/context.rs b/tarpc/src/context.rs index b6e89d7..b922108 100644 --- a/tarpc/src/context.rs +++ b/tarpc/src/context.rs @@ -92,7 +92,7 @@ impl SpanExt for tracing::Span { .with_remote_span_context(opentelemetry::trace::SpanContext::new( opentelemetry::trace::TraceId::from(context.trace_context.trace_id), opentelemetry::trace::SpanId::from(context.trace_context.span_id), - context.trace_context.sampling_decision as u8, + opentelemetry::trace::TraceFlags::from(context.trace_context.sampling_decision), true, opentelemetry::trace::TraceState::default(), )) diff --git a/tarpc/src/trace.rs b/tarpc/src/trace.rs index b60326c..6b9d76b 100644 --- a/tarpc/src/trace.rs +++ b/tarpc/src/trace.rs @@ -71,9 +71,9 @@ pub struct SpanId(u64); #[repr(u8)] pub enum SamplingDecision { /// The associated span was sampled by its creating process. Child spans must also be sampled. - Sampled = opentelemetry::trace::TRACE_FLAG_SAMPLED, + Sampled, /// The associated span was not sampled by its creating process. - Unsampled = opentelemetry::trace::TRACE_FLAG_NOT_SAMPLED, + Unsampled, } impl Context { @@ -173,8 +173,8 @@ impl TryFrom<&tracing::Span> for Context { } } -impl From<&dyn opentelemetry::trace::Span> for Context { - fn from(span: &dyn opentelemetry::trace::Span) -> Self { +impl From> for Context { + fn from(span: opentelemetry::trace::SpanRef<'_>) -> Self { let otel_ctx = span.span_context(); Self { trace_id: TraceId::from(otel_ctx.trace_id()), @@ -184,6 +184,15 @@ impl From<&dyn opentelemetry::trace::Span> for Context { } } +impl From for opentelemetry::trace::TraceFlags { + fn from(decision: SamplingDecision) -> Self { + match decision { + SamplingDecision::Sampled => opentelemetry::trace::TraceFlags::SAMPLED, + SamplingDecision::Unsampled => opentelemetry::trace::TraceFlags::default(), + } + } +} + impl From<&opentelemetry::trace::SpanContext> for SamplingDecision { fn from(context: &opentelemetry::trace::SpanContext) -> Self { if context.is_sampled() {