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

1462 lines
38 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: commitTransaction fails after two errors
clientOptions:
retryWrites: false
failPoint:
configureFailPoint: failCommand
mode: { times: 2 }
data:
failCommands: ["commitTransaction"]
closeConnection: true
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
# First call to commit fails after a single retry attempt.
- name: commitTransaction
object: session0
result:
errorLabelsContain: ["RetryableWriteError", "UnknownTransactionCommitResult"]
errorLabelsOmit: ["TransientTransactionError"]
# Second call to commit succeeds because the failpoint was disabled.
- name: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction applies majority write concern on retries
skipReason: "GODRIVER-2348: wtimeout is deprecated"
clientOptions:
retryWrites: false
failPoint:
configureFailPoint: failCommand
mode: { times: 2 }
data:
failCommands: ["commitTransaction"]
closeConnection: true
operations:
- name: startTransaction
object: session0
arguments:
options:
writeConcern: { w: 2, j: true, wtimeout: 5000 }
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
# First call to commit fails after a single retry attempt.
- name: commitTransaction
object: session0
result:
errorLabelsContain: ["RetryableWriteError", "UnknownTransactionCommitResult"]
errorLabelsOmit: ["TransientTransactionError"]
# Second call to commit succeeds because the failpoint was disabled.
- name: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern: { w: 2, j: true, wtimeout: 5000 }
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, j: true, wtimeout: 5000 }
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern: { w: majority, j: true, wtimeout: 5000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction fails after Interrupted
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
errorCode: 11601
closeConnection: false
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: commitTransaction
object: session0
result:
errorCodeName: Interrupted
errorLabelsOmit: ["RetryableWriteError", "TransientTransactionError", "UnknownTransactionCommitResult"]
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
outcome:
collection:
data: []
- description: commitTransaction is not retried after UnsatisfiableWriteConcern error
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
writeConcernError:
code: 100
errmsg: Not enough data-bearing nodes
operations:
- name: startTransaction
object: session0
arguments:
options:
writeConcern:
w: majority
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: commitTransaction
object: session0
result:
errorLabelsOmit: ["RetryableWriteError", "TransientTransactionError", "UnknownTransactionCommitResult"]
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after connection error
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
closeConnection: true
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after NotWritablePrimary
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after NotPrimaryOrSecondary
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after NotPrimaryNoSecondaryOk
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after InterruptedDueToReplStateChange
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after InterruptedAtShutdown
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after PrimarySteppedDown
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after ShutdownInProgress
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after HostNotFound
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after HostUnreachable
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after SocketException
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after NetworkTimeout
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after WriteConcernError InterruptedAtShutdown
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after WriteConcernError InterruptedDueToReplStateChange
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after WriteConcernError PrimarySteppedDown
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1
- description: commitTransaction succeeds after WriteConcernError ShutdownInProgress
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: ["commitTransaction"]
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: commitTransaction
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:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: commitTransaction
database_name: admin
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
# commitTransaction applies w:majority on retries
writeConcern: { w: majority, wtimeout: 10000 }
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 1