hyperium / tonic

A native gRPC client & server implementation with async/await support.
https://docs.rs/tonic
MIT License
9.32k stars 954 forks source link

Add debug spans for codec tracing #1759

Open neoeinstein opened 1 week ago

neoeinstein commented 1 week ago

Feature Request

Crates

tonic

Motivation

We've had some clients that have, for some reason, been really slow at sending up body bytes. This would be easier to confirm if we could see that the decoding process was taking up a certain amount of time, and could be done by providing some tracing spans at the debug level that could be enabled to expose the time spend in request decoding, which often spends some time waiting for data to arrive over the wire.

Proposal

Add some tracing debug spans for the codecs so that consumers can use tracing to identify potential stalls in decoding of a request. This could add a bit more weight to the state of the decoder, but the overall cost is generally a couple of bytes per connection, and if debug spans aren't enabled, these will always be disabled values.

Alternatives

The only other option has been inference, but the time spent here is difficult to separate out from other causes.