From 80806e1c79c2ede8ba1584e2260a51d91f3a8db2 Mon Sep 17 00:00:00 2001 From: paullegranddc Date: Fri, 30 May 2025 14:03:37 +0200 Subject: [PATCH 1/2] fix(span_processor): only call on_start with recording spans According to the spec, spans that are not recording should not be passed to span processors. --- opentelemetry-sdk/CHANGELOG.md | 3 +++ opentelemetry-sdk/src/trace/tracer.rs | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/opentelemetry-sdk/CHANGELOG.md b/opentelemetry-sdk/CHANGELOG.md index 1c9e3de159..c0ca5cd22d 100644 --- a/opentelemetry-sdk/CHANGELOG.md +++ b/opentelemetry-sdk/CHANGELOG.md @@ -2,6 +2,9 @@ ## vNext +- TODO: Placeholder for Span processor related things + - *Fix* SpanProcessor::on_start is no longer called on non recording spans + ## 0.30.0 Released 2025-May-23 diff --git a/opentelemetry-sdk/src/trace/tracer.rs b/opentelemetry-sdk/src/trace/tracer.rs index 40e55fdc52..f6c2391b7e 100644 --- a/opentelemetry-sdk/src/trace/tracer.rs +++ b/opentelemetry-sdk/src/trace/tracer.rs @@ -13,7 +13,7 @@ use crate::trace::{ IdGenerator, ShouldSample, SpanEvents, SpanLimits, SpanLinks, }; use opentelemetry::{ - trace::{SamplingDecision, SpanBuilder, SpanContext, SpanKind, TraceContextExt, TraceFlags}, + trace::{SamplingDecision, Span as _, SpanBuilder, SpanContext, SpanKind, TraceContextExt, TraceFlags}, Context, InstrumentationScope, KeyValue, }; use std::fmt; @@ -281,9 +281,11 @@ impl opentelemetry::trace::Tracer for SdkTracer { } }; - // Call `on_start` for all processors - for processor in provider.span_processors() { - processor.on_start(&mut span, parent_cx) + if span.is_recording() { + // Call `on_start` for all processors + for processor in provider.span_processors() { + processor.on_start(&mut span, parent_cx) + } } span From 159e336371829b823bf420b3fe1b4d26abfda66c Mon Sep 17 00:00:00 2001 From: paullegranddc Date: Fri, 30 May 2025 15:37:53 +0200 Subject: [PATCH 2/2] fix: fmt --- opentelemetry-sdk/src/trace/tracer.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/opentelemetry-sdk/src/trace/tracer.rs b/opentelemetry-sdk/src/trace/tracer.rs index f6c2391b7e..a87147e0c2 100644 --- a/opentelemetry-sdk/src/trace/tracer.rs +++ b/opentelemetry-sdk/src/trace/tracer.rs @@ -13,7 +13,10 @@ use crate::trace::{ IdGenerator, ShouldSample, SpanEvents, SpanLimits, SpanLinks, }; use opentelemetry::{ - trace::{SamplingDecision, Span as _, SpanBuilder, SpanContext, SpanKind, TraceContextExt, TraceFlags}, + trace::{ + SamplingDecision, Span as _, SpanBuilder, SpanContext, SpanKind, TraceContextExt, + TraceFlags, + }, Context, InstrumentationScope, KeyValue, }; use std::fmt;