diff --git a/lib/sentry/opentelemetry/sampler.ex b/lib/sentry/opentelemetry/sampler.ex index f37de5c3..c5ad6cef 100644 --- a/lib/sentry/opentelemetry/sampler.ex +++ b/lib/sentry/opentelemetry/sampler.ex @@ -35,7 +35,7 @@ if Code.ensure_loaded?(:otel_sampler) do config ) do result = - if span_name in config[:drop] do + if config[:drop] && span_name in config[:drop] do {:drop, [], []} else traces_sampler = Sentry.Config.traces_sampler() diff --git a/test/sentry/opentelemetry/sampler_test.exs b/test/sentry/opentelemetry/sampler_test.exs index 3b37c5b0..7678189d 100644 --- a/test/sentry/opentelemetry/sampler_test.exs +++ b/test/sentry/opentelemetry/sampler_test.exs @@ -50,6 +50,26 @@ defmodule Sentry.Opentelemetry.SamplerTest do assert {"sentry-sample_rate", "1.0"} in tracestate assert {"sentry-sampled", "true"} in tracestate end + + test "records and samples spans when drop list is nil" do + put_test_config(traces_sample_rate: 1.0) + test_ctx = create_test_span_context() + + assert {:record_and_sample, [], tracestate} = + Sampler.should_sample( + test_ctx, + 123, + nil, + "Elixir.Oban.Worker process", + nil, + nil, + [] + ) + + assert is_list(tracestate) + assert {"sentry-sample_rate", "1.0"} in tracestate + assert {"sentry-sampled", "true"} in tracestate + end end describe "sampling based on traces_sample_rate" do