Received RST_STREAM with code 2 (Internal server error) on previously working HTTP/2 endpoint

Hi,

I’m encountering the following error when calling one of my backend endpoints over HTTP/2:

Received RST_STREAM with code 2
  • This endpoint has been working reliably for over a month
  • There have been no code or infra changes on this side
  • The server logs show that the request is received, processed, and responded to with HTTP 200
  • There are no internal errors or timeouts visible on the server
  • I’ve already ruled out client-side or server-side timeout issues
{
  "component": "grpc",
  "msg": "Successfully sent OTP",
  "statusCode": 200
}

Yet on the client side, the stream is abruptly terminated with RST_STREAM code 2, which I understand usually means an internal error — but no clear origin is visible.

  • What could cause a RST_STREAM code 2 after a 200 response was already sent?
  • Are there known cases where reverse proxies or intermediate gateways (e.g. TLS termination, HTTP/2 frame handling) could trigger this?

Happy to provide more details if needed — thanks in advance for your help.

Hey,

What is your stack?
Could this be a library update as well?

I’ve seen recent comments here on nodejs grpc SDK update, that could be related.

I’ve tried some basic queries with grpcurl, and I’m not able to reproduce this.
Our e2e test didn’t catch any regressions either.

If you can assemble a simple reproducer, we can take a deeper look.

Best,

Bastien

My bad, it’s solved. A combination of hidden runtime upgrade on Docker and package compatibility :upside_down_face::sob:

Thanks @bastien anyway,