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

Do not silently ignore read errors when syncing a replica set node

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: 2.4.8
    • Fix Version/s: 2.6.6, 2.7.8
    • Component/s: Replication, Stability
    • Labels:
      None
    • Backwards Compatibility:
      Minor Change
    • Backport Completed:
    • Case:

      Description

      When a new clean node is being added to a replica set, if the source for initial sync has corrupted data, it seems that we try to sync whatever we can, silently ignoring all the records we can not fetch.

      While this "best effort" behavior makes sense, it can lead to significant data inconsistency within the replica set. We should not ignore data access errors during initial sync.

      example behavior (PRIMARY is the node with corruption in dummy.acl namespace, SECONDARY is the newly synced secondary):

      X:SECONDARY> rs.slaveOk()
      X:SECONDARY> use dummy
      switched to db dummy
      X:SECONDARY> db.acl.count()
      101
      X:SECONDARY> exit
      bye
      AD-MAC10G:ff alexander$ mongo
      MongoDB shell version: 2.4.8
      connecting to: test
      X:PRIMARY> use dummy
      switched to db dummy
      X:PRIMARY> db.acl.count()
      10002
      X:PRIMARY> exit
      bye
      

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                2 Vote for this issue
                Watchers:
                9 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: