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

critical section recovery check is inaccurate if SCC::findOne unexpectedly throws after preparing

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major - P3 Major - P3
    • None
    • 2.5.0
    • Sharding
    • None
    • Sharding
    • ALL

    Description

      Note - the correct behavior here may need more discussion.

      If, while attempting to write the version in the critical section of a migrate, the write fails on the first (or second) server, mongod can throw an exception that is caught by the critical section recovery code (see DBClientInterface::findN, looks like the SCC::findOne does not expect this to happen). Writes to subsequent servers are not performed, potentially resulting in inconsistency.

      The check afterwards (which reads the version written and shuts down the server if it differs) does not catch the problem if the write to the server actually went through. This happens in the case of config server timeout, for example.

      Attachments

        Activity

          People

            backlog-server-sharding [DO NOT USE] Backlog - Sharding Team
            greg_10gen Greg Studer
            Votes:
            1 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: