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..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, SpanBuilder, SpanContext, SpanKind, TraceContextExt, TraceFlags}, + trace::{ + SamplingDecision, Span as _, SpanBuilder, SpanContext, SpanKind, TraceContextExt, + TraceFlags, + }, Context, InstrumentationScope, KeyValue, }; use std::fmt; @@ -281,9 +284,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