diff --git a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/GrpcClientDecorator.java b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/GrpcClientDecorator.java index 7a6f76d200a..060f88eaa43 100644 --- a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/GrpcClientDecorator.java +++ b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/GrpcClientDecorator.java @@ -115,10 +115,7 @@ public AgentSpan onClose(final AgentSpan span, final Status status) { // TODO why is there a mismatch between client / server for calling the onError method? onError(span, status.getCause()); - if (CLIENT_ERROR_STATUSES.get(status.getCode().value())) { - span.setError(true); - } - + span.setError(CLIENT_ERROR_STATUSES.get(status.getCode().value())); return span; } } 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 de5058948e2..7d51b672439 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 @@ -14,6 +14,8 @@ import datadog.trace.bootstrap.instrumentation.decorator.ServerDecorator; import io.grpc.ServerCall; import io.grpc.Status; +import io.grpc.StatusException; +import io.grpc.StatusRuntimeException; import java.util.BitSet; import java.util.LinkedHashMap; import java.util.function.Function; @@ -97,15 +99,27 @@ public AgentSpan onCall(final AgentSpan span, ServerCall AgentSpan onCall(final AgentSpan span, ServerCall