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

Chunk migration clone blocks behind prepared transactions

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major - P3
    • Resolution: Fixed
    • None
    • 4.2.0-rc2, 4.3.1
    • Sharding
    • None
    • Fully Compatible
    • ALL
    • v4.2
    • Sharding 2019-06-03, Sharding 2019-06-17, Sharding 2019-07-01
    • 0

    Description

      The current iteration of chunk migration was built with the assumption that cloning can happen in parallel with prepared transactions on the collection, however this is not what happens in practice.

      As part of default command behavior, the moveChunk command will block on reads for documents that are in the prepare state. If any documents in the initial index scan are in prepared transactions, the index scan will block on the completion of those transactions to read these documents.

      This means that the beginning of the chunk migration clone phase will infinitely block in the presence of transactions that:

      1. Have documents that exist in the chunk being migrated, and
      2. Are already in the prepare state before the chunk cloner started.

      This ticket is to evaluate if this behavior is acceptable, and if not, figure out a way around this behavior. If we decide to allow the moveChunk command to ignore prepare conflicts, then we will need additional machinery to track these prepared transactions.

      Attachments

        Issue Links

          Activity

            People

              blake.oler@mongodb.com Blake Oler
              blake.oler@mongodb.com Blake Oler
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: