public void endSegment()

in aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/AWSXRayRecorder.java [528:568]


    public void endSegment() {
        SegmentContext context = getSegmentContext();
        if (context != null) {
            context.endSegment(this);
        }

        Entity current = getTraceEntity();
        if (current != null) {
            Segment segment = current.getParentSegment();

            // Return immediately if ending a no-op segment
            if (!segment.isRecording()) {
                clearTraceEntity();
                return;
            }

            logger.debug("Ending segment named '" + segment.getName() + "'.");

            segmentListeners
                    .stream()
                    .filter(Objects::nonNull)
                    .forEach(listener -> listener.beforeEndSegment(segment));

            if (segment.end()) {
                sendSegment(segment);
            } else {
                logger.debug("Not emitting segment named '" + segment.getName() + "' as it parents in-progress subsegments.");
            }

            segmentListeners
                    .stream()
                    .filter(Objects::nonNull)
                    .forEach(listener -> listener.afterEndSegment(segment));

            clearTraceEntity();
        } else {
            getContextMissingStrategy().contextMissing("Failed to end segment: segment cannot be found.",
                                                       SegmentNotFoundException.class);
        }

    }