bson/testdata/transactions/legacy/retryable-abort.yml
2025-03-17 20:58:26 +01:00

1316 lines
33 KiB
YAML

runOn:
-
minServerVersion: "4.0"
topology: ["replicaset"]
-
minServerVersion: "4.1.8"
topology: ["sharded"]
database_name: &database_name "transaction-tests"
collection_name: &collection_name "test"
data: []
tests:
- description: abortTransaction only performs a single retry
clientOptions:
retryWrites: false
failPoint:
configureFailPoint: failCommand
mode: { times: 2 }
data:
failCommands: ["abortTransaction"]
closeConnection: true
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
# Call to abort returns no error even when the retry attempt fails.
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction does not retry after Interrupted
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
errorCode: 11601
closeConnection: false
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction does not retry after WriteConcernError Interrupted
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
writeConcernError:
code: 11601
errmsg: operation was interrupted
operations:
- name: startTransaction
object: session0
arguments:
options:
writeConcern:
w: majority
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after connection error
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
closeConnection: true
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after NotWritablePrimary
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
errorCode: 10107
errorLabels: ["RetryableWriteError"]
closeConnection: false
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after NotPrimaryOrSecondary
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
errorCode: 13436
errorLabels: ["RetryableWriteError"]
closeConnection: false
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after NotPrimaryNoSecondaryOk
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
errorCode: 13435
errorLabels: ["RetryableWriteError"]
closeConnection: false
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after InterruptedDueToReplStateChange
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
errorCode: 11602
errorLabels: ["RetryableWriteError"]
closeConnection: false
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after InterruptedAtShutdown
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
errorCode: 11600
errorLabels: ["RetryableWriteError"]
closeConnection: false
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after PrimarySteppedDown
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
errorCode: 189
errorLabels: ["RetryableWriteError"]
closeConnection: false
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after ShutdownInProgress
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
errorCode: 91
errorLabels: ["RetryableWriteError"]
closeConnection: false
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after HostNotFound
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
errorCode: 7
errorLabels: ["RetryableWriteError"]
closeConnection: false
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after HostUnreachable
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
errorCode: 6
errorLabels: ["RetryableWriteError"]
closeConnection: false
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after SocketException
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
errorCode: 9001
errorLabels: ["RetryableWriteError"]
closeConnection: false
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after NetworkTimeout
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
errorCode: 89
errorLabels: ["RetryableWriteError"]
closeConnection: false
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after WriteConcernError InterruptedAtShutdown
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
writeConcernError:
code: 11600
errorLabels: ["RetryableWriteError"]
errmsg: Replication is being shut down
operations:
- name: startTransaction
object: session0
arguments:
options:
writeConcern:
w: majority
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after WriteConcernError InterruptedDueToReplStateChange
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
writeConcernError:
code: 11602
errorLabels: ["RetryableWriteError"]
errmsg: Replication is being shut down
operations:
- name: startTransaction
object: session0
arguments:
options:
writeConcern:
w: majority
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after WriteConcernError PrimarySteppedDown
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
writeConcernError:
code: 189
errorLabels: ["RetryableWriteError"]
errmsg: Replication is being shut down
operations:
- name: startTransaction
object: session0
arguments:
options:
writeConcern:
w: majority
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []
- description: abortTransaction succeeds after WriteConcernError ShutdownInProgress
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["abortTransaction"]
writeConcernError:
code: 91
errorLabels: ["RetryableWriteError"]
errmsg: Replication is being shut down
operations:
- name: startTransaction
object: session0
arguments:
options:
writeConcern:
w: majority
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
readConcern:
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: abortTransaction
database_name: admin
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: []