-
Type:
Spec Change
-
Resolution: Unresolved
-
Priority:
Unknown
-
None
-
Component/s: Backpressure
-
None
-
Needed
-
Summary
We are rolling out client backpressure support in two phases. The first phase has the following requirements:
- No token bucket, this version will include only exponential backoff and jitter for SystemOverloadedError **
- Introduce a new knob controlling the maximum number of retries, with a default of 2.
- Disable overload retargeting (deprioritized servers) by default. Add a knob to enable it.
- Include retry metadata in outgoing requests, attach the number retry to outgoing command bodies so the server can observe the impact of retry storms.
Motivation
Who is the affected end user?
Rapid release customers in the upcoming 8.3 version
How does this affect the end user?
Gives users a pathway for improved experience with the IWM server feature.
How likely is it that this problem or use case will occur?
-
If the problem does occur, what are the consequences and how severe are they?
-
Is this issue urgent?
8.3 is planned to come out in May; drivers should be targeting Apr 17 or earlier for releases.
Is this ticket required by a downstream team?
-
Is this ticket only for tests?
No
Acceptance Criteria
Update the spec and add relevant testing for the following:
- Remove any language referencing the token bucket and the adaptiveRetries option.
- Introduce a new option controlling the maximum number of retries, with a default of 2.
- Disable overload retargeting (deprioritized servers) by default. Add an option to enable it.
- Add a requirement to include retry metadata in outgoing requests: attach the number retry to outgoing command bodies so the server can observe the impact of retry storms.
- Update the backpressure code examples completed in DRIVERS-3378 - AC TBD
- related to
-
DRIVERS-3344 Add support for server selection's deprioritized servers to all topologies
-
- Implementing
-
-
DRIVERS-3378 Provide code examples for non-backpressure drivers handling backpressure errors
-
- Implementing
-
-
DRIVERS-3239 Exponential backoff and jitter in retry loops
-
- Implementing
-
- split to
-
CDRIVER-6274 Finalize client backpressure implementation for phase 1 rollout
-
- Blocked
-
-
CSHARP-5941 Finalize client backpressure implementation for phase 1 rollout
-
- Blocked
-
-
CXX-3439 Finalize client backpressure implementation for phase 1 rollout
-
- Blocked
-
-
GODRIVER-3844 Finalize client backpressure implementation for phase 1 rollout
-
- Blocked
-
-
JAVA-6141 Finalize client backpressure implementation for phase 1 rollout
-
- Blocked
-
-
NODE-7491 Finalize client backpressure implementation for phase 1 rollout
-
- Blocked
-
-
PHPLIB-1814 Finalize client backpressure implementation for phase 1 rollout
-
- Blocked
-
-
RUBY-3794 Finalize client backpressure implementation for phase 1 rollout
-
- Blocked
-
-
RUST-2385 Finalize client backpressure implementation for phase 1 rollout
-
- Blocked
-
-
PYTHON-5767 Finalize client backpressure implementation for phase 1 rollout
-
- Ready for Work
-