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

Merging replica sets with replication protocol version 1 may result in two primaries

    XMLWordPrintable

    Details

    • Backwards Compatibility:
      Fully Compatible
    • Operating System:
      ALL
    • Backport Completed:
    • Steps To Reproduce:
      Hide

      1. Create a replica set with at least two members, using rs.initiate().
      2. Create another replica set with a single member with the same name as (1), using rs.initiate().
      3. rs.add() the PRIMARY of (2) to the replica set (1).
      4. rs.status() on (1) shows two PRIMARY.

      Note: two_primaries.js jstest is attached.

      Show
      1. Create a replica set with at least two members, using rs.initiate(). 2. Create another replica set with a single member with the same name as (1), using rs.initiate(). 3. rs.add() the PRIMARY of (2) to the replica set (1). 4. rs.status() on (1) shows two PRIMARY. Note: two_primaries.js jstest is attached.
    • Sprint:
      Repl F (01/29/16), Repl 10 (02/19/16)

      Description

      In replication protocol version 1, it is possible to create a replica set with two primaries by creating two replica sets with the same name and adding the primary of one set to the other set.

      Any write to the set at this state was done to one of the primaries. However, attempt to restart the set may show data corruption error. Error message is:

      [rsBackgroundSync] Fatal assertion 28723 UnrecoverableRollbackError need to rollback, but unable to determine common point between local and remote oplog: NoMatchingDocument RS101 reached beginning of local oplog [2] @ 18752

      This issue does not happen with protocol version 0.

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                13 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: