@Override public boolean isEmpty(SerializerProvider serializerProvider, Cause cause) { return null == cause || (cause.getExceptions().isEmpty() && null == cause.getId() && null == cause.getMessage()); }
public void addExceptions(List<ThrowableDescription> descriptors) { if (exceptions.isEmpty()) { addWorkingDirectoryAndPaths(); } exceptions.addAll(descriptors); }
private void addWorkingDirectoryAndPaths() { try { setWorkingDirectory(System.getProperty("user.dir")); } catch (SecurityException se) { logger.warn("Unable to set working directory.", se); } } }
private Optional<ThrowableDescription> referenceInChildren(Throwable throwable, List<Subsegment> subsegments) { return subsegments.parallelStream() .flatMap(subsegment -> subsegment.getCause().getExceptions().stream()) .filter(throwableDescription -> throwable.equals(throwableDescription.getThrowable())) .findAny(); }
private void populateAndEndSubsegment(Subsegment currentSubsegment, Request<?> request, Response<?> response, AmazonServiceException ase) { if (null != response) { populateAndEndSubsegment(currentSubsegment, request, response); return; } else if (null != ase) { if (null != ase.getRequestId()) { currentSubsegment.putAws(REQUEST_ID_SUBSEGMENT_KEY, ase.getRequestId()); } if (null != ase.getHttpHeaders() && null != ase.getHttpHeaders().get(EntityHeaderKeys.AWS.EXTENDED_REQUEST_ID_HEADER)) { currentSubsegment.putAws(EntityDataKeys.AWS.EXTENDED_REQUEST_ID_KEY, ase.getHttpHeaders().get(EntityHeaderKeys.AWS.EXTENDED_REQUEST_ID_HEADER)); } if (null != ase.getErrorMessage()) { currentSubsegment.getCause().setMessage(ase.getErrorMessage()); } currentSubsegment.putAllHttp(extractHttpResponseInformation(ase)); } finalizeSubsegment(request); }
@Override public void addException(Throwable exception) { checkAlreadyEmitted(); setFault(true); synchronized (subsegments) { cause.addExceptions(creator.getThrowableSerializationStrategy().describeInContext(exception, subsegments)); } }
protected EntityImpl(AWSXRayRecorder creator, String name) { StringValidator.throwIfNullOrBlank(name, "(Sub)segment name cannot be null or blank."); validateNotNull(creator); this.creator = creator; this.name = name; this.subsegments = new ArrayList<>(); this.subsegmentsLock = new ReentrantLock(); this.cause = new Cause(); this.http = new ConcurrentHashMap<>(); this.aws = new ConcurrentHashMap<>(); this.sql = new ConcurrentHashMap<>(); this.annotations = new ConcurrentHashMap<>(); this.metadata = new ConcurrentHashMap<>(); this.startTime = Instant.now().toEpochMilli() / 1000.0d; this.id = Entity.generateId(); this.inProgress = true; this.referenceCount = new LongAdder(); this.totalSize = new LongAdder(); }
private Optional<ThrowableDescription> referenceInChildren(Throwable throwable, List<Subsegment> subsegments) { return subsegments.parallelStream() .flatMap(subsegment -> subsegment.getCause().getExceptions().stream()) .filter(throwableDescription -> throwable.equals(throwableDescription.getThrowable())) .findAny(); }
private void populateSubsegmentException(Subsegment subsegment, Context.FailedExecution context) { Throwable exception = context.exception(); subsegment.addException(exception); int statusCode = -1; if (exception instanceof SdkServiceException) { statusCode = ((SdkServiceException) exception).statusCode(); subsegment.getCause().setMessage(exception.getMessage()); if (((SdkServiceException) exception).isThrottlingException()) { subsegment.setThrottle(true); // throttling errors are considered client-side errors subsegment.setError(true); } setRemoteForException(subsegment, exception); } else if (context.httpResponse().isPresent()) { statusCode = context.httpResponse().get().statusCode(); } if (statusCode == -1) { return; } if (statusCode >= 400 && statusCode < 500) { subsegment.setFault(false); subsegment.setError(true); if (statusCode == 429) { subsegment.setThrottle(true); } } else if (statusCode >= 500) { subsegment.setFault(true); } }
@Override public void addException(Throwable exception) { checkAlreadyEmitted(); setFault(true); synchronized (subsegments) { cause.addExceptions(creator.getThrowableSerializationStrategy().describeInContext(exception, subsegments)); } }
protected EntityImpl(AWSXRayRecorder creator, String name) { StringValidator.throwIfNullOrBlank(name, "(Sub)segment name cannot be null or blank."); validateNotNull(creator); this.creator = creator; this.name = name; this.subsegments = new ArrayList<>(); this.subsegmentsLock = new ReentrantLock(); this.cause = new Cause(); this.http = new ConcurrentHashMap<>(); this.aws = new ConcurrentHashMap<>(); this.sql = new ConcurrentHashMap<>(); this.annotations = new ConcurrentHashMap<>(); this.metadata = new ConcurrentHashMap<>(); this.startTime = Instant.now().toEpochMilli() / 1000.0d; this.id = Entity.generateId(); this.inProgress = true; this.referenceCount = new LongAdder(); this.totalSize = new LongAdder(); }
@Override public boolean isEmpty(SerializerProvider serializerProvider, Cause cause) { return null == cause || (cause.getExceptions().isEmpty() && null == cause.getId() && null == cause.getMessage()); }
@Override public void serialize(Cause cause, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { if (!cause.getExceptions().isEmpty()) { ThrowableDescription first = cause.getExceptions().get(0); if (null == first.getId() && null != first.getCause()) { jsonGenerator.writeString(first.getCause()); return; } } objectSerializer.serialize(cause, jsonGenerator, serializerProvider); }
private void populateSubsegmentException(Subsegment subsegment, Context.FailedExecution context) { Throwable exception = context.exception(); subsegment.addException(exception); int statusCode = -1; if (exception instanceof SdkServiceException) { statusCode = ((SdkServiceException) exception).statusCode(); subsegment.getCause().setMessage(exception.getMessage()); if (((SdkServiceException) exception).isThrottlingException()) { subsegment.setThrottle(true); // throttling errors are considered client-side errors subsegment.setError(true); } setRemoteForException(subsegment, exception); } else if (context.httpResponse().isPresent()) { statusCode = context.httpResponse().get().statusCode(); } if (statusCode == -1) { return; } if (statusCode >= 400 && statusCode < 500) { subsegment.setFault(false); subsegment.setError(true); if (statusCode == 429) { subsegment.setThrottle(true); } } else if (statusCode >= 500) { subsegment.setFault(true); } }
public void addExceptions(List<ThrowableDescription> descriptors) { if (exceptions.isEmpty()) { addWorkingDirectoryAndPaths(); } exceptions.addAll(descriptors); }
private void addWorkingDirectoryAndPaths() { try { setWorkingDirectory(System.getProperty("user.dir")); } catch (SecurityException se) { logger.warn("Unable to set working directory.", se); } } }
@Override public void serialize(Cause cause, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { if (!cause.getExceptions().isEmpty()) { ThrowableDescription first = cause.getExceptions().get(0); if (null == first.getId() && null != first.getCause()) { jsonGenerator.writeString(first.getCause()); return; } } objectSerializer.serialize(cause, jsonGenerator, serializerProvider); }
public void addException(ThrowableDescription descriptor) { if (exceptions.isEmpty()) { addWorkingDirectoryAndPaths(); } exceptions.add(descriptor); }
private void setRemoteForException(Subsegment subsegment, Throwable exception) { subsegment.getCause().getExceptions().forEach((e) -> { if (e.getThrowable() == exception) { e.setRemote(true); } }); }
public void addException(ThrowableDescription descriptor) { if (exceptions.isEmpty()) { addWorkingDirectoryAndPaths(); } exceptions.add(descriptor); }