Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-64986

Add concurrency workloads that test internal transactions using test command

    • Type: Icon: Task Task
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 6.0.0-rc4, 6.1.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None
    • Fully Compatible
    • v6.0
    • Sharding NYC 2022-04-18, Sharding 2022-05-02

      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.

            Assignee:
            cheahuychou.mao@mongodb.com Cheahuychou Mao
            Reporter:
            cheahuychou.mao@mongodb.com Cheahuychou Mao
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: