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

Shard can migrate on top of orphans after filtering metadata was cleared

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 4.4.10, 5.0.4, 5.1.0-rc0
    • Affects Version/s: 4.4.8, 5.0.2
    • Component/s: Sharding
    • Labels:
    • Fully Compatible
    • ALL
    • v5.0, v4.4
    • 74

      A migration recipient may start cloning data that overlaps with an ongoing range deletion if the filtering metadata was cleared before starting receiving the migration.

      1. Consider we have an ongoing range deletion (e.g we donated a chunk).
      2. For whatever reason (e.g. a failed metadata refresh), the filtering metadata gets cleared.
      3. Now we start receiving a chunk that overlaps that range deletion (i.e. the same chunk we recently donated away)
      4. MigrationDestinationManager will see that there is an existing overlapping range deletion document, so it will attempt to wait for the rangeDeletion task to finish through the CSR. However, because the metadata was cleared on step (2), the current metadata is not aware of that range deletion. So 'waitForClean' will return OK right away.
      5. So MigrationDestinationManager will begin cloning documents, even though the range deletion is ongoing and may delete them. Thus causing data loss.

      This regression was introduced on SERVER-52906 because this 'while' was changed to an 'if'

            jordi.serra-torrens@mongodb.com Jordi Serra Torrens
            jordi.serra-torrens@mongodb.com Jordi Serra Torrens
            0 Vote for this issue
            5 Start watching this issue