mirror of https://github.com/grpc/grpc.git
The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
https://grpc.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
3.1 KiB
49 lines
3.1 KiB
# Status codes and their use in gRPC |
|
|
|
gRPC uses a set of well defined status codes as part of the RPC API. All |
|
RPCs started at a client return a `status` object composed of an integer |
|
`code` and a string `message`. The server-side can choose the status it |
|
returns for a given RPC. |
|
|
|
The gRPC client and server-side implementations may also generate and |
|
return `status` on their own when errors happen. Only a subset of |
|
the pre-defined status codes are generated by the gRPC libraries. This |
|
allows applications to be sure that any other code it sees was actually |
|
returned by the application (although it is also possible for the |
|
server-side to return one of the codes generated by the gRPC libraries). |
|
|
|
The following table lists the codes that may be returned by the gRPC |
|
libraries (on either the client-side or server-side) and summarizes the |
|
situations in which they are generated. |
|
|
|
| Case | Code | Generated at Client or Server | |
|
| ------------- |:-------------| :-----:| |
|
| Client Application cancelled the request | CANCELLED | Both | |
|
| Deadline expires before server returns status | DEADLINE_EXCEEDED | Both | |
|
| Method not found at server | UNIMPLEMENTED | Server| |
|
| Server shutting down | UNAVAILABLE | Server| |
|
| Server side application throws an exception (or does something other than returning a Status code to terminate an RPC) | UNKNOWN | Server| |
|
| No response received before Deadline expires. This may occur either when the client is unable to send the request to the server or when the server fails to respond in time. | DEADLINE_EXCEEDED | Both| |
|
| Some data transmitted (e.g., request metadata written to TCP connection) before connection breaks | UNAVAILABLE | Client | |
|
| Could not decompress, but compression algorithm supported (Client -> Server) | INTERNAL | Server | |
|
| Could not decompress, but compression algorithm supported (Server -> Client) | INTERNAL | Client | |
|
| Compression mechanism used by client not supported at server | UNIMPLEMENTED | Server | |
|
| Server temporarily out of resources (e.g., Flow-control resource limits reached) | RESOURCE_EXHAUSTED | Server| |
|
| Client does not have enough memory to hold the server response | RESOURCE_EXHAUSTED | Client | |
|
| Flow-control protocol violation | INTERNAL | Both | |
|
| Error parsing returned status | UNKNOWN | Client | |
|
| Incorrect Auth metadata ( Credentials failed to get metadata, Incompatible credentials set on channel and call, Invalid host set in `:authority` metadata, etc.) | UNAUTHENTICATED | Both | |
|
| Request cardinality violation (method requires exactly one request but client sent some other number of requests) | UNIMPLEMENTED | Server| |
|
| Response cardinality violation (method requires exactly one response but server sent some other number of responses) | UNIMPLEMENTED | Client| |
|
| Error parsing response proto | INTERNAL | Client| |
|
| Error parsing request proto | INTERNAL | Server| |
|
| Sent or received message was larger than configured limit | RESOURCE_EXHAUSTED | Both | |
|
|
|
The following status codes are never generated by the library: |
|
- INVALID_ARGUMENT |
|
- NOT_FOUND |
|
- ALREADY_EXISTS |
|
- FAILED_PRECONDITION |
|
- ABORTED |
|
- OUT_OF_RANGE |
|
- DATA_LOSS
|
|
|