gRPC status 13: INTERNAL

INTERNAL is gRPC status code 13. An invariant the system relies on broke. Something is seriously wrong on the server or in the transport.

Updated

Usual causes

  • The response could not be parsed: the client's and server's message definitions do not match, or one side sent bytes that are not the message.
  • A proxy returned something that is not gRPC, such as an HTML error page or an HTTP/1.1 response.
  • Decompression failed, or a frame was malformed.
  • The server raised INTERNAL itself for a bug it detected.

What to check

  1. That both sides use the same .proto: a changed field type between versions breaks parsing.
  2. Anything between you and the server, such as a load balancer answering in HTTP/1.1 or a missing h2 protocol setting.
  3. The server's logs for the call.

What it looks like

A typical error, as a Go client prints it: rpc error: code = Internal desc = grpc: failed to unmarshal the received message: proto: cannot parse invalid wire-format data

Retry, and the HTTP equivalent

INTERNAL
Code13
NameINTERNAL
In istek's status barinternal
RetryRarely helps; treat it as a bug to find.
HTTP status500

istek names the status of every call it makes, internal included, and explains transport failures in plain words. See istek.

istek, $29 once

macOS 14.0+ · Apple Silicon · no account, no telemetry

Buy istek · $29