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

run_check_repl_dbhash.js hook exits without actually running dbhash on a replica set

    XMLWordPrintable

    Details

    • Backwards Compatibility:
      Fully Compatible
    • Operating System:
      ALL
    • Backport Requested:
      v3.6, v3.4
    • Sprint:
      TIG 2018-02-12

      Description

      The changes from b9decc4 as part of SERVER-21630 introduced a bug that causes the dbhash check to always be skipped on a replica set no matter how many voting secondaries it has.

      Inside the isMultiNodeReplSet() function, the handling for when the isMaster response indicates the server is part of replica set shadows the outer hosts variable with another let declaration, thereby causing the array of connection strings to always be empty.

      function isMultiNodeReplSet(uri) {
          const mongo = new Mongo(uri);
          let hosts = [];
          const isMaster = mongo.adminCommand({isMaster: 1});
          if (isMaster.hasOwnProperty('setName')) {
              let hosts = isMaster.hosts;
              if (isMaster.hasOwnProperty('passives')) {
                  hosts = hosts.concat(isMaster.passives);
              }
          }
          return hosts.length > 1;
      }
      

      Note: JavaScripts that call ReplSetTest#checkReplicatedDataHashes() (e.g. from the work in SERVER-25640) aren't affected by this issue.

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                • Created:
                  Updated:
                  Resolved: