runOn: - minServerVersion: "4.0" topology: ["replicaset"] - minServerVersion: "4.1.8" topology: ["sharded"] database_name: &database_name "transaction-tests" collection_name: &collection_name "test" data: - _id: 1 count: 0 tests: - description: causal consistency clientOptions: retryWrites: false operations: # Update a document without a transaction. - &updateOne name: updateOne object: collection arguments: session: session0 filter: {_id: 1} update: $inc: {count: 1} result: matchedCount: 1 modifiedCount: 1 upsertedCount: 0 # Updating the same document inside a transaction. # Casual consistency ensures that the transaction snapshot is causally # after the first updateOne. - name: startTransaction object: session0 - *updateOne - name: commitTransaction object: session0 expectations: - command_started_event: command: update: *collection_name updates: - q: {_id: 1} u: {$inc: {count: 1}} ordered: true lsid: session0 readConcern: txnNumber: startTransaction: autocommit: writeConcern: command_name: update database_name: *database_name - command_started_event: command: update: *collection_name updates: - q: {_id: 1} u: {$inc: {count: 1}} ordered: true readConcern: afterClusterTime: 42 lsid: session0 txnNumber: $numberLong: "1" startTransaction: true autocommit: false writeConcern: command_name: update 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: - _id: 1 count: 2 - description: causal consistency disabled clientOptions: retryWrites: false sessionOptions: session0: causalConsistency: false operations: # Insert a document without a transaction. - name: insertOne object: collection arguments: session: session0 document: _id: 2 result: insertedId: 2 - name: startTransaction object: session0 - name: updateOne object: collection arguments: session: session0 filter: {_id: 1} update: $inc: {count: 1} result: matchedCount: 1 modifiedCount: 1 upsertedCount: 0 - name: commitTransaction object: session0 expectations: - command_started_event: command: insert: *collection_name documents: - _id: 2 ordered: true readConcern: lsid: session0 txnNumber: autocommit: writeConcern: command_name: insert database_name: *database_name - command_started_event: command: update: *collection_name updates: - q: {_id: 1} u: {$inc: {count: 1}} ordered: true # No afterClusterTime readConcern: lsid: session0 txnNumber: $numberLong: "1" startTransaction: true autocommit: false writeConcern: command_name: update 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: - _id: 1 count: 1 - _id: 2