...
1runOn:
2 - minServerVersion: "4.3.1"
3 topology: ["replicaset", "sharded", "load-balanced"]
4
5data:
6 - { _id: 1, x: 11 }
7 - { _id: 2, x: 22 }
8
9tests:
10 - description: "DeleteOne succeeds with RetryableWriteError from server"
11 failPoint:
12 configureFailPoint: failCommand
13 mode: { times: 1 }
14 data:
15 failCommands: ["delete"]
16 errorCode: 112 # WriteConflict, not a retryable error code
17 errorLabels: ["RetryableWriteError"] # Override server behavior: send RetryableWriteError label with non-retryable error code
18 operation:
19 name: "deleteOne"
20 arguments:
21 filter: { _id: 1 }
22 outcome: # Driver retries operation and it succeeds
23 result:
24 deletedCount: 1
25 collection:
26 data:
27 - { _id: 2, x: 22 }
28
29 - description: "DeleteOne fails if server does not return RetryableWriteError"
30 failPoint:
31 configureFailPoint: failCommand
32 mode: { times: 1 }
33 data:
34 failCommands: ["delete"]
35 errorCode: 11600 # InterruptedAtShutdown, normally a retryable error code
36 errorLabels: [] # Override server behavior: do not send RetryableWriteError label with retryable code
37 operation:
38 name: "deleteOne"
39 arguments:
40 filter: { _id: 1 }
41 outcome:
42 error: true # Driver does not retry operation because there was no RetryableWriteError label on response
43 result:
44 errorLabelsOmit: ["RetryableWriteError"]
45 collection:
46 data:
47 - { _id: 1, x: 11 }
48 - { _id: 2, x: 22 }
View as plain text