[SERVER-64986]  Add concurrency workloads that test internal transactions using test command Created: 28/Mar/22  Updated: 29/Oct/23  Resolved: 22/Apr/22

Status: Closed
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: 6.0.0-rc4, 6.1.0-rc0

Type: Task Priority: Major - P3
Reporter: Cheahuychou Mao Assignee: Cheahuychou Mao
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Backports
Depends
is depended on by SERVER-66081 Make transaction API update the times... Closed
Issue split
split to SERVER-65638 Add concurrency workload that changes... Closed
split to SERVER-65639 Add concurrency workload that kills s... Closed
split to SERVER-65640 Add concurrency workload that perform... Closed
split to SERVER-65899 Make concurrency workloads for intern... Closed
Backwards Compatibility: Fully Compatible
Backport Requested:
v6.0
Sprint: Sharding NYC 2022-04-18, Sharding 2022-05-02
Participants:

 Description   

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:

  1. 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)
  2. Retrying and reconstructing responses from retryable insert, update, delete and findAndModify (with a pre or post image) entries.
  3. Killing internal sessions for non-retryable writes.
  4. Reaping internal sessions for retryable writes and for non-retryable writes. 
  5. Downgrading FCV when there are existing or active internal transactions for non-retryable writes.
  6. Migrating chunks when there are existing and active internal transactions for non-retryable writes.
  7. 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.



 Comments   
Comment by Githook User [ 29/Apr/22 ]

Author:

{'name': 'Cheahuychou Mao', 'email': 'mao.cheahuychou@gmail.com', 'username': 'cheahuychou'}

Message: SERVER-64986 Make maxClusterTime not default to null timestmap

(cherry picked from commit 0157495746bb4c0c1f6c19ece2b39ecb61748f30)
Branch: v6.0
https://github.com/mongodb/mongo/commit/6259f8d9fd125a6441336d79323c55dfa7680a76

Comment by Githook User [ 29/Apr/22 ]

Author:

{'name': 'Cheahuychou Mao', 'email': 'mao.cheahuychou@gmail.com', 'username': 'cheahuychou'}

Message: SERVER-64986 Make internal transactions concurrency workloads retry testInternalTransactions commands that are run as retryable writes

(cherry picked from commit c8e87a7de952d4dfeee3141f62dbebc6c8697187)
Branch: v6.0
https://github.com/mongodb/mongo/commit/faaccd35af972f6570918744088a325534b62b53

Comment by Githook User [ 29/Apr/22 ]

Author:

{'name': 'Cheahuychou Mao', 'email': 'mao.cheahuychou@gmail.com', 'username': 'cheahuychou'}

Message: SERVER-64986 Add concurrency workloads that test internal transactions using test command

(cherry picked from commit 5da689d92cffe1cdd42c6b8ee36c22e7b892d911)
Branch: v6.0
https://github.com/mongodb/mongo/commit/d81e854994a8c88e23c45166b7088921f18a7dda

Comment by Githook User [ 22/Apr/22 ]

Author:

{'name': 'Cheahuychou Mao', 'email': 'mao.cheahuychou@gmail.com', 'username': 'cheahuychou'}

Message: SERVER-64986 Make maxClusterTime not default to null timestmap
Branch: master
https://github.com/mongodb/mongo/commit/0157495746bb4c0c1f6c19ece2b39ecb61748f30

Comment by Githook User [ 22/Apr/22 ]

Author:

{'name': 'Cheahuychou Mao', 'email': 'mao.cheahuychou@gmail.com', 'username': 'cheahuychou'}

Message: SERVER-64986 Make internal transactions concurrency workloads retry testInternalTransactions commands that are run as retryable writes
Branch: master
https://github.com/mongodb/mongo/commit/c8e87a7de952d4dfeee3141f62dbebc6c8697187

Comment by Githook User [ 22/Apr/22 ]

Author:

{'name': 'Cheahuychou Mao', 'email': 'mao.cheahuychou@gmail.com', 'username': 'cheahuychou'}

Message: SERVER-64986 Add concurrency workloads that test internal transactions using test command
Branch: master
https://github.com/mongodb/mongo/commit/5da689d92cffe1cdd42c6b8ee36c22e7b892d911

Generated at Thu Feb 08 06:01:36 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.