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

Starting from 3.2.5 if bind_ip is set to 0.0.0.0 it will end up in the replica set config if rs.initiate() is executed with no arguments

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • 3.3.8
    • Affects Version/s: 3.2.5
    • Component/s: Replication
    • Labels:
      None
    • Fully Compatible
    • ALL
    • Hide
      • Start a mongod instance with replSet enabled and bind_ip set to 0.0.0.0
      • In mongo shell execute rs.initiate()
      • Check the rs.config() or rs.status() and check the "name" value - it will be "0.0.0.0:<port>"
      Show
      Start a mongod instance with replSet enabled and bind_ip set to 0.0.0.0 In mongo shell execute rs.initiate() Check the rs.config() or rs.status() and check the "name" value - it will be "0.0.0.0:<port>"
    • Security 15 (06/03/16)

      That must be a regression from SERVER-23838 as pointed by kevin.pulo.

      It leads to weird consequnces such as if other replica set members specified with the correct host names, they may consider themselves to be the member with the name that contains "0.0.0.0" and will actually try to heartbeat themselves:

      "taken from a remote member"
      2016-05-23T15:03:13.588-0700 I REPL     [ReplicationExecutor] New replica set config in use: { _id: "MMS", version: 1, protocolVersion: 1, members: [ { _id: 0, host: "0.0.0.0:28107", arbiterOnly: false, buildIndexes: true, hidden: false, priority: 1.0, tags: {}, slaveDelay: 0, votes: 1 } ], settings: { chainingAllowed: true, heartbeatIntervalMillis: 2000, heartbeatTimeoutSecs: 10, electionTimeoutMillis: 10000, getLastErrorModes: {}, getLastErrorDefaults: { w: 1, wtimeout: 0 }, replicaSetId: ObjectId('57437e1f88f956063b96e00c') } }
      2016-05-23T15:03:13.588-0700 I REPL     [ReplicationExecutor] This node is 0.0.0.0:28107 in the config
      ...
      2016-05-23T15:04:29.958-0700 W REPL     [ReplicationExecutor] Got error (BadValue: Received heartbeat from member with the same member ID as ourself: 0) response on heartbeat request to hostnameX:28107; { ok: 1.0, hbmsg: "" }

      The workaround is to specify host names or unique IP addresses explicitly:

      var cfg = {
            _id: "testRS",
            version: 1,
            members: [
               { _id: 0, host : "host1:27017"},
               { _id: 1, host : "host2:27017"},
               { _id: 2, host : "host3:27017"}
            ]
         };
      rs.initiate(cfg);
      

            Assignee:
            andreas.nilsson Andreas Nilsson
            Reporter:
            dmitry.ryabtsev@mongodb.com Dmitry Ryabtsev
            Votes:
            1 Vote for this issue
            Watchers:
            11 Start watching this issue

              Created:
              Updated:
              Resolved: