@@ -33,10 +33,7 @@ class SentryTracesSampler {
3333 try {
3434 final result = tracesSampler (samplingContext);
3535 if (result != null ) {
36- return SentryTracesSamplingDecision (
37- _sample (result),
38- sampleRate: result,
39- );
36+ return _sample2 (result);
4037 }
4138 } catch (exception, stackTrace) {
4239 _options.logger (
@@ -64,10 +61,7 @@ class SentryTracesSampler {
6461 double ? optionsOrDefaultRate = optionsRate ?? defaultRate;
6562
6663 if (optionsOrDefaultRate != null ) {
67- return SentryTracesSamplingDecision (
68- _sample (optionsOrDefaultRate),
69- sampleRate: optionsOrDefaultRate,
70- );
64+ return _sample2 (optionsOrDefaultRate);
7165 }
7266
7367 return SentryTracesSamplingDecision (false );
@@ -78,8 +72,19 @@ class SentryTracesSampler {
7872 if (optionsRate == null || ! tracesSamplingDecision.sampled) {
7973 return false ;
8074 }
81- return _sample (optionsRate);
75+ return _shouldSample (optionsRate);
8276 }
8377
84- bool _sample (double result) => ! (result < _random.nextDouble ());
78+ SentryTracesSamplingDecision _sample2 (double sampleRate) {
79+ final sampleRand = _random.nextDouble ();
80+ return SentryTracesSamplingDecision (
81+ _shouldSample (sampleRate, sampleRand: sampleRand),
82+ sampleRate: sampleRate,
83+ sampleRand: sampleRand);
84+ }
85+
86+ bool _shouldSample (double sampleRate, {double ? sampleRand}) {
87+ final rand = sampleRand ?? _random.nextDouble ();
88+ return rand <= sampleRate;
89+ }
8590}
0 commit comments