go network_error ai_generated true

rpc error: code = Internal desc = stream terminated by RST_STREAM with error code: PROTOCOL_ERROR

ID: go/grpc-internal-http2-frame-error

Also available as: JSON · Markdown · 中文
80%Fix Rate
85%Confidence
0Evidence
2024-08-12First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
1.50+ active

Root Cause

HTTP/2 framing violation between client and server. Often caused by an intermediate proxy (nginx/Envoy) that doesn't support gRPC, or a mismatched h2c/TLS configuration.

generic

中文

客户端与服务端之间的 HTTP/2 帧协议违规。常见于中间代理(nginx/Envoy)不支持 gRPC,或 h2c/TLS 配置不一致。

Workarounds

  1. 85% success
    Configure the proxy for gRPC (HTTP/2 end-to-end). For nginx:
    location /pb.UserService/ {
      grpc_pass grpc://backend:50051;
      grpc_read_timeout 300s;
    }
  2. 90% success
    Bypass the proxy entirely to isolate: dial the gRPC server directly from the client host and confirm the call succeeds.

Dead Ends

Common approaches that don't work:

  1. 90% fail

    PROTOCOL_ERROR is a framing issue, not a stream-count limit.

  2. 80% fail

    Keepalives don't fix malformed HTTP/2 frames; aggressive pings may trigger GOAWAY from servers.