Hi there,
With the new error code introduced since 1.18. Are they mapped to JSON API response as well? e.g. does the user get (DEADLINE_EXCEEDED - REQUEST_TIME_OUT), ( ABORTED - RESOURCE_EXHAUSTED) or ( UNAVAILABLE - INDEX_DB_SQL_TRANSIENT_ERROR) on JSON interface?
Hi Frankie,
Yes, the com.google.rpc.Code error code is mapped to the JSON API response.
DEADLINE_EXCEEDED maps to GATEWAY_OUT (504).
ABORTED maps to CONFLICT (409)
UNAVAILABLE maps to SERVICE_UNAVAILABLE (503)
See the complete mapping below, from G (gRPC) to A (HTTP):
case G.OK => A.OK
case G.INVALID_ARGUMENT | G.FAILED_PRECONDITION | G.OUT_OF_RANGE => A.BadRequest
case G.UNAUTHENTICATED => A.Unauthorized
case G.PERMISSION_DENIED => A.Forbidden
case G.NOT_FOUND => A.NotFound
case G.ABORTED | G.ALREADY_EXISTS => A.Conflict
case G.RESOURCE_EXHAUSTED => A.TooManyRequests
case G.CANCELLED => ClientClosedRequest
case G.DATA_LOSS | G.UNKNOWN | G.UNRECOGNIZED | G.INTERNAL => A.InternalServerError
case G.UNIMPLEMENTED => A.NotImplemented
case G.UNAVAILABLE => A.ServiceUnavailable
case G.DEADLINE_EXCEEDED => A.GatewayTimeout
case G.UNAUTHENTICATED | G.CANCELLED => A.InternalServerError
Kind regards
Ray
Caveat to the above mapping, the last case
overrides some of the prior cases. (UNAUTHENTICATED
means there was a problem in json-api
, since it checks for the presence of JWT itself. Likewise, json-api never cancels requests itself so such a grpc error means a problem within json-api.)