Class ProbabilitySampler

java.lang.Object
io.opencensus.trace.Sampler
io.opencensus.trace.samplers.ProbabilitySampler
Direct Known Subclasses:
AutoValue_ProbabilitySampler

@Immutable abstract class ProbabilitySampler extends Sampler
We assume the lower 64 bits of the traceId's are randomly distributed around the whole (long) range. We convert an incoming probability into an upper bound on that value, such that we can just compare the absolute value of the id and the bound to see if we are within the desired probability range. Using the low bits of the traceId also ensures that systems that only use 64 bit ID's will also work with this sampler.
  • Constructor Details

    • ProbabilitySampler

      ProbabilitySampler()
  • Method Details

    • getProbability

      abstract double getProbability()
    • getIdUpperBound

      abstract long getIdUpperBound()
    • create

      static ProbabilitySampler create(double probability)
      Returns a new ProbabilitySampler. The probability of sampling a trace is equal to that of the specified probability.
      Parameters:
      probability - The desired probability of sampling. Must be within [0.0, 1.0].
      Returns:
      a new ProbabilitySampler.
      Throws:
      IllegalArgumentException - if probability is out of range
    • shouldSample

      public final boolean shouldSample(@Nullable SpanContext parentContext, @Nullable Boolean hasRemoteParent, TraceId traceId, SpanId spanId, String name, @Nullable List<Span> parentLinks)
      Description copied from class: Sampler
      Called during Span creation to make a sampling decision.
      Specified by:
      shouldSample in class Sampler
      Parameters:
      parentContext - the parent span's SpanContext. null if this is a root span.
      hasRemoteParent - true if the parent Span is remote. null if this is a root span.
      traceId - the TraceId for the new Span. This will be identical to that in the parentContext, unless this is a root span.
      spanId - the SpanId for the new Span.
      name - the name of the new Span.
      parentLinks - the parentLinks associated with the new Span.
      Returns:
      true if the Span is sampled.
    • getDescription

      public final String getDescription()
      Description copied from class: Sampler
      Returns the description of this Sampler. This may be displayed on debug pages or in the logs.

      Example: "ProbabilitySampler{0.000100}"

      Specified by:
      getDescription in class Sampler
      Returns:
      the description of this Sampler.