public SamplingResponse shouldTrace()

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;
    }