diff --git a/source/client-backpressure/client-backpressure.md b/source/client-backpressure/client-backpressure.md index 5bf6f211b3..5f489cab80 100644 --- a/source/client-backpressure/client-backpressure.md +++ b/source/client-backpressure/client-backpressure.md @@ -122,7 +122,7 @@ rules: 2. A retry attempt will only be permitted if: 1. The error is a retryable overload error. 2. We have not reached `MAX_RETRIES`. - - The value of `MAX_RETRIES` is 5 and non-configurable. + - The default value of `MAX_RETRIES` is 2. Drivers MUST expose this as a configurable option `maxRetries`. - This intentionally changes the behavior of CSOT which otherwise would retry an unlimited number of times within the timeout to avoid retry storms. 3. (CSOT-only): There is still time for a retry attempt according to the @@ -142,9 +142,10 @@ rules: - `MAX_BACKOFF` is 10000ms. - This results in delays of 100ms, 200ms, 400ms, 800ms, and 1600ms before accounting for jitter. 4. If the request is eligible for retry (as outlined in step 2 above and step 4 in the - [adaptive retry requirements](client-backpressure.md#adaptive-retry-requirements) below), the client MUST add the - previously used server's address to the list of deprioritized server addresses for - [server selection](../server-selection/server-selection.md). + [adaptive retry requirements](client-backpressure.md#adaptive-retry-requirements) below) and + `enableOverloadRetargeting` is enabled, the client MUST add the previously used server's address to the list of + deprioritized server addresses for [server selection](../server-selection/server-selection.md). Drivers MUST expose + this as a configurable boolean option named `enableOverloadRetargeting` defaulting to `false`. 5. If the request is eligible for retry (as outlined in step 2 above and step 4 in the [adaptive retry requirements](client-backpressure.md#adaptive-retry-requirements) below) and is a retryable write: 1. If the command is a part of a transaction, the instructions for command modification on retry for commands in @@ -199,7 +200,7 @@ BASE_BACKOFF = 0.1 # 100ms MAX_BACKOFF = 10 # 10000ms RETRY_TOKEN_RETURN_RATE = 0.1 -MAX_RETRIES = 5 +MAX_RETRIES = 2 def execute_command_retryable(command, ...): deprioritized_servers = []