From fcda760ad504aacf32eefc95c95eff5c53cf339c Mon Sep 17 00:00:00 2001 From: Sam Xie Date: Fri, 22 Jul 2022 16:38:53 +0800 Subject: [PATCH] Add shouldStart() call to gRPC instrumentation (#6356) --- .../grpc/v1_6/TracingClientInterceptor.java | 4 ++++ .../grpc/v1_6/TracingServerInterceptor.java | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java index 9244eb8798..ead17c9a96 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/TracingClientInterceptor.java @@ -45,6 +45,10 @@ final class TracingClientInterceptor implements ClientInterceptor { MethodDescriptor method, CallOptions callOptions, Channel next) { GrpcRequest request = new GrpcRequest(method, null, null); Context parentContext = Context.current(); + if (!instrumenter.shouldStart(parentContext, request)) { + return next.newCall(method, callOptions); + } + Context context = instrumenter.start(parentContext, request); ClientCall result; try (Scope ignored = context.makeCurrent()) { 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 eb9801dca7..7aca5ff277 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 @@ -46,7 +46,12 @@ final class TracingServerInterceptor implements ServerInterceptor { call.getMethodDescriptor(), headers, call.getAttributes().get(Grpc.TRANSPORT_ATTR_REMOTE_ADDR)); - Context context = instrumenter.start(Context.current(), request); + Context parentContext = Context.current(); + if (!instrumenter.shouldStart(parentContext, request)) { + return next.startCall(call, headers); + } + + Context context = instrumenter.start(parentContext, request); try (Scope ignored = context.makeCurrent()) { return new TracingServerCall<>(call, context, request).start(headers, next);