From 4c08919aa12766967e01093e7663f79eb5723c02 Mon Sep 17 00:00:00 2001 From: luyor Date: Sat, 2 Jul 2022 01:58:56 +0800 Subject: [PATCH] Fix trace kIsSampled flag set incorrectly (#1465) --- sdk/include/opentelemetry/sdk/trace/sampler.h | 6 ++++++ sdk/src/trace/tracer.cc | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/sdk/include/opentelemetry/sdk/trace/sampler.h b/sdk/include/opentelemetry/sdk/trace/sampler.h index 452ba924b4..799d490e8b 100644 --- a/sdk/include/opentelemetry/sdk/trace/sampler.h +++ b/sdk/include/opentelemetry/sdk/trace/sampler.h @@ -45,6 +45,12 @@ struct SamplingResult std::unique_ptr> attributes; // The tracestate used by the span. nostd::shared_ptr trace_state; + + inline bool IsRecording() + { + return decision == Decision::RECORD_ONLY || decision == Decision::RECORD_AND_SAMPLE; + } + inline bool IsSampled() { return decision == Decision::RECORD_AND_SAMPLE; } }; /** diff --git a/sdk/src/trace/tracer.cc b/sdk/src/trace/tracer.cc index be5e5f7d96..370eda49cb 100644 --- a/sdk/src/trace/tracer.cc +++ b/sdk/src/trace/tracer.cc @@ -64,9 +64,9 @@ nostd::shared_ptr Tracer::StartSpan( auto sampling_result = context_->GetSampler().ShouldSample(parent_context, trace_id, name, options.kind, attributes, links); - auto trace_flags = sampling_result.decision == Decision::DROP - ? trace_api::TraceFlags{} - : trace_api::TraceFlags{trace_api::TraceFlags::kIsSampled}; + auto trace_flags = sampling_result.IsSampled() + ? trace_api::TraceFlags{trace_api::TraceFlags::kIsSampled} + : trace_api::TraceFlags{}; auto span_context = std::unique_ptr(new trace_api::SpanContext( trace_id, span_id, trace_flags, false, @@ -74,7 +74,7 @@ nostd::shared_ptr Tracer::StartSpan( : is_parent_span_valid ? parent_context.trace_state() : trace_api::TraceState::GetDefault())); - if (sampling_result.decision == Decision::DROP) + if (!sampling_result.IsRecording()) { // create no-op span with valid span-context.