Summary
A write error is now considered retryable if it has a RetryableWriteError label in the "errorLabels" field.
See the Determining Retryable Writes section for more information on how the driver should determine which write errors are retryable.
This change also involves implementing new spec tests that use the failCommand fail point to make sure that drivers are retrying writes based on the presence of the RetryableWriteError label, rather than error codes.
See this PR for complete changes.
Lead: jmikola
Author: Emily
POCs: Ruby - Emily, C#
- depends on
-
SERVER-45939 Have mongos propagate RetryableWriteError label to client
- Backlog
-
CDRIVER-3462 Expand use of error labels for RetryableWrites
- Closed
-
CXX-1888 Expand use of error labels for RetryableWrites
- Closed
-
MOTOR-477 Expand use of error labels for RetryableWrites
- Closed
-
PYTHON-2082 Expand use of error labels for retryable writes (RetryableWriteError label)
- Closed
-
RUBY-2044 Expand use of error labels for RetryableWrites
- Closed
-
RUST-368 Expand use of error labels for RetryableWrites
- Closed
-
SERVER-41245 Add RetryableWriteError Error Label
- Closed
-
CSHARP-2872 Expand use of error labels for RetryableWrites
- Closed
-
GODRIVER-1437 Expand use of error labels for RetryableWrites
- Closed
-
JAVA-3531 Expand use of error labels for RetryableWrites
- Closed
-
NODE-2379 Expand use of error labels for RetryableWrites
- Closed
-
PHPC-1510 Expand use of error labels for RetryableWrites
- Closed
- is related to
-
DRIVERS-2066 Investigate whether newer server versions return "not master" or "node is recovering" error messages
- Closed
- related to
-
DRIVERS-826 Add RetryableWriteError error labels to retryable transaction tests
- Implementing