-
Type:
Spec Change
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Component/s: Backpressure
-
None
Summary
What is the problem or use case, what are we trying to achieve?
Currently, the spec is somewhat ambiguous in its requirement that encountering any overload error during an operation's retry loop MUST set the maximum number of retries to maxAdaptiveRetries, even if CSOT is enabled and even if subsequent or preceding errors were retryable non-overload errors. This has caused at least two drivers (Python and Ruby) to implement their retry logic incorrectly, and since no tests exist to verify the correct behavior, it is difficult to catch.
Clarifying the specification's wording to be more explicit and adding two new prose tests to verify the correct behavior will prevent other drivers from making this mistake.
Motivation
Who is the affected end user?
Who are the stakeholders?
All users that experience both overload and non-overload retryable errors during a single operation.
How does this affect the end user?
Are they blocked? Are they annoyed? Are they confused?
Drivers that do not conform to the spec will retry less often, producing more application errors.
How likely is it that this problem or use case will occur?
Main path? Edge case?
This could easily occur during any period of server overload.
If the problem does occur, what are the consequences and how severe are they?
Minor annoyance at a log message? Performance concern? Outage/unavailability? Failover can't complete?
Increased application errors and less successful driver operations during transient overload periods.
Is this issue urgent?
Does this ticket have a required timeline? What is it?
Must be completed before drivers release their backpressure-compliant versions..
Is this ticket required by a downstream team?
Needed by e.g. Atlas, Shell, Compass?
No.
Is this ticket only for tests?
Does this ticket have any functional impact, or is it just test improvements?
No.
Acceptance Criteria
What specific requirements must be met to consider the design phase complete?
Two new prose tests verifying correct driver behavior when a mix of overload and non-overload errors are encountered during a single operation's retry loop.
- split to
-
CDRIVER-6291 Add prose tests to verify correct retry behavior when a mix of overload and non-overload errors are encountered
-
- Blocked
-
-
CSHARP-5977 Add prose tests to verify correct retry behavior when a mix of overload and non-overload errors are encountered
-
- Blocked
-
-
CXX-3465 Add prose tests to verify correct retry behavior when a mix of overload and non-overload errors are encountered
-
- Blocked
-
-
GODRIVER-3859 Add prose tests to verify correct retry behavior when a mix of overload and non-overload errors are encountered
-
- Blocked
-
-
JAVA-6166 Add prose tests to verify correct retry behavior when a mix of overload and non-overload errors are encountered
-
- Blocked
-
-
NODE-7534 Add prose tests to verify correct retry behavior when a mix of overload and non-overload errors are encountered
-
- Blocked
-
-
PHPLIB-1826 Add prose tests to verify correct retry behavior when a mix of overload and non-overload errors are encountered
-
- Blocked
-
-
RUST-2400 Add prose tests to verify correct retry behavior when a mix of overload and non-overload errors are encountered
-
- Blocked
-
-
PYTHON-5794 Add prose tests to verify correct retry behavior when a mix of overload and non-overload errors are encountered
-
- In Code Review
-
-
RUBY-3803 Add prose tests to verify correct retry behavior when a mix of overload and non-overload errors are encountered
-
- In Progress
-