Class TraceIdRatioBasedSampler
- java.lang.Object
-
- io.opentelemetry.sdk.trace.samplers.TraceIdRatioBasedSampler
-
- All Implemented Interfaces:
Sampler
@Immutable final class TraceIdRatioBasedSampler extends java.lang.Object implements 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.
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
description
private long
idUpperBound
private static SamplingResult
NEGATIVE_SAMPLING_RESULT
private static SamplingResult
POSITIVE_SAMPLING_RESULT
-
Constructor Summary
Constructors Constructor Description TraceIdRatioBasedSampler(double ratio, long idUpperBound)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) static TraceIdRatioBasedSampler
create(double ratio)
private static java.lang.String
decimalFormat(double value)
boolean
equals(java.lang.Object obj)
java.lang.String
getDescription()
Returns the description of thisSampler
.(package private) long
getIdUpperBound()
private static long
getTraceIdRandomPart(java.lang.String traceId)
int
hashCode()
SamplingResult
shouldSample(Context parentContext, java.lang.String traceId, java.lang.String name, SpanKind spanKind, Attributes attributes, java.util.List<LinkData> parentLinks)
Called duringSpan
creation to make a sampling samplingResult.java.lang.String
toString()
-
-
-
Field Detail
-
POSITIVE_SAMPLING_RESULT
private static final SamplingResult POSITIVE_SAMPLING_RESULT
-
NEGATIVE_SAMPLING_RESULT
private static final SamplingResult NEGATIVE_SAMPLING_RESULT
-
idUpperBound
private final long idUpperBound
-
description
private final java.lang.String description
-
-
Method Detail
-
create
static TraceIdRatioBasedSampler create(double ratio)
-
shouldSample
public SamplingResult shouldSample(Context parentContext, java.lang.String traceId, java.lang.String name, SpanKind spanKind, Attributes attributes, java.util.List<LinkData> parentLinks)
Description copied from interface:Sampler
Called duringSpan
creation to make a sampling samplingResult.- Specified by:
shouldSample
in interfaceSampler
- Parameters:
parentContext
- the parent span'sSpanContext
. This can beSpanContext.INVALID
if this is a root span.traceId
- theTraceId
for the newSpan
. This will be identical to that in the parentContext, unless this is a root span.name
- the name of the newSpan
.spanKind
- theSpanKind
of theSpan
.attributes
-Attributes
associated with the span.parentLinks
- the parentLinks associated with the newSpan
.- Returns:
- sampling samplingResult whether span should be sampled or not.
-
getDescription
public java.lang.String getDescription()
Description copied from interface:Sampler
Returns the description of thisSampler
. This may be displayed on debug pages or in the logs.Example: "TraceIdRatioBased{0.000100}"
- Specified by:
getDescription
in interfaceSampler
- Returns:
- the description of this
Sampler
.
-
equals
public boolean equals(@Nullable java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
getIdUpperBound
long getIdUpperBound()
-
getTraceIdRandomPart
private static long getTraceIdRandomPart(java.lang.String traceId)
-
decimalFormat
private static java.lang.String decimalFormat(double value)
-
-