Class 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 Detail

      • ProbabilitySampler

        ProbabilitySampler()
    • Method Detail

      • 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:
        java.lang.IllegalArgumentException - if probability is out of range
      • shouldSample

        public final boolean shouldSample​(@Nullable
                                          SpanContext parentContext,
                                          @Nullable
                                          java.lang.Boolean hasRemoteParent,
                                          TraceId traceId,
                                          SpanId spanId,
                                          java.lang.String name,
                                          @Nullable
                                          java.util.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 java.lang.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.