@Override public void endSubsegment(AWSXRayRecorder recorder) { Entity current = getTraceEntity(); if (current instanceof Subsegment) { if (logger.isDebugEnabled()) { logger.debug("Ending subsegment named: " + current.getName()); } Subsegment currentSubsegment = (Subsegment) current; if (currentSubsegment.end()) { recorder.sendSegment(currentSubsegment.getParentSegment()); } else { if (recorder.getStreamingStrategy().requiresStreaming(currentSubsegment.getParentSegment())) { recorder.getStreamingStrategy().streamSome(currentSubsegment.getParentSegment(), recorder.getEmitter()); } setTraceEntity(current.getParent()); } } else { recorder.getContextMissingStrategy().contextMissing("Failed to end subsegment: subsegment cannot be found.", SubsegmentNotFoundException.class); } } }
@Override public void endSubsegment(AWSXRayRecorder recorder) { Entity current = getTraceEntity(); if (current instanceof Subsegment) { if (logger.isDebugEnabled()) { logger.debug("Ending subsegment named: " + current.getName()); } Subsegment currentSubsegment = (Subsegment) current; if (currentSubsegment.end()) { recorder.sendSegment(currentSubsegment.getParentSegment()); } else { if (recorder.getStreamingStrategy().requiresStreaming(currentSubsegment.getParentSegment())) { recorder.getStreamingStrategy().streamSome(currentSubsegment.getParentSegment(), recorder.getEmitter()); } setTraceEntity(current.getParent()); } } else { recorder.getContextMissingStrategy().contextMissing("Failed to end subsegment: subsegment cannot be found.", SubsegmentNotFoundException.class); } } }
/** * Ends the provided subsegment. This method doesn't touch context storage. * * @param subsegment * the subsegment to close. */ public void endSubsegment(Subsegment subsegment) { if(subsegment == null) { logger.debug("No input subsegment to end. No-op."); return; } boolean rootReady = subsegment.end(); // First handling the special case where its direct parent is a facade segment if(subsegment.getParent() instanceof FacadeSegment) { if(((FacadeSegment) subsegment.getParent()).isSampled()) { getEmitter().sendSubsegment(subsegment); } return; } // Otherwise we check the happy case where the entire segment is ready if (rootReady && !(subsegment.getParentSegment() instanceof FacadeSegment)) { sendSegment(subsegment.getParentSegment()); return; } // If not we try to stream closed subsegments regardless the root segment is facade or real if (this.getStreamingStrategy().requiresStreaming(subsegment.getParentSegment())) { this.getStreamingStrategy().streamSome(subsegment.getParentSegment(), this.getEmitter()); } }
@Override public void endSubsegment(AWSXRayRecorder recorder) { Entity current = getTraceEntity(); if (current instanceof Subsegment) { if (logger.isDebugEnabled()) { logger.debug("Ending subsegment named: " + current.getName()); } Subsegment currentSubsegment = (Subsegment) current; currentSubsegment.end(); if (recorder.getStreamingStrategy().requiresStreaming(currentSubsegment.getParentSegment())) { recorder.getStreamingStrategy().streamSome(currentSubsegment.getParentSegment(), recorder.getEmitter()); } Entity parentEntity = current.getParent(); if (parentEntity instanceof FacadeSegment) { if (((FacadeSegment) parentEntity).isSampled()) { current.getCreator().getEmitter().sendSubsegment((Subsegment) current); } clearTraceEntity(); } else { setTraceEntity(current.getParent()); } } else { throw new SubsegmentNotFoundException("Failed to end a subsegment: subsegment cannot be found."); } } }
/** * Ends the provided subsegment. This method doesn't touch context storage. * * @param subsegment * the subsegment to close. */ public void endSubsegment(Subsegment subsegment) { if(subsegment == null) { logger.debug("No input subsegment to end. No-op."); return; } boolean rootReady = subsegment.end(); // First handling the special case where its direct parent is a facade segment if(subsegment.getParent() instanceof FacadeSegment) { if(((FacadeSegment) subsegment.getParent()).isSampled()) { getEmitter().sendSubsegment(subsegment); } return; } // Otherwise we check the happy case where the entire segment is ready if (rootReady && !(subsegment.getParentSegment() instanceof FacadeSegment)) { sendSegment(subsegment.getParentSegment()); return; } // If not we try to stream closed subsegments regardless the root segment is facade or real if (this.getStreamingStrategy().requiresStreaming(subsegment.getParentSegment())) { this.getStreamingStrategy().streamSome(subsegment.getParentSegment(), this.getEmitter()); } }
@Override public void endSubsegment(AWSXRayRecorder recorder) { Entity current = getTraceEntity(); if (current instanceof Subsegment) { if (logger.isDebugEnabled()) { logger.debug("Ending subsegment named: " + current.getName()); } Subsegment currentSubsegment = (Subsegment) current; currentSubsegment.end(); if (recorder.getStreamingStrategy().requiresStreaming(currentSubsegment.getParentSegment())) { recorder.getStreamingStrategy().streamSome(currentSubsegment.getParentSegment(), recorder.getEmitter()); } Entity parentEntity = current.getParent(); if (parentEntity instanceof FacadeSegment) { if (((FacadeSegment) parentEntity).isSampled()) { current.getCreator().getEmitter().sendSubsegment((Subsegment) current); } clearTraceEntity(); } else { setTraceEntity(current.getParent()); } } else { throw new SubsegmentNotFoundException("Failed to end a subsegment: subsegment cannot be found."); } } }