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

Make SessionCatalogMigrationSource ignore internal transactions for non-retryable writes and uncommitted internal transactions for retryable writes

    • Type: Icon: Task Task
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 5.3.0-rc4
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None
    • Fully Compatible
    • Sharding NYC 2022-03-21

      The SessionCatalogMigrationSource currently returns a dead-end sentinel noop oplog entry for every transaction involving the collection being migrated. For an internal transaction for non-retryable writes, this oplog entry is expected to cause the migration to hit this invariant inside checkStatementExecuted since retryable writes are not allowed inside an internal session for non-retryable writes. This issue will be handled in SERVER-64331. For now, the SessionCatalogMigrationSource should ignore internal transactions for non-retryable writes, just like what ReshardingOplogSessionApplication does in SERVER-63441.

      Similarly, the SessionCatalogMigrationSource should also ignore internal transactions for retryable writes that are aborted or still in progress/prepare at the start of cloning since there is no write history to transfer (at this point). If any of the transactions commits during the migration, it will be handled through the transfer mod session migration queue (in SERVER-63494). 

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

              Created:
              Updated:
              Resolved: