Ensure default sampler is available
This avoids the possible null pointer reference.
This commit is contained in:
parent
310ec93135
commit
3d1f2b9d01
|
@ -90,9 +90,10 @@ public class RateByServiceSampler implements Sampler, ResponseListener {
|
|||
log.debug("Unable to parse new service rate {} -> {}", key, value);
|
||||
}
|
||||
}
|
||||
if (!updatedServiceRates.isEmpty()) {
|
||||
serviceRates = unmodifiableMap(updatedServiceRates);
|
||||
if (!updatedServiceRates.containsKey(DEFAULT_KEY)) {
|
||||
updatedServiceRates.put(DEFAULT_KEY, new RateSampler(DEFAULT_RATE));
|
||||
}
|
||||
serviceRates = unmodifiableMap(updatedServiceRates);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,16 +108,12 @@ public class RateByServiceSampler implements Sampler, ResponseListener {
|
|||
/** The sample rate used */
|
||||
private final double sampleRate;
|
||||
|
||||
public RateSampler(final String sampleRate) {
|
||||
this(sampleRate == null ? 1 : Double.valueOf(sampleRate));
|
||||
}
|
||||
|
||||
/**
|
||||
* Build an instance of the sampler. The Sample rate is fixed for each instance.
|
||||
*
|
||||
* @param sampleRate a number [0,1] representing the rate ratio.
|
||||
*/
|
||||
public RateSampler(double sampleRate) {
|
||||
private RateSampler(double sampleRate) {
|
||||
|
||||
if (sampleRate < 0) {
|
||||
sampleRate = 1;
|
||||
|
|
|
@ -35,22 +35,20 @@ class RateByServiceSamplerTest extends Specification {
|
|||
ObjectMapper serializer = new ObjectMapper()
|
||||
|
||||
when:
|
||||
String response = '{"rate_by_service": {"service:,env:":1.0, "service:spock,env:test":0.000001}}'
|
||||
String response = '{"rate_by_service": {"service:spock,env:test":0.0}}'
|
||||
serviceSampler.onResponse("traces", serializer.readTree(response))
|
||||
DDSpan span1 = SpanFactory.newSpanOf("foo", "bar")
|
||||
serviceSampler.initializeSamplingPriority(span1)
|
||||
then:
|
||||
span1.getSamplingPriority() == PrioritySampling.SAMPLER_KEEP
|
||||
serviceSampler.sample(span1)
|
||||
// !serviceSampler.sample(SpanFactory.newSpanOf("spock", "test"))
|
||||
|
||||
when:
|
||||
response = '{"rate_by_service": {"service:,env:":0.000001, "service:spock,env:test":1.0}}'
|
||||
response = '{"rate_by_service": {"service:spock,env:test":1.0}}'
|
||||
serviceSampler.onResponse("traces", serializer.readTree(response))
|
||||
DDSpan span2 = SpanFactory.newSpanOf("spock", "test")
|
||||
serviceSampler.initializeSamplingPriority(span2)
|
||||
then:
|
||||
// !serviceSampler.sample(SpanFactory.newSpanOf("foo", "bar"))
|
||||
span2.getSamplingPriority() == PrioritySampling.SAMPLER_KEEP
|
||||
serviceSampler.sample(span2)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue