@Override public boolean isSampled(long traceId) { Boolean decision = sample(method).sampled(); return decision != null ? decision : false; } };
public SamplingFlags sample(@Nullable M method) { if (method == null) return SamplingFlags.EMPTY; Sampler sampler = methodsToSamplers.get(method); if (sampler == NULL_SENTINEL) return SamplingFlags.EMPTY; if (sampler != null) return sample(sampler); Float rate = rateForMethod.get(method); if (rate == null) { methodsToSamplers.put(method, NULL_SENTINEL); return SamplingFlags.EMPTY; } sampler = CountingSampler.create(rate); Sampler previousSampler = methodsToSamplers.putIfAbsent(method, sampler); if (previousSampler != null) sampler = previousSampler; // lost race, use the existing counter return sample(sampler); }
@Override public boolean isSampled(long traceId) { Boolean decision = sample(method).sampled(); if (decision == null) return fallback.isSampled(traceId); return decision; } };
@Override public boolean isSampled(long traceId) { Boolean decision = sample(method).sampled(); return decision != null ? decision : false; } };
public SamplingFlags sample(@Nullable M method) { if (method == null) return SamplingFlags.EMPTY; Sampler sampler = methodsToSamplers.get(method); if (sampler == NULL_SENTINEL) return SamplingFlags.EMPTY; if (sampler != null) return sample(sampler); Float rate = rateForMethod.get(method); if (rate == null) { methodsToSamplers.put(method, NULL_SENTINEL); return SamplingFlags.EMPTY; } sampler = CountingSampler.create(rate); Sampler previousSampler = methodsToSamplers.putIfAbsent(method, sampler); if (previousSampler != null) sampler = previousSampler; // lost race, use the existing counter return sample(sampler); }
@Override public boolean isSampled(long traceId) { Boolean decision = sample(method).sampled(); if (decision == null) return fallback.isSampled(traceId); return decision; } };