Discussed in #13026
Originally posted by erilor September 3, 2026
When calling our backend through an apache-httpd (2.4.62) we sometimes get these:
h2_session.c(810): [client REDACTED] AH03069: h2_session(48-1,DONE,0): sent GOAWAY, err=70007, msg=
In the client we then get this:
ERROR [DefaultHttp2Connection.java:237] Caught Throwable from listener onGoAwayReceived. java.lang.NullPointerException: Http2Error cannot be null for GOAWAY
at io.grpc.internal.GoAwayDisconnectError.<init>(GoAwayDisconnectError.java:38)
at io.grpc.netty.shaded.io.grpc.netty.NettyClientHandler.goingAway(NettyClientHandler.java:954)
at io.grpc.netty.shaded.io.grpc.netty.NettyClientHandler.access$200(NettyClientHandler.java:102)
at io.grpc.netty.shaded.io.grpc.netty.NettyClientHandler$3.onGoAwayReceived(NettyClientHandler.java:330)
at io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2Connection.goAwayReceived(DefaultHttp2Connection.java:235)
at io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.onGoAwayRead0(DefaultHttp2ConnectionDecoder.java:230)
at io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onGoAwayRead(DefaultHttp2ConnectionDecoder.java:597)
at io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2InboundFrameLogger$1.onGoAwayRead(Http2InboundFrameLogger.java:117)
And the call hangs until timeout.
It seems like unreasonable error codes from the server causes the client to fail to handle GOAWAY gracefully.
Is this expected or should the client be able to handle GOAWAY with non standard error codes? Or am I misunderstanding something?
We are using grpc-java 1.83.1
Discussed in #13026
Originally posted by erilor September 3, 2026
When calling our backend through an apache-httpd (2.4.62) we sometimes get these:
h2_session.c(810): [client REDACTED] AH03069: h2_session(48-1,DONE,0): sent GOAWAY, err=70007, msg=In the client we then get this:
And the call hangs until timeout.
It seems like unreasonable error codes from the server causes the client to fail to handle GOAWAY gracefully.
Is this expected or should the client be able to handle GOAWAY with non standard error codes? Or am I misunderstanding something?
We are using grpc-java 1.83.1