in aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/strategy/sampling/CentralizedSamplingStrategy.java [85:132]
public SamplingResponse shouldTrace(SamplingRequest samplingRequest) {
if (!isStarted) {
startPoller();
}
SamplingResponse sampleResponse;
if (logger.isDebugEnabled()) {
logger.debug("Determining shouldTrace decision for:\n\tserviceName: " + samplingRequest.getService().orElse("")
+ "\n\thost: " + samplingRequest.getHost().orElse("") + "\n\tpath: "
+ samplingRequest.getUrl().orElse("") + "\n\tmethod: " + samplingRequest.getMethod().orElse("")
+ "\n\tserviceType: " + samplingRequest.getServiceType().orElse(""));
}
if (manifest.isExpired(Instant.now())) {
logger.debug("Centralized sampling data expired. Using fallback sampling strategy.");
return fallback.shouldTrace(samplingRequest);
}
for (CentralizedRule rule : manifest.getRules().values()) {
boolean applicable = rule.match(samplingRequest);
if (!applicable) {
continue;
}
if (logger.isDebugEnabled()) {
logger.debug("Applicable rule:" + rule.getName());
}
SamplingResponse response = rule.sample(Instant.now());
if (logger.isDebugEnabled()) {
logger.debug("Segment " + samplingRequest.getService().orElse("") + " has" +
(response.isSampled() ? " " : " NOT ") + "been sampled.");
}
return response;
}
// Match against default rule
CentralizedRule dRule = manifest.getDefaultRule();
if (dRule != null) {
logger.debug("Applicable default rule: " + dRule.getName());
return dRule.sample(Instant.now());
}
logger.debug("Centralized default sampling rule unavailable. Using fallback sampling strategy.");
sampleResponse = fallback.shouldTrace(samplingRequest);
return sampleResponse;
}