Статусы завершения gRPC
YDB предоставляет gRPC API, с помощью которого вы можете управлять ресурсами и данными БД. В следующей таблице описаны статусы завершения запросов gRPC:
Код |
Статус |
Возможность повтора |
Стратегия задержек |
Пересоздать сессию |
– |
– |
– |
||
условно повторяемый |
короткая |
да |
||
неповторяемый |
– |
да |
||
неповторяемый |
– |
да |
||
условно повторяемый |
короткая |
да |
||
неповторяемый |
– |
да |
||
неповторяемый |
– |
да |
||
неповторяемый |
– |
да |
||
повторяемый |
большая |
нет |
||
неповторяемый |
– |
да |
||
повторяемый |
моментально |
да |
||
неповторяемый |
– |
нет |
||
неповторяемый |
– |
да |
||
условно повторяемый |
короткая |
да |
||
условно повторяемый |
короткая |
да |
||
неповторяемый |
– |
да |
||
неповторяемый |
– |
да |
0: OK
Не является ошибкой. Возвращается при успешном выполнении.
Операция была отменена, как правило, вызывающей стороной.
Неизвестная ошибка. Например, эта ошибка может возникнуть, когда значение Status
, полученное из другого адресного пространства, относится к неизвестному пространству ошибок. Также эта ошибка может быть преобразована из ошибок, вызванных API, которые не предоставляют достаточно информации об ошибке.
Клиент указал недопустимый аргумент. В отличие от FAILED_PRECONDITION
, INVALID_ARGUMENT
указывает на аргументы, которые являются проблемными независимо от состояния системы (например, неправильное имя файла).
Запрос не был обработан за заданный клиентский таймаут или произошла иная сетевая проблема.
Проверьте корректность заданного таймаута, наличие сетевого доступа, правильность endpoint'а и других сетевых настроек. Также рекомендуется снизить интенсивность потока запросов и оптимизировать их.
Запрашиваемый схемный объект (например, таблица или папка) не найден.
Схемный объект, который пытается создать клиент (например, таблица или папка), уже существует.
У вызывающего нет разрешения на выполнение указанной операции.
Недостаточно свободных ресурсов для обслуживания запроса.
Снизьте интенсивность потока запросов, проверьте клиентскую балансировку.
Запрос не может быть выполнен в текущем состоянии (например, вставка в таблицу с существующим ключом).
Исправьте состояние или запрос и повторите попытку.
Операция не выполнена (например, из-за инвалидации локов, TRANSACTION_LOCKS_INVALIDATE
в подробных сообщениях об ошибке).
Повторите всю транзакцию.
Была предпринята попытка выполнить операцию за пределами допустимого диапазона. В отличие от INVALID_ARGUMENT
, эта ошибка указывает на проблему, которая может быть исправлена при изменении состояния системы.
Операция не реализована или не поддерживается (не активирована) в YDB.
Внутренние ошибки. Это означает, что некоторые инварианты, ожидаемые базовой системой, были нарушены. Данный код ошибки предназначен для серьёзных ошибок.
Сервис в данный момент недоступен. Скорее всего, это временное состояние, которое можно обойти, повторив запрос после некоторой задержки. Обратите внимание, что повторение неидемпотентных операций не всегда безопасно.
Неустранимая потеря или повреждение данных.
Запрос не содержит действительных учётных данных для аутентификации.
Повторите запрос с актуальными данными для аутентификации.
Немедленный повтор – одна из стратегий задержек, применяемых в SDK при повторе запросов, завершившихся ошибкой.
Повторные попытки при такой стратегии совершаются немедленно.
См. подробнее в статье Обработка временных сбоев (retryable errors).
Короткая экспоненциальная задержка – одна из стратегий задержек, применяемых в SDK при повторе запросов, завершившихся ошибкой.
Первоначальный интервал при такой задержке составляет несколько миллисекунд. Для каждой последующей попытки интервал увеличивается экспоненциально.
См. подробнее в статье Обработка временных сбоев (retryable errors).
Большая экспоненциальная задержка – одна из стратегий задержек, применяемых в SDK при повторе запросов, завершившихся ошибкой.
Первоначальный интервал при такой задержке составляет несколько секунд. Для каждой последующей попытки интервал увеличивается по экспоненциальному закону.
См. подробнее в статье Обработка временных сбоев (retryable errors).
Временные сбои (retryable). Включают кратковременную потерю сетевого соединения, временную недоступность или перегруженность одной из подсистем YDB, а также неспособность YDB ответить на запрос в течение установленного времени ожидания. В случае возникновения таких ошибок повторный запрос через некоторый промежуток времени с высокой вероятностью будет выполнен успешно.
Ошибки, которые не могут быть исправлены с помощью повтора (non-retryable). Включают некорректно сформированные запросы, внутренние ошибки YDB, а также запросы, не соответствующие схеме данных. В такой ситуации нет необходимости повторять запрос, требуется дополнительное вмешательство разработчика.
Ошибки, которые, предположительно, могут быть исправлены с помощью повтора после реакции клиентского приложения (conditionally retryable). Возникают при идемпотентных операциях, таких как отсутствие ответа в течение отведённого времени или запрос аутентификации.