diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java index a40b6886bb23..f540b328cefd 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingServerInterceptor.java @@ -67,6 +67,7 @@ final class TracingServerCall extends ForwardingServerCall.SimpleForwardingServerCall { private final Context context; private final GrpcRequest request; + private Status status; // Used by MESSAGE_ID_UPDATER @SuppressWarnings("UnusedVariable") @@ -101,13 +102,13 @@ public void sendMessage(RESPONSE message) { @Override public void close(Status status, Metadata trailers) { + this.status = status; try { delegate().close(status, trailers); } catch (Throwable e) { instrumenter.end(context, request, status, e); throw e; } - instrumenter.end(context, request, status, status.getCause()); } final class TracingServerCallListener @@ -165,6 +166,10 @@ public void onComplete() { instrumenter.end(context, request, Status.UNKNOWN, e); throw e; } + if (status == null) { + status = Status.UNKNOWN; + } + instrumenter.end(context, request, status, status.getCause()); } @Override