-
Notifications
You must be signed in to change notification settings - Fork 84
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
concurrent requests cause StreamIDTooSmall error #213
Comments
The issue here is actually long-standing: There are a bunch of things we can do to fix this, but all of them are quite substantial API changes. The ultimate behaviour has to be to create a new HTTP stream channel that does not expect its users to know the stream ID (that is, where the data being passed in the pipeline is This is not the kind of thing we'd be able to fix quickly, though, so we should also investigate a quick workaround in grpc. |
Thanks for the prompt response! will close this and continue discussions in grpc-swift repo. |
Ok, tracking the underlying issue in #214. |
grpc-swift version 1.0.0-alpha.17, swift-nio-http2 from: "1.12.1"
grpc-swift client(iOS App) --- nginx --- grpc server
client sends 3 different rpcs almost at the same time, one failed due to StreamIDTooSmall, the other two failed due to unavailable. error log:
But from nginx log, 2 out of 3 responses are returned successfully. one had error due to
client prematurely closed connection while processing HTTP/2 connection
which we assume is due to client side close and reconnect.we suspect in createStreamChannel,
self.nextOutboundStreamID = HTTP2StreamID(Int32(streamID) + 2)
isn't thread safe, but we couldn't find any doc or guidance what to do.The text was updated successfully, but these errors were encountered: