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

MovePrimary followed by dropDatabase and recreate on the original shard can lose data

    XMLWordPrintableJSON

Details

    • Sharding EMEA
    • Fully Compatible
    • ALL
    • Show
      0001-Repro-SERVER-69181.patch
    • Sharding EMEA 2023-02-20

    Description

      Consider the following interleaving:

      1. 'Shard1' is the db-primary shard for database 'dbA'. There's an unsharded collection 'dbA.coll'.
      2. User runs movePrimary(dbA, to: 'Shard2') -> On 'shard1', the MovePrimary coordinator commits the operation and releases the critical section. But hangs before cleaning the "stale db data".
      3. User runs dropDatabase -> On 'shard2', which is now the db-primary shard.
      4. User now recreates 'dbA' on 'shard1' and does some writes on 'dbA.coll'.
      5. Now the MovePrimary coordinator of point (2) proceeds with cleaning "stale data". It will drop 'dbA.coll', so the writes that happened on point (4) are lost!

      Attachments

        Activity

          People

            antonio.fuschetto@mongodb.com Antonio Fuschetto
            jordi.serra-torrens@mongodb.com Jordi Serra Torrens
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: