diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java index 71e3927d90a..ae38ea8af3c 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java @@ -9,6 +9,7 @@ import datadog.trace.api.cache.QualifiedClassNameCache; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; +import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities; import datadog.trace.bootstrap.instrumentation.api.Tags; import java.lang.reflect.Method; import java.net.Inet4Address; @@ -86,8 +87,14 @@ public AgentScope onError(final AgentScope scope, final Throwable throwable) { } public AgentSpan onError(final AgentSpan span, final Throwable throwable) { + return onError(span, throwable, ErrorPriorities.DEFAULT); + } + + public AgentSpan onError(final AgentSpan span, final Throwable throwable, byte errorPriority) { if (throwable != null) { - span.addThrowable(throwable instanceof ExecutionException ? throwable.getCause() : throwable); + span.addThrowable( + throwable instanceof ExecutionException ? throwable.getCause() : throwable, + errorPriority); } return span; } diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy index d720a061f5b..5cd64c11304 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy @@ -2,6 +2,7 @@ package datadog.trace.bootstrap.instrumentation.decorator import datadog.trace.bootstrap.instrumentation.api.AgentSpan +import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.DDSpecification import spock.lang.Shared @@ -62,11 +63,7 @@ class BaseDecoratorTest extends DDSpecification { then: if (error) { - if (errorPriority != null) { - 1 * span.addThrowable(error, errorPriority) - } else { - 1 * span.addThrowable(error) - } + 1 * span.addThrowable(error, errorPriority != null ? errorPriority : ErrorPriorities.DEFAULT) } 0 * _ diff --git a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/GrpcServerDecorator.java b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/GrpcServerDecorator.java index 7d51b672439..40c1ec23736 100644 --- a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/GrpcServerDecorator.java +++ b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/GrpcServerDecorator.java @@ -9,6 +9,7 @@ import datadog.trace.api.cache.DDCaches; import datadog.trace.api.naming.SpanNaming; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; +import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities; import datadog.trace.bootstrap.instrumentation.api.InternalSpanTypes; import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString; import datadog.trace.bootstrap.instrumentation.decorator.ServerDecorator; @@ -102,7 +103,8 @@ public <RespT, ReqT> AgentSpan onCall(final AgentSpan span, ServerCall<ReqT, Res public AgentSpan onStatus(final AgentSpan span, final Status status) { span.setTag("status.code", status.getCode().name()); span.setTag("status.description", status.getDescription()); - return span.setError(SERVER_ERROR_STATUSES.get(status.getCode().value())); + return span.setError( + SERVER_ERROR_STATUSES.get(status.getCode().value()), ErrorPriorities.HTTP_SERVER_DECORATOR); } public AgentSpan onClose(final AgentSpan span, final Status status) { @@ -114,7 +116,7 @@ public AgentSpan onClose(final AgentSpan span, final Status status) { @Override public AgentSpan onError(AgentSpan span, Throwable throwable) { - super.onError(span, throwable); + super.onError(span, throwable, ErrorPriorities.HTTP_SERVER_DECORATOR); if (throwable instanceof StatusRuntimeException) { onStatus(span, ((StatusRuntimeException) throwable).getStatus()); } else if (throwable instanceof StatusException) { diff --git a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/GrpcServerDecorator.java b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/GrpcServerDecorator.java index 7d53598b20e..905ba71ca40 100644 --- a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/GrpcServerDecorator.java +++ b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/GrpcServerDecorator.java @@ -9,6 +9,7 @@ import datadog.trace.api.cache.DDCaches; import datadog.trace.api.naming.SpanNaming; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; +import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities; import datadog.trace.bootstrap.instrumentation.api.InternalSpanTypes; import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString; import datadog.trace.bootstrap.instrumentation.decorator.ServerDecorator; @@ -102,7 +103,8 @@ public <RespT, ReqT> AgentSpan onCall(final AgentSpan span, ServerCall<ReqT, Res public AgentSpan onStatus(final AgentSpan span, final Status status) { span.setTag("status.code", status.getCode().name()); span.setTag("status.description", status.getDescription()); - return span.setError(SERVER_ERROR_STATUSES.get(status.getCode().value())); + return span.setError( + SERVER_ERROR_STATUSES.get(status.getCode().value()), ErrorPriorities.HTTP_SERVER_DECORATOR); } public AgentSpan onClose(final AgentSpan span, final Status status) { @@ -114,7 +116,7 @@ public AgentSpan onClose(final AgentSpan span, final Status status) { @Override public AgentSpan onError(AgentSpan span, Throwable throwable) { - super.onError(span, throwable); + super.onError(span, throwable, ErrorPriorities.HTTP_SERVER_DECORATOR); if (throwable instanceof StatusRuntimeException) { onStatus(span, ((StatusRuntimeException) throwable).getStatus()); } else if (throwable instanceof StatusException) {