DRIVERS-3427 Phase 1 rollout: configurable retries, retargeting knob#1917
DRIVERS-3427 Phase 1 rollout: configurable retries, retargeting knob#1917
Conversation
… retry metadata - Change MAX_RETRIES default from 5 to 2; expose as configurable maxAdaptiveRetries option - Add enableOverloadRetargeting option (default: false) to gate server deprioritization - Add "retry": N field requirement for outgoing command bodies on retry attempts - Renumber overload retry policy rules accordingly Co-Authored-By: Claude Code <noreply@anthropic.com>
Updated the default value of MAX_RETRIES to 2 and clarified its exposure as a configurable option.
Co-authored-by: Jib <Jibzade@gmail.com>
There was a problem hiding this comment.
Pull request overview
Updates the Client Backpressure specification to support a Phase 1 rollout of DRIVERS-3427 by tuning overload retry behavior and introducing a new gating knob for overload retargeting during server selection.
Changes:
- Lowers
MAX_RETRIESdefault from 5 to 2 and specifies it must be configurable via a driver option. - Adds
enableOverloadRetargeting(defaultfalse) to gate adding previously-used servers to the deprioritized list. - Updates the pseudocode constant value for
MAX_RETRIESto 2.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| 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`. |
There was a problem hiding this comment.
Rule 4 now gates adding the previously-used server to the deprioritized list behind enableOverloadRetargeting, but the pseudocode later in this document still unconditionally appends the server address to deprioritized_servers. Please update the pseudocode/algorithm description to match the new conditional behavior so the spec is internally consistent.
| 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`. | |
| deprioritized server addresses for [server selection](../server-selection/server-selection.md). If | |
| `enableOverloadRetargeting` is disabled, the client MUST NOT add the previously used server's address to this list. | |
| Drivers MUST expose this as a configurable boolean option named `enableOverloadRetargeting` defaulting to `false`. |
| 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 |
There was a problem hiding this comment.
The PR description mentions a new maxAdaptiveRetries driver option, but this spec text requires drivers to expose MAX_RETRIES as maxRetries. Please align the option name between the PR description and the spec (and ensure the chosen name is used consistently throughout the spec).
| 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`. |
There was a problem hiding this comment.
Is maxRetries both a MongoClient constructor kwarg and a URI option? If we allow setting it in the URI, we need to update the URI spec.
There was a problem hiding this comment.
maxRetries is also supposed to be maxAdaptiveRetries.
| 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 |
Summary
Updates to the client backpressure spec for DRIVERS-3427 phase 1 rollout:
MAX_RETRIESdefault from 5 to 2 and make it configurable via a newmaxAdaptiveRetriesdriver optionenableOverloadRetargeting: Add configurable boolean option (default:false) to gate adding previously-used servers to the deprioritized list during server selectionTest plan
Generated with Claude Code