tonic: v0.1.1
debian
I came across this when working with nginx as a reverse proxy in front of a tonic server. Though, I don't think this is specific to nginx. We have a reverse proxy to do tls termination and routing within a kubernetes cluster to a tonic server. However it intermittently fails with 502 errors. The errors in nginx points to lack of support for SETTINGS_HEADER_TABLE_SIZE from the http2 specification.
A snippet of the comment from the nginx bug:
nginx explicitly announces that it does not support dynamic header compression by sending the SETTINGS_HEADER_TABLE_SIZE value set to 0, see 鈥媓ere.
https://trac.nginx.org/nginx/ticket/1538#ticket
Here's the http2 specification for SETTINGS_HEADER_TABLE_SIZE: https://tools.ietf.org/html/rfc7540#section-6.5.1
So I think any client that doesn't support dynamic header compression will run into this same issue.
The error we're seeing in nginx is " upstream sent invalid http2 table index: 63 while reading response header from upstream" which pointed me to this issue: https://github.com/kubernetes/ingress-nginx/issues/2405
Which references the fix that the go grpc server implemented: https://github.com/grpc/grpc-go/pull/2045/files
cc @seanmonstar ^ seems hyper/h2 related.
Filed upstream https://github.com/hyperium/h2/issues/458
We've updated our h2 crate to 0.2.4 and verified that issue is no longer occurring with nginx! :confetti_ball:
Thanks so much! I really appreciate it.
@rokadias great thank you for the quick feedback!
Most helpful comment
Filed upstream https://github.com/hyperium/h2/issues/458