You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
TL;DR; Custom AttributeExtractors added to instrumented gRPC client calls lack access to gRPC metadata sent in call.
Currently, the gRPC instrumentation constructs a GrpcRequest object at the beginning of interceptCall() at which point the gRPC Metadata is unset - set to null in the code.
gRPC Metadata for outgoing client calls is available at the point of TracingClientCall.start(Listener<RESPONSE> responseListener, Metadata header). However, the gRPC request object which is passed to instrumenter.end() never has its corresponding Metadata private field updated.
Describe the solution you'd like
instrumenter.end() calls each AttributeExtractor's onEnd() method. The request object passed to these methods should include an updated version of the metadata sourced from the metadata parameter passed to TracingClientCall.start().
Describe alternatives you've considered
Duplicating most of the code from the grpc Instrumentation simply to ensure that the GrpcRequest object is updated with the appropriate metadata to make it available to our own AttributeExtractors.
Is your feature request related to a problem? Please describe.
TL;DR; Custom AttributeExtractors added to instrumented gRPC client calls lack access to gRPC metadata sent in call.
Currently, the gRPC instrumentation constructs a
GrpcRequest
object at the beginning ofinterceptCall()
at which point the gRPC Metadata is unset - set tonull
in the code.gRPC Metadata for outgoing client calls is available at the point of
TracingClientCall.start(Listener<RESPONSE> responseListener, Metadata header)
. However, the gRPC request object which is passed toinstrumenter.end()
never has its corresponding Metadata private field updated.Describe the solution you'd like
instrumenter.end()
calls each AttributeExtractor'sonEnd()
method. Therequest
object passed to these methods should include an updated version of the metadata sourced from the metadata parameter passed toTracingClientCall.start()
.Describe alternatives you've considered
Duplicating most of the code from the grpc Instrumentation simply to ensure that the
GrpcRequest
object is updated with the appropriate metadata to make it available to our own AttributeExtractors.Additional context
This issue was raised at the May 10th Java SIG.
The text was updated successfully, but these errors were encountered: