Is it possible to support grpc retry configs and grpc channel args? These are quite frequently used in production.
My requests on a single tonic channel seem to fail at high concurrency(10s of thousands) and without these, it is painful to handle these correctly and optimally.
We support some of these but this mostly relies on hyper. @seanmonstar might be interested in hearing what other options you'd like.
I believe retries could be added into tonic using tower::retry.
We'd need to be more specific about "channel args" to know what is desired.
Among the ones not currently implemented in Tonic, our production code uses
GRPC_ARG_HTTP2_BDP_PROBE
GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS
GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS
I think grpcio provides support for a fairly common list of grpc args
https://docs.rs/grpcio/0.5.3/grpcio/struct.ChannelBuilder.html
Retry configs are the big one though.
So hyper, the underlying HTTP library used in Tonic, has support for http2_adaptive_window, which uses BDP pings. Tonic could add a builder option to enable it. Tonic already has exposed some of the keep alive properties as well.
Most helpful comment
So hyper, the underlying HTTP library used in Tonic, has support for
http2_adaptive_window, which uses BDP pings. Tonic could add a builder option to enable it. Tonic already has exposed some of the keep alive properties as well.