-
Notifications
You must be signed in to change notification settings - Fork 4.5k
client: does not respect server advertised max number of streams #4057
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
(edit) Nevermind, I understand the grpc-go code now. I actually believe that it's a bug in the go http2/server.go code. I have a diff that I've applied that appears to have fixed the issue. The quick summary is that the http2
This sequence events is highly possible in the setup that I'm testing since A) the two processes are on the same machine, and B) the server is under heavy load. I will submit a bug to https://github.com/golang/go and link it here. |
Thank you for the report. I'll close this issue since it does look like a bug in the go http2 server. |
Uh oh!
There was an error while loading. Please reload this page.
What version of gRPC are you using?
google.golang.org/grpc v1.33.2
What version of Go are you using (
go version
)?1.15.0
What operating system (Linux, Windows, …) and version?
linux
What did you do? What did you expect to see? What did you see instead?
I have a server running the go stdlib HTTP2 that is serving a go gRPC client. The server is sending the client a bunch of PROTOCOL_ERRORs while under load. I annotated the server code with a bunch of print statements:
And then I ran the gRPC client against it. The client creates one gRPC client for the entire process (constructed in the main function). I see the following log lines on the server:
This indicates that the grpc-go code is not respecting the maximum number of streams, and starting new streams before the server has been made aware of streams closing.
I'm still trying to track down whether this is the grpc-go client not following the server's orders, of the http2 server (in the go stdlib) incorrectly handling closed/opened streams.
The text was updated successfully, but these errors were encountered: