Documentation forSolarWinds Observability SaaS

RPC status codes

RPC (Remote Procedure Call) status codes are returned when code is executed on a remote system, rather than locally. RPC status handling varies by protocol. For example, gRPC, JSON-RPC, and Connect RPC each report status differently. This list of codes is specific to the gRPC protocol, which is what SolarWinds APM currently supports for RPC-instrumented services and comes from the gRPC status codes documentation.

Code ID Description
OK 0 Successful.
CANCELLED 1 The operation was cancelled, usually by the caller.
UNKNOWN 2 Unknown error. This status may be returned when a Status value received from an address space belongs to an error space that is not known in the current address space. Errors raised by APIs that do not return enough information may also be converted to this error.
INVALID_ARGUMENT 3

The client has specified an invalid argument. INVALID_ARGUMENT indicates arguments that are problematic regardless of the state of the system, such as a malformed file name.

This status differs from FAILED_PRECONDITION.

DEADLINE_EXCEEDED 4 The deadline expired before the operation could complete. For operations that change the state of the system, this error may be returned even if the operation has completed successfully (a successful response from a server was delayed).
NOT_FOUND 5

A requested entity, such as a file or directory, was not found.

Use NOT_FOUND when a request is denied for a class of users, such as gradual feature rollout or undocumented allowlist.

If a request is denied for only some users within a class of users, as in the case of user-based access control, PERMISSION_DENIED must be used.

ALREADY_EXISTS 6 The entity that a client attempted to create already exists.
PERMISSION_DENIED 7 The caller does not have permission to execute the operation. PERMISSION_DENIED must not be used for rejections caused by exhausting a resource (use RESOURCE_EXHAUSTED instead). PERMISSION_DENIED must not be used if the caller can not be identified (instead, use UNAUTHENTICATED). This error code does not indicate the validity or existence of a request nor that any other pre-conditions are satisfied.
RESOURCE_EXHAUSTED 8 A resource has been exhausted or is out of space.
FAILED_PRECONDITION 9

The operation was rejected because the preconditions required for the operation’s execution have not been met. For example, a directory to be deleted is non-empty, or an rmdir operation is applied to a non-directory.

The following guidelines can help you decide between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE:

  • Use UNAVAILABLE if the client can retry only the failing call.

  • Use ABORTED if the client should retry at a higher level. For instance, when a client-specified test-and-set fails, this status indicates that the client should restart a read-modify-write sequence.

  • Use FAILED_PRECONDITION if the client should not retry until the system state has been explicitly fixed. For example, if an rmdir fails because the directory is non-empty, FAILED_PRECONDITION should be returned since the client should not retry until the files are deleted from that directory.

ABORTED 10 The operation was aborted, usually due to a concurrency issue such as a sequencer check failure or transaction abort. See FAILED_PRECONDITION for more guidance.
OUT_OF_RANGE 11

The operation was attempted past the valid range. For example, seeking or reading past end-of-file. Unlike INVALID_ARGUMENT, this error indicates a problem that may be fixed if the system state changes.

For example, a 32-bit file system will generate INVALID_ARGUMENT if asked to read at an offset that is not in the range [0,2^32-1], but it will generate OUT_OF_RANGE if asked to read from an offset past the current file size.

There is overlap between FAILED_PRECONDITION and OUT_OF_RANGE.

Use the more specific error status code, OUT_OF_RANGE, when it applies so that callers who are iterating through a space can easily look for an OUT_OF_RANGE error to detect when done.

UNIMPLEMENTED 12 The operation is not implemented or is not supported/ enabled in this service.
INTERNAL 13 Internal error. This means that one or more invariants expected by the underlying system have been broken. The INTERNAL error code is reserved for serious errors.
UNAVAILABLE 14

The service is currently unavailable. Unavailability is most likely a transient condition, which can be corrected by retrying with a backoff.

It is not always safe to retry non-idempotent operations.

DATA_LOSS 15 Unrecoverable data loss or corruption has occurred.
UNAUTHENTICATED 16 The request does not include valid authentication credentials for the operation.