diff --git a/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/condretryable.md b/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/condretryable.md new file mode 100644 index 000000000000..5ae3ec69a47c --- /dev/null +++ b/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/condretryable.md @@ -0,0 +1 @@ +**Ошибки, которые, предположительно, могут быть исправлены с помощью повтора после реакции клиентского приложения** (conditionally retryable) — включают в себя отсутствие ответа в течение отведенного времени, запрос аутентификации. diff --git a/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/fast_backoff.md b/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/fast_backoff.md new file mode 100644 index 000000000000..13b0a2bcecbc --- /dev/null +++ b/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/fast_backoff.md @@ -0,0 +1,3 @@ +**Короткая экспоненциальная задержка** – одна из стратегий задержек, применяемых в SDK.
+Первоначальный интервал при такой задержке составляет несколько **миллисекунд**. Для каждой последующей попытки интервал увеличивается по экспоненциальному закону.
+См. подробнее в статье [{#T}](../../error_handling.md#handling-retryable-errors). diff --git a/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/instant.md b/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/instant.md new file mode 100644 index 000000000000..e3ebe6806f44 --- /dev/null +++ b/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/instant.md @@ -0,0 +1,3 @@ +**Немедленный повтор** – одна из стратегий задержек, применяемых в SDK.
+Повторные попытки при такой стратегии совершаются немедленно.
+См. подробнее в статье [{#T}](../../error_handling.md#handling-retryable-errors). diff --git a/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/nonretryable.md b/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/nonretryable.md new file mode 100644 index 000000000000..ddfd6686d5d5 --- /dev/null +++ b/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/nonretryable.md @@ -0,0 +1 @@ +**Ошибки, которые не могут быть исправлены с помощью повтора** (non retryable) — включают в себя некорректно сформированные запросы, внутренние ошибки YDB, запросы, несоответствующие схеме данных. В такой ситуации нет необходимости повторять запрос, требуется дополнительное вмешательство со стороны разработчика. diff --git a/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/retryable.md b/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/retryable.md new file mode 100644 index 000000000000..a21b4995ba9e --- /dev/null +++ b/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/retryable.md @@ -0,0 +1 @@ +**Временные сбои** (retryable) — включают в себя кратковременную потерю сетевого соединения, временную недоступность или перегруженность одной из подсистем YDB, неспособность YDB ответить на запрос в течение установленного времени ожидания. В случае возникновения таких ошибок, повтор запроса, завершившегося с ошибкой, через некоторый промежуток времени с большой вероятностью будет выполнен успешно. diff --git a/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/slow_backoff.md b/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/slow_backoff.md new file mode 100644 index 000000000000..8f7bafe79b85 --- /dev/null +++ b/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/slow_backoff.md @@ -0,0 +1,3 @@ +**Большая экспоненциальная задержка** – одна из стратегий задержек, применяемых в SDK.
+Первоначальный интервал при такой задержке составляет несколько **секунд**. Для каждой последующей попытки интервал увеличивается по экспоненциальному закону.
+См. подробнее в статье [{#T}](../../error_handling.md#handling-retryable-errors). diff --git a/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/test.md b/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/test.md new file mode 100644 index 000000000000..8f7bafe79b85 --- /dev/null +++ b/ydb/docs/ru/core/reference/ydb-sdk/_includes/tooltips/test.md @@ -0,0 +1,3 @@ +**Большая экспоненциальная задержка** – одна из стратегий задержек, применяемых в SDK.
+Первоначальный интервал при такой задержке составляет несколько **секунд**. Для каждой последующей попытки интервал увеличивается по экспоненциальному закону.
+См. подробнее в статье [{#T}](../../error_handling.md#handling-retryable-errors). diff --git a/ydb/docs/ru/core/reference/ydb-sdk/error_handling.md b/ydb/docs/ru/core/reference/ydb-sdk/error_handling.md index 184ed75339e9..a0e685fe55ba 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/error_handling.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/error_handling.md @@ -10,7 +10,7 @@ * **Ошибки, которые, предположительно, могут быть исправлены с помощью повтора после реакции клиентского приложения** (conditionally retryable) — включают в себя отсутствие ответа в течение отведенного времени, запрос аутентификации. -## Обработка временных сбоев (retryable errors) +## Обработка временных сбоев (retryable errors) {#handling-retryable-errors} {{ ydb-short-name }} SDK предоставляет [встроенный механизм обработки временных сбоев](../../recipes/ydb-sdk/retry.md). По умолчанию в SDK используется рекомендованная политика повторов, которую можно изменить в соответствии с требованиями клиентского приложения. {{ ydb-short-name }} возвращает коды завершения, которые позволяют определить, уместна ли повторная попытка и какой выбрать интервал. diff --git a/ydb/docs/ru/core/reference/ydb-sdk/grpc-status-codes.md b/ydb/docs/ru/core/reference/ydb-sdk/grpc-status-codes.md index 6ef06221d8e9..7adede15684c 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/grpc-status-codes.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/grpc-status-codes.md @@ -32,9 +32,9 @@ | [CANCELLED](#cancelled) | -условно повторяемый +[условно повторяемый](*condretryable) | -короткая +[короткая](*fastbackoff) | да || @@ -44,7 +44,7 @@ | [UNKNOWN](#unknown) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -56,7 +56,7 @@ | [INVALID_ARGUMENT](#invalid-argument) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -68,9 +68,9 @@ | [DEADLINE_EXCEEDED](#deadline-exceeded) | -условно повторяемый +[условно повторяемый](*condretryable) | -короткая +[короткая](*fastbackoff) | да || @@ -80,7 +80,7 @@ | [NOT_FOUND](#not-found) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -92,7 +92,7 @@ | [ALREADY_EXISTS](#already-exists) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -104,7 +104,7 @@ | [PERMISSION_DENIED](#permission-denied) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -116,9 +116,9 @@ | [RESOURCE_EXHAUSTED](#resource-exhausted) | -повторяемый +[повторяемый](*retryable) | -большая +[большая](*slowbackoff) | нет || @@ -128,7 +128,7 @@ | [FAILED_PRECONDITION](#failed-precondition) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -140,9 +140,9 @@ | [ABORTED](#aborted) | -повторяемый +[повторяемый](*retryable) | -моментально +[моментально](*instant) | да || @@ -152,7 +152,7 @@ | [OUT_OF_RANGE](#out-of-range) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -164,7 +164,7 @@ | [UNIMPLEMENTED](#unimplemented) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -176,9 +176,9 @@ | [INTERNAL](#internal) | -условно повторяемый +[условно повторяемый](*condretryable) | -короткая +[короткая](*fastbackoff) | да || @@ -188,9 +188,9 @@ | [UNAVAILABLE](#unavailable) | -условно повторяемый +[условно повторяемый](*condretryable) | -короткая +[короткая](*fastbackoff) | да || @@ -200,7 +200,7 @@ | [DATA_LOSS](#data-loss) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -212,7 +212,7 @@ | [UNAUTHENTICATED](#unauthenticated) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -393,3 +393,15 @@ Запрос не содержит действительных учётных данных для аутентификации операции. Проверить использующийся токен. С актуальным токеном повторить запрос. + +[*instant]: {% include [instant](./_includes/tooltips/instant.md) %} + +[*fastbackoff]: {% include [fast backoff](./_includes/tooltips/fast_backoff.md) %} + +[*slowbackoff]: {% include [slow backoff](./_includes/tooltips/slow_backoff.md) %} + +[*retryable]: {% include [retryable](./_includes/tooltips/retryable.md) %} + +[*nonretryable]: {% include [nonretryable](./_includes/tooltips/nonretryable.md) %} + +[*condretryable]: {% include [conditionally retryable](./_includes/tooltips/condretryable.md) %} diff --git a/ydb/docs/ru/core/reference/ydb-sdk/ydb-status-codes.md b/ydb/docs/ru/core/reference/ydb-sdk/ydb-status-codes.md index 0a4b51d457ee..196b1aeb5470 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/ydb-status-codes.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/ydb-status-codes.md @@ -32,7 +32,7 @@ | [BAD_REQUEST](#bad-request) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -44,7 +44,7 @@ | [UNAUTHORIZED](#unauthorized) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -56,7 +56,7 @@ | [INTERNAL_ERROR](#internal-error) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -68,9 +68,9 @@ | [ABORTED](#aborted) | -повторяемый +[повторяемый](*retryable) | -короткая +[короткая](*fastbackoff) | нет || @@ -80,9 +80,9 @@ | [UNAVAILABLE](#unavailable) | -повторяемый +[повторяемый](*retryable) | -короткая +[короткая](*fastbackoff) | нет || @@ -92,9 +92,9 @@ | [OVERLOADED](#overloaded) | -повторяемый +[повторяемый](*retryable) | -большая +[большая](*slowbackoff) | нет || @@ -104,7 +104,7 @@ | [SCHEME_ERROR](#scheme-error) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -116,7 +116,7 @@ | [GENERIC_ERROR](#generic-error) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -128,7 +128,7 @@ | [TIMEOUT](#timeout) | -неповторяемый +[неповторяемый](*nonretryable) | @@ -142,9 +142,9 @@ | [BAD_SESSION](#bad-session) | -повторяемый +[повторяемый](*retryable) | -моментально +[моментально](*instant) | да || @@ -154,7 +154,7 @@ | [PRECONDITION_FAILED](#precondition-failed) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -166,7 +166,7 @@ | [ALREADY_EXISTS](#already-exists) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -178,7 +178,7 @@ | [NOT_FOUND](#not-found) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -190,9 +190,9 @@ | [SESSION_EXPIRED](#session-expired) | -условно повторяемый +[условно повторяемый](*condretryable) | -моментально +[моментально](*instant) | да || @@ -202,10 +202,10 @@ | [CANCELLED](#cancelled) | -неповторяемый +[неповторяемый](*nonretryable) | -короткая +[короткая](*fastbackoff) | нет || @@ -215,9 +215,9 @@ | [UNDETERMINED](#undetermined) | -условно повторяемый +[условно повторяемый](*condretryable) | -короткая +[короткая](*fastbackoff) | нет || @@ -227,7 +227,7 @@ | [UNSUPPORTED](#unsupported) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -239,9 +239,9 @@ | [SESSION_BUSY](#session-busy) | -повторяемый +[повторяемый](*retryable) | -короткая +[короткая](*fastbackoff) | да || @@ -251,7 +251,7 @@ | [EXTERNAL_ERROR](#external-error) | -неповторяемый +[неповторяемый](*nonretryable) | – | @@ -494,7 +494,19 @@ Проанализировать подробное сообщение об ошибке и обратиться к разработчикам. - ## See also [Questions and answers: Errors](../../faq/errors.md) + + +[*instant]: {% include [instant](./_includes/tooltips/instant.md) %} + +[*fastbackoff]: {% include [fast backoff](./_includes/tooltips/fast_backoff.md) %} + +[*slowbackoff]: {% include [slow backoff](./_includes/tooltips/slow_backoff.md) %} + +[*retryable]: {% include [retryable](./_includes/tooltips/retryable.md) %} + +[*nonretryable]: {% include [nonretryable](./_includes/tooltips/nonretryable.md) %} + +[*condretryable]: {% include [conditionally retryable](./_includes/tooltips/condretryable.md) %}