1010use crate :: trace:: {
1111 provider:: SdkTracerProvider ,
1212 span:: { Span , SpanData } ,
13- IdGenerator , ShouldSample , SpanEvents , SpanLimits , SpanLinks ,
13+ SpanEvents , SpanLimits , SpanLinks ,
1414} ;
1515use opentelemetry:: {
1616 trace:: {
17- SamplingDecision , Span as _, SpanBuilder , SpanContext , SpanKind , TraceContextExt ,
17+ SamplingDecision , Span as _, SpanBuilder , SpanContext , SpanKind , Status , TraceContextExt ,
1818 TraceFlags ,
1919 } ,
2020 Context , InstrumentationScope , KeyValue ,
@@ -105,14 +105,11 @@ impl SdkTracer {
105105 let SpanBuilder {
106106 name,
107107 start_time,
108- end_time,
109108 events,
110- status,
111109 ..
112110 } = builder;
113111
114112 let start_time = start_time. unwrap_or_else ( opentelemetry:: time:: now) ;
115- let end_time = end_time. unwrap_or ( start_time) ;
116113 let spans_events_limit = span_limits. max_events_per_span as usize ;
117114 let span_events: SpanEvents = if let Some ( mut events) = events {
118115 let dropped_count = events. len ( ) . saturating_sub ( spans_events_limit) ;
@@ -141,33 +138,17 @@ impl SdkTracer {
141138 span_kind : builder. span_kind . take ( ) . unwrap_or ( SpanKind :: Internal ) ,
142139 name,
143140 start_time,
144- end_time,
141+ end_time : start_time ,
145142 attributes : attribute_options,
146143 dropped_attributes_count,
147144 events : span_events,
148145 links : span_links,
149- status,
146+ status : Status :: default ( ) ,
150147 } ) ,
151148 self . clone ( ) ,
152149 span_limits,
153150 )
154151 }
155-
156- /// The [`IdGenerator`] associated with this tracer.
157- ///
158- // Note: this is necessary for tracing-opentelemetry's `PreSampledTracer`.
159- #[ doc( hidden) ]
160- pub fn id_generator ( & self ) -> & dyn IdGenerator {
161- & * self . provider . config ( ) . id_generator
162- }
163-
164- /// The [`ShouldSample`] associated with this tracer.
165- ///
166- // Note: this is necessary for tracing-opentelemetry's `PreSampledTracer`.
167- #[ doc( hidden) ]
168- pub fn should_sample ( & self ) -> & dyn ShouldSample {
169- & * self . provider . config ( ) . sampler
170- }
171152}
172153
173154impl opentelemetry:: trace:: Tracer for SdkTracer {
@@ -181,7 +162,7 @@ impl opentelemetry::trace::Tracer for SdkTracer {
181162 /// trace. A span is said to be a _root span_ if it does not have a parent. Each
182163 /// trace includes a single root span, which is the shared ancestor of all other
183164 /// spans in the trace.
184- fn build_with_context ( & self , mut builder : SpanBuilder , parent_cx : & Context ) -> Self :: Span {
165+ fn build_with_context ( & self , builder : SpanBuilder , parent_cx : & Context ) -> Self :: Span {
185166 if parent_cx. is_telemetry_suppressed ( ) {
186167 return Span :: new (
187168 SpanContext :: empty_context ( ) ,
@@ -203,10 +184,7 @@ impl opentelemetry::trace::Tracer for SdkTracer {
203184 }
204185
205186 let config = provider. config ( ) ;
206- let span_id = builder
207- . span_id
208- . take ( )
209- . unwrap_or_else ( || config. id_generator . new_span_id ( ) ) ;
187+ let span_id = config. id_generator . new_span_id ( ) ;
210188 let trace_id;
211189 let mut psc = & SpanContext :: empty_context ( ) ;
212190
@@ -221,25 +199,17 @@ impl opentelemetry::trace::Tracer for SdkTracer {
221199 trace_id = sc. trace_id ( ) ;
222200 psc = sc;
223201 } else {
224- trace_id = builder
225- . trace_id
226- . unwrap_or_else ( || config. id_generator . new_trace_id ( ) ) ;
202+ trace_id = config. id_generator . new_trace_id ( ) ;
227203 } ;
228204
229- // In order to accommodate use cases like `tracing-opentelemetry` we there is the ability
230- // to use pre-sampling. Otherwise, the standard method of sampling is followed.
231- let samplings_result = if let Some ( sr) = builder. sampling_result . take ( ) {
232- sr
233- } else {
234- config. sampler . should_sample (
235- Some ( parent_cx) ,
236- trace_id,
237- & builder. name ,
238- builder. span_kind . as_ref ( ) . unwrap_or ( & SpanKind :: Internal ) ,
239- builder. attributes . as_ref ( ) . unwrap_or ( & Vec :: new ( ) ) ,
240- builder. links . as_deref ( ) . unwrap_or ( & [ ] ) ,
241- )
242- } ;
205+ let samplings_result = config. sampler . should_sample (
206+ Some ( parent_cx) ,
207+ trace_id,
208+ & builder. name ,
209+ builder. span_kind . as_ref ( ) . unwrap_or ( & SpanKind :: Internal ) ,
210+ builder. attributes . as_ref ( ) . unwrap_or ( & Vec :: new ( ) ) ,
211+ builder. links . as_deref ( ) . unwrap_or ( & [ ] ) ,
212+ ) ;
243213
244214 let trace_flags = parent_cx. span ( ) . span_context ( ) . trace_flags ( ) ;
245215 let trace_state = samplings_result. trace_state ;
0 commit comments