We currently have test coverage for internal transactions in the following concurrency workloads:
- random_moveChunk_update_shard_key.js
- This performs WouldChangeOwningShard update and findAndModify while migrating chunks. It uses both retryable writes and multi-document transactions.
- random_moveChunk_update_shard_key_kill_sessions.js
- Same as random_moveChunk_update_shard_key.js but additionally kills sessions.
- random_internal_transactions_setFCV_operations.js
- This performs WouldChangeOwningShard update and findAndModify while changing the FCV.
The workloads provide test coverage for:
- Running an internal transaction on behalf of a client command running as a retryable write or multi-document transaction (has an lsid and a txnNumber).
- Retrying and reconstructing responses from WouldChangeOwningShard noop entries.
- Killing internal sessions for retryable write.
- Downgrading FCV when there are existing and active internal transactions for retryable writes.
- Migrating chunks when there are existing and active internal transactions for retryable writes.
We still don't have concurrency test coverage for the following:
- Running an internal transaction on behalf of a client command not running in a session (no lsid) or not running as a retryable write or multi-document transaction (no txnNumber)
- Retrying and reconstructing responses from retryable insert, update, delete and findAndModify (with a pre or post image) entries.
- Killing internal sessions for non-retryable writes.
- Reaping internal sessions for retryable writes and for non-retryable writes.
- Downgrading FCV when there are existing or active internal transactions for non-retryable writes.
- Migrating chunks when there are existing and active internal transactions for non-retryable writes.
- Resharding the collection when there are existing and active internal transactions for retryable writes and for non-retryable writes.
Note that we have test coverage for (2), (4), (6) and (7) in jstests/sharding/internal_txns.
- is depended on by
-
SERVER-66081 Make transaction API update the timestamp on ReplClientInfo
- Closed
- split to
-
SERVER-65638 Add concurrency workload that changes FCV while there are active internal transactions started using test command
- Closed
-
SERVER-65639 Add concurrency workload that kills sessions with active internal transactions started using test command
- Closed
-
SERVER-65640 Add concurrency workload that performs resharding while there are active internal transactions started using test command
- Closed
-
SERVER-65899 Make concurrency workloads for internal transactions test multi-writes
- Closed