Code

Канонические коды ошибок для API gRPC.

Иногда может применяться несколько кодов ошибок. Службы должны возвращать наиболее конкретный применимый код ошибки. Например, предпочтите OUT_OF_RANGE вместо FAILED_PRECONDITION , если применимы оба кода. Точно так же предпочтите NOT_FOUND или ALREADY_EXISTS вместо FAILED_PRECONDITION .

перечисления
OK

Не ошибка; вернулся в случае успеха.

Сопоставление HTTP: 200 ОК

CANCELLED

Операция была отменена, как правило, вызывающим абонентом.

Сопоставление HTTP: 499 Закрытый запрос клиента

UNKNOWN

Неизвестная ошибка. Например, эта ошибка может возвращаться, когда значение Status , полученное из другого адресного пространства, принадлежит пространству ошибок, неизвестному в этом адресном пространстве. Также ошибки, вызванные API, которые не возвращают достаточно информации об ошибке, могут быть преобразованы в эту ошибку.

Сопоставление HTTP: 500 Внутренняя ошибка сервера

INVALID_ARGUMENT

Клиент указал недопустимый аргумент. Обратите внимание, что это отличается от FAILED_PRECONDITION . INVALID_ARGUMENT указывает аргументы, которые являются проблематичными независимо от состояния системы (например, неправильно сформированное имя файла).

Сопоставление HTTP: 400 неверный запрос

DEADLINE_EXCEEDED

Срок истек до завершения операции. Для операций, которые изменяют состояние системы, эта ошибка может возвращаться, даже если операция завершилась успешно. Например, успешный ответ от сервера мог быть отложен достаточно долго для истечения крайнего срока.

Сопоставление HTTP: 504 Тайм-аут шлюза

NOT_FOUND

Некоторый запрошенный объект (например, файл или каталог) не найден.

Примечание для разработчиков серверов: если запрос отклонен для целого класса пользователей, например, для постепенного развертывания функций или недокументированного списка разрешений, может использоваться NOT_FOUND . Если запрос отклонен для некоторых пользователей в классе пользователей, например, для управления доступом на основе пользователей, необходимо использовать PERMISSION_DENIED .

Сопоставление HTTP: 404 не найдено

ALREADY_EXISTS

Сущность, которую пытался создать клиент (например, файл или каталог), уже существует.

Сопоставление HTTP: конфликт 409

PERMISSION_DENIED

Вызывающий объект не имеет разрешения на выполнение указанной операции. PERMISSION_DENIED нельзя использовать для отклонений, вызванных исчерпанием какого-либо ресурса (вместо этого используйте RESOURCE_EXHAUSTED для таких ошибок). PERMISSION_DENIED нельзя использовать, если вызывающий абонент не может быть идентифицирован (вместо этого используйте UNAUTHENTICATED для таких ошибок). Этот код ошибки не означает, что запрос действителен или запрошенный объект существует или удовлетворяет другим предварительным условиям.

Сопоставление HTTP: 403 Запрещено

UNAUTHENTICATED

Запрос не содержит действительных учетных данных для операции.

Сопоставление HTTP: 401 Неавторизованный

RESOURCE_EXHAUSTED

Исчерпан какой-то ресурс, возможно, квота на пользователя, или, возможно, во всей файловой системе закончилось место.

Отображение HTTP: 429 слишком много запросов

FAILED_PRECONDITION

Операция отклонена, так как система не находится в состоянии, необходимом для выполнения операции. Например, удаляемый каталог не пуст, операция rmdir применяется к некаталогу и т. д.

Разработчики службы могут использовать следующие рекомендации для выбора между FAILED_PRECONDITION , ABORTED и UNAVAILABLE : (a) Используйте UNAVAILABLE если клиент может повторить только неудачный вызов. (b) Используйте ABORTED если клиент должен повторить попытку на более высоком уровне. Например, при сбое указанного клиентом теста и установки это означает, что клиент должен перезапустить последовательность чтения-изменения-записи. (c) Используйте FAILED_PRECONDITION , если клиент не должен повторять попытку, пока состояние системы не будет явно исправлено. Например, если "rmdir" завершается ошибкой, потому что каталог не пуст, должно быть возвращено FAILED_PRECONDITION , поскольку клиент не должен повторять попытки, пока файлы не будут удалены из каталога.

Сопоставление HTTP: 400 неверный запрос

ABORTED

Операция была прервана, как правило, из-за проблемы параллелизма, такой как сбой проверки секвенсора или прерывание транзакции.

См. рекомендации выше для выбора между FAILED_PRECONDITION , ABORTED и UNAVAILABLE .

Сопоставление HTTP: конфликт 409

OUT_OF_RANGE

Операция была предпринята за допустимым диапазоном. Например, поиск или чтение после конца файла.

В отличие от INVALID_ARGUMENT , эта ошибка указывает на проблему, которая может быть устранена при изменении состояния системы. Например, 32-разрядная файловая система сгенерирует INVALID_ARGUMENT , если ее попросят прочитать со смещения, не находящегося в диапазоне [0,2^32-1], но сгенерирует OUT_OF_RANGE , если попросят прочитать со смещения, следующего за текущим. размер файла.

Между FAILED_PRECONDITION и OUT_OF_RANGE есть значительное совпадение. Мы рекомендуем использовать OUT_OF_RANGE (более конкретная ошибка), когда это применимо, чтобы вызывающие абоненты, выполняющие итерацию по пробелу, могли легко найти ошибку OUT_OF_RANGE , чтобы определить, когда они будут выполнены.

Сопоставление HTTP: 400 неверный запрос

UNIMPLEMENTED

Операция не реализована или не поддерживается/не включена в этой службе.

Сопоставление HTTP: 501 не реализовано

INTERNAL

Внутренние ошибки. Это означает, что некоторые инварианты, ожидаемые базовой системой, были нарушены. Этот код ошибки зарезервирован для серьезных ошибок.

Сопоставление HTTP: 500 Внутренняя ошибка сервера

UNAVAILABLE

В настоящее время услуга недоступна. Скорее всего, это временное состояние, которое можно исправить повторной попыткой с отсрочкой. Обратите внимание, что не всегда безопасно повторять неидемпотентные операции.

См. рекомендации выше для выбора между FAILED_PRECONDITION , ABORTED и UNAVAILABLE .

Сопоставление HTTP: 503 Служба недоступна

DATA_LOSS

Невосстановимая потеря или повреждение данных.

Сопоставление HTTP: 500 Внутренняя ошибка сервера