@@ -51,7 +51,7 @@ if Code.ensure_loaded?(:otel_sampler) do
5151 sampling_context =
5252 build_sampling_context ( nil , span_name , span_kind , attributes , trace_id )
5353
54- make_sampler_decision ( traces_sampler , sampling_context , [ ] )
54+ make_sampler_decision ( traces_sampler , sampling_context )
5555 else
5656 make_sampling_decision ( traces_sample_rate )
5757 end
@@ -147,41 +147,25 @@ if Code.ensure_loaded?(:otel_sampler) do
147147 sampling_context
148148 end
149149
150- defp make_sampler_decision ( traces_sampler , sampling_context , _existing_tracestate ) do
150+ defp make_sampler_decision ( traces_sampler , sampling_context ) do
151151 try do
152152 result = call_traces_sampler ( traces_sampler , sampling_context )
153153 sample_rate = normalize_sampler_result ( result )
154154
155- cond do
156- sample_rate == 0.0 ->
157- tracestate = build_tracestate ( 0.0 , 1.0 , false )
158-
159- { :drop , [ ] , tracestate }
160-
161- sample_rate == 1.0 ->
162- tracestate = build_tracestate ( 1.0 , 0.0 , true )
163-
164- { :record_and_sample , [ ] , tracestate }
165-
166- is_float ( sample_rate ) and sample_rate > 0.0 and sample_rate < 1.0 ->
167- random_value = :rand . uniform ( )
168- sampled = random_value < sample_rate
169- tracestate = build_tracestate ( sample_rate , random_value , sampled )
170- decision = if sampled , do: :record_and_sample , else: :drop
171-
172- { decision , [ ] , tracestate }
173-
174- true ->
175- tracestate = build_tracestate ( 0.0 , 1.0 , false )
155+ if is_float ( sample_rate ) and sample_rate >= 0.0 and sample_rate <= 1.0 do
156+ make_sampling_decision ( sample_rate )
157+ else
158+ Logger . warning (
159+ "traces_sampler function returned an invalid sample rate: #{ inspect ( sample_rate ) } "
160+ )
176161
177- { :drop , [ ] , tracestate }
162+ make_sampling_decision ( 0.0 )
178163 end
179164 rescue
180165 error ->
181166 Logger . warning ( "traces_sampler function failed: #{ inspect ( error ) } " )
182167
183- tracestate = build_tracestate ( 0.0 , 1.0 , false )
184- { :drop , [ ] , tracestate }
168+ make_sampling_decision ( 0.0 )
185169 end
186170 end
187171
@@ -195,7 +179,7 @@ if Code.ensure_loaded?(:otel_sampler) do
195179
196180 defp normalize_sampler_result ( true ) , do: 1.0
197181 defp normalize_sampler_result ( false ) , do: 0.0
198- defp normalize_sampler_result ( rate ) when is_float ( rate ) , do: rate
182+ defp normalize_sampler_result ( rate ) , do: rate
199183
200184 defp record_discarded_transaction ( ) do
201185 ClientReport.Sender . record_discarded_events ( :sample_rate , "transaction" )
0 commit comments