-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Component/s: Backpressure
-
None
-
Needed
-
-
The retryable write specification's phrasing about NoWritesPerformed error labels is confusing in a driver that can retry more than once:
If a retry attempt fails with an error labeled NoWritesPerformed, drivers MUST return the original error.
This reads like: "If a driver encounters an error labeled NoWritesPerformed, the driver MUST immediately return the previously encountered error.". However, the correct behavior would be to return the most recently encountered meaningful error, something like:
If a driver encounters an error labeled NoWritesPerformed, the driver MUST immediately return the most recent encountered error without the NoWritesPerformed label. If all server errors are labeled NoWritesPerformed, then the first error should be raised.
(see https://mongodb.slack.com/archives/C05P3MKT23E/p1767906271097399).
The Node driver currently has this bug when CSOT is enabled, preventing multiple retries if a retry attempt's error contains a NoWritesPerformed error label even when timeoutMS has not expired.
This behavior needs to be fixed before client backpressure is released - otherwise, drivers won't retry load shed errors more than once.
Acceptance Criteria
- Clarify the correct behavior for handling NoWritesPerformed error labels when multiple retry attempts are performed.
- If possible, add a test to enforce this behavior.
- depends on
-
SERVER-113311 IngressRequestRateLimitExceeded errors should include NoWritesPerformed error label
-
- Closed
-
- split to
-
CDRIVER-6195 Clarify `NoWritesPerformed` error label behavior when multiple retries occur
-
- Blocked
-
-
CXX-3397 Clarify `NoWritesPerformed` error label behavior when multiple retries occur
-
- Blocked
-
-
GODRIVER-3757 Clarify `NoWritesPerformed` error label behavior when multiple retries occur
-
- Blocked
-
-
JAVA-6055 Clarify `NoWritesPerformed` error label behavior when multiple retries occur
-
- Blocked
-
-
NODE-7366 Clarify `NoWritesPerformed` error label behavior when multiple retries occur
-
- Blocked
-
-
PHPLIB-1766 Clarify `NoWritesPerformed` error label behavior when multiple retries occur
-
- Blocked
-
-
PYTHON-5695 Clarify `NoWritesPerformed` error label behavior when multiple retries occur
-
- Blocked
-
-
RUBY-3755 Clarify `NoWritesPerformed` error label behavior when multiple retries occur
-
- Blocked
-
-
RUST-2335 Clarify `NoWritesPerformed` error label behavior when multiple retries occur
-
- Blocked
-
-
CSHARP-5831 Clarify `NoWritesPerformed` error label behavior when multiple retries occur
-
- Ready for Work
-