Skip to content

Goaway from apache httpd seems to not be handled well #13031

Description

@ejona86

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions