-
Notifications
You must be signed in to change notification settings - Fork 4k
Closed
Milestone
Description
What version of gRPC-Java are you using?
1.37.0
What is your environment?
5.4.0-74-generic #83-Ubuntu SMP Sat May 8 02:35:39 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
What did you expect to see?
Client does not flood server with PING frames when autoTuneFlowControl is enabled (default)
What did you see instead?
Connection closed on server with
io.netty.handler.codec.http2.Http2Exception: Maximum number 10000 of outstanding control frames reached
at io.netty.handler.codec.http2.Http2Exception.connectionError(Http2Exception.java:108)
at io.netty.handler.codec.http2.Http2ControlFrameLimitEncoder.handleOutstandingControlFrames(Http2ControlFrameLimitEncoder.java:96)
at io.netty.handler.codec.http2.Http2ControlFrameLimitEncoder.writePing(Http2ControlFrameLimitEncoder.java:69)
at io.netty.handler.codec.http2.Http2FrameCodec.write(Http2FrameCodec.java:333)
Steps to reproduce the bug
Client makes request-response calls continuously such that there is constant number of outstanding requests.
Server is 3rd party GRPC implementation based on Netty.
It only acks received PING frames, and does not send own PING frames(ack=false).
Acked frames content is 1234.
Client and server are on the same host.
Eventually (after several seconds) connection is closed by server with
io.netty.handler.codec.http2.Http2Exception: Maximum number 10000 of outstanding control frames reached
at io.netty.handler.codec.http2.Http2Exception.connectionError(Http2Exception.java:108)
at io.netty.handler.codec.http2.Http2ControlFrameLimitEncoder.handleOutstandingControlFrames(Http2ControlFrameLimitEncoder.java:96)
at io.netty.handler.codec.http2.Http2ControlFrameLimitEncoder.writePing(Http2ControlFrameLimitEncoder.java:69)
at io.netty.handler.codec.http2.Http2FrameCodec.write(Http2FrameCodec.java:333)
There is workaround NettyChannelBuilder.flowControlWindow(int) which happens to disable autoTuneFlowControl.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels