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

rs.config that contains an _id greater than the number of nodes will crash

    • Fully Compatible
    • ALL
    • v4.0, v3.6, v3.4
    • Hide
      (function() {
          "use strict";
      
          const name = "arbiters_not_included_in_w2_wc";
          const rst = new ReplSetTest({name: name, nodes: 3});
          const nodes = rst.nodeList();
      
          rst.startSet();
          rst.initiate({
              "_id": name,
              "members": [
                  {"_id": 1, "host": nodes[0]},
                  {"_id": 3, "host": nodes[1]},
                  {"_id": 5, "host": nodes[2]},
              ]
          });
      
          const dbName = "test";
          const collName = name;
      
          const primary = rst.getPrimary();
          const testColl = primary.getDB(dbName).getCollection(collName);
      
          assert.commandWorked(
              testColl.insert({"a": 1}, {writeConcern: {w: 2}}));
      })();
      
      Show
      ( function () { "use strict" ; const name = "arbiters_not_included_in_w2_wc" ; const rst = new ReplSetTest({name: name, nodes: 3}); const nodes = rst.nodeList(); rst.startSet(); rst.initiate({ "_id" : name, "members" : [ { "_id" : 1, "host" : nodes[0]}, { "_id" : 3, "host" : nodes[1]}, { "_id" : 5, "host" : nodes[2]}, ] }); const dbName = "test" ; const collName = name; const primary = rst.getPrimary(); const testColl = primary.getDB(dbName).getCollection(collName); assert.commandWorked( testColl.insert({ "a" : 1}, {writeConcern: {w: 2}})); })();
    • Repl 2019-04-08
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      SERVER-37846 introduced this check that incorrectly tries to look up the MemberConfig by passing the configId to getMemberAt, which actually operates on an array index id.

      When this occurs the following crash is logged:

      Unable to find source-code formatter for language: plain text. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
      2019-03-27T00:50:37.868+0000 D REPL     [conn49] Waiting for write concern. OpTime: { ts: Timestamp(1553647837, 1), t: 7921 }, write concern: { w: 2, wtimeout: 0 }
      2019-03-27T00:50:37.868+0000 F -        [conn49] Invariant failure i < _members.size() src/mongo/db/repl/repl_set_config.cpp 660
      2019-03-27T00:50:37.868+0000 F -        [conn49] 
      
      ***aborting after invariant() failure
      
      
      2019-03-27T00:50:37.890+0000 F -        [conn49] Got signal: 6 (Aborted).
       0x55b294737ce1 0x55b294736ef9 0x55b2947373dd 0x7fb14c6fd390 0x7fb14c357428 0x7fb14c35902a 0x55b292d460ac 0x55b293fed08c 0x55b293fed1e9 0x55b29309144c 0x55b29305e6e7 0x55b29306531e 0x55b293065904 0x55b29342b78b 0x55b292de4e43 0x55b292df43ed 0x55b292df67db 0x55b292df80f9 0x55b292df9031 0x55b292de478a 0x55b292df129a 0x55b292dec017 0x55b292def771 0x55b293f90122 0x55b292dea200 0x55b292ded2f5 0x55b292deb757 0x55b292dec09d 0x55b292def771 0x55b293f90685 0x55b294690794 0x7fb14c6f36ba 0x7fb14c42941d
      ----- BEGIN BACKTRACE -----
      {"backtrace":[{"b":"55B29232A000","o":"240DCE1","s":"_ZN5mongo15printStackTraceERSo"},{"b":"55B29232A000","o":"240CEF9"},{"b":"55B29232A000","o":"240D3DD"},{"b":"7FB14C6EC000","o":"11390"},{"b":"7FB14C322000","o":"35428","s":"gsignal"},{"b":"7FB14C322000","o":"3702A","s":"abort"},{"b":"55B29232A000","o":"A1C0AC","s":"_ZN5mongo22invariantFailedWithMsgEPKcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_j"},{"b":"55B29232A000","o":"1CC308C"},{"b":"55B29232A000","o":"1CC31E9"},{"b":"55B29232A000","o":"D6744C","s":"_ZN5mongo4repl19TopologyCoordinator25haveNumNodesReachedOpTimeERKNS0_6OpTimeEib"},{"b":"55B29232A000","o":"D346E7","s":"_ZN5mongo4repl26ReplicationCoordinatorImpl33_doneWaitingForReplication_inlockERKNS0_6OpTimeERKNS_19WriteConcernOptionsE"},{"b":"55B29232A000","o":"D3B31E","s":"_ZN5mongo4repl26ReplicationCoordinatorImpl24_awaitReplication_inlockEPSt11unique_lockISt5mutexEPNS_16OperationContextERKNS0_6OpTimeERKNS_19WriteConcernOptionsE"},{"b":"55B29232A000","o":"D3B904","s":"_ZN5mongo4repl26ReplicationCoordinatorImpl16awaitReplicationEPNS_16OperationContextERKNS0_6OpTimeERKNS_19WriteConcernOptionsE"},{"b":"55B29232A000","o":"110178B","s":"_ZN5mongo19waitForWriteConcernEPNS_16OperationContextERKNS_4repl6OpTimeERKNS_19WriteConcernOptionsEPNS_18WriteConcernResultE"},{"b":"55B29232A000","o":"ABAE43","s":"_ZNK5mongo23ServiceEntryPointMongod5Hooks19waitForWriteConcernEPNS_16OperationContextEPKNS_17CommandInvocationERKNS_4repl6OpTimeERNS_14BSONObjBuilderE"},{"b":"55B29232A000","o":"ACA3ED"},{"b":"55B29232A000","o":"ACC7DB"},{"b":"55B29232A000","o":"ACE0F9"},{"b":"55B29232A000","o":"ACF031","s":"_ZN5mongo23ServiceEntryPointCommon13handleRequestEPNS_16OperationContextERKNS_7MessageERKNS0_5HooksE"},{"b":"55B29232A000","o":"ABA78A","s":"_ZN5mongo23ServiceEntryPointMongod13handleRequestEPNS_16OperationContextERKNS_7MessageE"},{"b":"55B29232A000","o":"AC729A","s":"_ZN5mongo19ServiceStateMachine15_processMessageENS0_11ThreadGuardE"},{"b":"55B29232A000","o":"AC2017","s":"_ZN5mongo19ServiceStateMachine15_runNextInGuardENS0_11ThreadGuardE"},{"b":"55B29232A000","o":"AC5771"},{"b":"55B29232A000","o":"1C66122","s":"_ZN5mongo9transport26ServiceExecutorSynchronous8scheduleESt8functionIFvvEENS0_15ServiceExecutor13ScheduleFlagsENS0_23ServiceExecutorTaskNameE"},{"b":"55B29232A000","o":"AC0200","s":"_ZN5mongo19ServiceStateMachine22_scheduleNextWithGuardENS0_11ThreadGuardENS_9transport15ServiceExecutor13ScheduleFlagsENS2_23ServiceExecutorTaskNameENS0_9OwnershipE"},{"b":"55B29232A000","o":"AC32F5","s":"_ZN5mongo19ServiceStateMachine15_sourceCallbackENS_6StatusE"},{"b":"55B29232A000","o":"AC1757","s":"_ZN5mongo19ServiceStateMachine14_sourceMessageENS0_11ThreadGuardE"},{"b":"55B29232A000","o":"AC209D","s":"_ZN5mongo19ServiceStateMachine15_runNextInGuardENS0_11ThreadGuardE"},{"b":"55B29232A000","o":"AC5771"},{"b":"55B29232A000","o":"1C66685"},{"b":"55B29232A000","o":"2366794"},{"b":"7FB14C6EC000","o":"76BA"},{"b":"7FB14C322000","o":"10741D","s":"clone"}],"processInfo":{ "mongodbVersion" : "4.0.7", "gitVersion" : "1b82c812a9c0bbf6dc79d5400de9ea99e6ffa025", "compiledModules" : [], "uname" : { "sysname" : "Linux", "release" : "4.4.0-143-generic", "version" : "#169-Ubuntu SMP Thu Feb 7 07:56:38 UTC 2019", "machine" : "x86_64" }, "somap" : [ { "b" : "55B29232A000", "elfType" : 3, "buildId" : "E19C588F8809059D31942581C2F07E30CEFAD52A" }, { "b" : "7FFC490E0000", "elfType" : 3, "buildId" : "71EA263515008587FA2EC6DD7EA6B96ACA79DDDB" }, { "b" : "7FB14DAFD000", "path" : "/usr/lib/x86_64-linux-gnu/libcurl.so.4", "elfType" : 3, "buildId" : "93EA3FEB7AC8F28D7F4F59F5B94226A20A6F9023" }, { "b" : "7FB14D8E2000", "path" : "/lib/x86_64-linux-gnu/libresolv.so.2", "elfType" : 3, "buildId" : "50A923F8DAFECBCD969C8573116A38C18D0E24D5" }, { "b" : "7FB14D49D000", "path" : "/lib/x86_64-linux-gnu/libcrypto.so.1.0.0", "elfType" : 3, "buildId" : "15FFEB43278726B025F020862BF51302822A40EC" }, { "b" : "7FB14D234000", "path" : "/lib/x86_64-linux-gnu/libssl.so.1.0.0", "elfType" : 3, "buildId" : "FF69EA60EBE05F2DD689D2B26FC85A73E5FBC3A0" }, { "b" : "7FB14D030000", "path" : "/lib/x86_64-linux-gnu/libdl.so.2", "elfType" : 3, "buildId" : "37BFC3D8F7E3B022DAC7943B1A5FACD40CEBF0AD" }, { "b" : "7FB14CE28000", "path" : "/lib/x86_64-linux-gnu/librt.so.1", "elfType" : 3, "buildId" : "69143E8B39040C964D3958490535322675F15DD3" }, { "b" : "7FB14CB1F000", "path" : "/lib/x86_64-linux-gnu/libm.so.6", "elfType" : 3, "buildId" : "BAD67A84E56E73D031AE507261DA066B35949D34" }, { "b" : "7FB14C909000", "path" : "/lib/x86_64-linux-gnu/libgcc_s.so.1", "elfType" : 3, "buildId" : "68220AE2C65D65C1B6AAA12FA6765A6EC2F5F434" }, { "b" : "7FB14C6EC000", "path" : "/lib/x86_64-linux-gnu/libpthread.so.0", "elfType" : 3, "buildId" : "B17C21299099640A6D863E423D99265824E7BB16" }, { "b" : "7FB14C322000", "path" : "/lib/x86_64-linux-gnu/libc.so.6", "elfType" : 3, "buildId" : "1CA54A6E0D76188105B12E49FE6B8019BF08803A" }, { "b" : "7FB14DD6C000", "path" : "/lib64/ld-linux-x86-64.so.2", "elfType" : 3, "buildId" : "C0ADBAD6F9A33944F2B3567C078EC472A1DAE98E" }, { "b" : "7FB14C0EF000", "path" : "/usr/lib/x86_64-linux-gnu/libidn.so.11", "elfType" : 3, "buildId" : "E09D3783AD1D0BBCD3204FA01E4EF6D756E18F57" }, { "b" : "7FB14BED3000", "path" : "/usr/lib/x86_64-linux-gnu/librtmp.so.1", "elfType" : 3, "buildId" : "8D1CC1204D6B6D33BD1D2C5A2A0516A2234322CF" }, { "b" : "7FB14BC89000", "path" : "/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2", "elfType" : 3, "buildId" : "41971A4A3CCDC54A447F41DF4BD96C948C546E0E" }, { "b" : "7FB14BA7A000", "path" : "/usr/lib/x86_64-linux-gnu/liblber-2.4.so.2", "elfType" : 3, "buildId" : "5B146086EC173C299BA45F0C92E068D68CC7AD37" }, { "b" : "7FB14B829000", "path" : "/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2", "elfType" : 3, "buildId" : "D02A94DB90567C2C45F40C8565809A041FD22A55" }, { "b" : "7FB14B60F000", "path" : "/lib/x86_64-linux-gnu/libz.so.1", "elfType" : 3, "buildId" : "8D9BD4CE26E45EF16075C67D5F5EEAFD8B562832" }, { "b" : "7FB14B2DF000", "path" : "/usr/lib/x86_64-linux-gnu/libgnutls.so.30", "elfType" : 3, "buildId" : "3CE893F6D1382C2C7648DCCB06E71B1C7E0861CC" }, { "b" : "7FB14B0AC000", "path" : "/usr/lib/x86_64-linux-gnu/libhogweed.so.4", "elfType" : 3, "buildId" : "B11678F560199547DCF726384EA39153EE0DFABF" }, { "b" : "7FB14AE76000", "path" : "/usr/lib/x86_64-linux-gnu/libnettle.so.6", "elfType" : 3, "buildId" : "D6B36C5A463EE0FA84FDD6D5FD3F7726EDB90D54" }, { "b" : "7FB14ABF6000", "path" : "/usr/lib/x86_64-linux-gnu/libgmp.so.10", "elfType" : 3, "buildId" : "7B3533D5998D20EE1A1BE3F87789B69041E7F620" }, { "b" : "7FB14A924000", "path" : "/usr/lib/x86_64-linux-gnu/libkrb5.so.3", "elfType" : 3, "buildId" : "0EEF7058B0737B68BDF89E5DC604D0AC389C8BB1" }, { "b" : "7FB14A6F5000", "path" : "/usr/lib/x86_64-linux-gnu/libk5crypto.so.3", "elfType" : 3, "buildId" : "FFBA483A43D9EF73925AC116811890C037523DA1" }, { "b" : "7FB14A4F1000", "path" : "/lib/x86_64-linux-gnu/libcom_err.so.2", "elfType" : 3, "buildId" : "1E16CB57F699E215A2A8D4EFEF90883BC749B12D" }, { "b" : "7FB14A2E6000", "path" : "/usr/lib/x86_64-linux-gnu/libkrb5support.so.0", "elfType" : 3, "buildId" : "B789D8D4B4FC333405AB34387D9237F954060EA4" }, { "b" : "7FB14A0CB000", "path" : "/usr/lib/x86_64-linux-gnu/libsasl2.so.2", "elfType" : 3, "buildId" : "87783DF8A1058CD150F8886CB36340384093C18F" }, { "b" : "7FB149E8A000", "path" : "/usr/lib/x86_64-linux-gnu/libgssapi.so.3", "elfType" : 3, "buildId" : "1FE877BE52A424D0636AFD4D35BB330E41D6E0F3" }, { "b" : "7FB149C26000", "path" : "/usr/lib/x86_64-linux-gnu/libp11-kit.so.0", "elfType" : 3, "buildId" : "A0E2D03FF5CF65937F4425D4EFD4D655243809EB" }, { "b" : "7FB149A13000", "path" : "/usr/lib/x86_64-linux-gnu/libtasn1.so.6", "elfType" : 3, "buildId" : "E07E186694852D8F69459C6AB28A53F8DA3CE3B6" }, { "b" : "7FB14980F000", "path" : "/lib/x86_64-linux-gnu/libkeyutils.so.1", "elfType" : 3, "buildId" : "3364D4BF2113C4E8D17EF533867ECC99A53413D6" }, { "b" : "7FB149606000", "path" : "/usr/lib/x86_64-linux-gnu/libheimntlm.so.0", "elfType" : 3, "buildId" : "73A8EADBC85860662B24850E71D4AFBE22C33359" }, { "b" : "7FB14937C000", "path" : "/usr/lib/x86_64-linux-gnu/libkrb5.so.26", "elfType" : 3, "buildId" : "59E742306A4EA2872E061ECCE92F35FADDA75357" }, { "b" : "7FB1490DA000", "path" : "/usr/lib/x86_64-linux-gnu/libasn1.so.8", "elfType" : 3, "buildId" : "E5C159E415406AE79D21056D752BA949C408B5B1" }, { "b" : "7FB148EA7000", "path" : "/usr/lib/x86_64-linux-gnu/libhcrypto.so.4", "elfType" : 3, "buildId" : "7D15576E1F096614D360784E4A01A1F5FAF908C9" }, { "b" : "7FB148C91000", "path" : "/usr/lib/x86_64-linux-gnu/libroken.so.18", "elfType" : 3, "buildId" : "481DB33C28D88E43DA6BED65E1A7599407D4D818" }, { "b" : "7FB148A89000", "path" : "/usr/lib/x86_64-linux-gnu/libffi.so.6", "elfType" : 3, "buildId" : "9D9C958F1F4894AFEF6AECD90D1C430EA29AC34F" }, { "b" : "7FB148860000", "path" : "/usr/lib/x86_64-linux-gnu/libwind.so.0", "elfType" : 3, "buildId" : "57E25072866B2D30CF02EBE7AE623B84F96FA700" }, { "b" : "7FB148651000", "path" : "/usr/lib/x86_64-linux-gnu/libheimbase.so.1", "elfType" : 3, "buildId" : "F6F1B4E9F89B716C4A0BA5819BDFFAF4A13EFB91" }, { "b" : "7FB148406000", "path" : "/usr/lib/x86_64-linux-gnu/libhx509.so.5", "elfType" : 3, "buildId" : "C60082E3BB78D0D42868D9B359B89BF66CE5A1A7" }, { "b" : "7FB148132000", "path" : "/usr/lib/x86_64-linux-gnu/libsqlite3.so.0", "elfType" : 3, "buildId" : "C646E090F27A5CAEE45AC2BE4EFBC01E550BD27B" }, { "b" : "7FB147EFA000", "path" : "/lib/x86_64-linux-gnu/libcrypt.so.1", "elfType" : 3, "buildId" : "FD61CA7A6D603E94E5EFD5C88D8810AE104FCF40" } ] }}
       mongod(_ZN5mongo15printStackTraceERSo+0x41) [0x55b294737ce1]
       mongod(+0x240CEF9) [0x55b294736ef9]
       mongod(+0x240D3DD) [0x55b2947373dd]
       libpthread.so.0(+0x11390) [0x7fb14c6fd390]
       libc.so.6(gsignal+0x38) [0x7fb14c357428]
       libc.so.6(abort+0x16A) [0x7fb14c35902a]
       mongod(_ZN5mongo22invariantFailedWithMsgEPKcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_j+0x0) [0x55b292d460ac]
       mongod(+0x1CC308C) [0x55b293fed08c]
       mongod(+0x1CC31E9) [0x55b293fed1e9]
       mongod(_ZN5mongo4repl19TopologyCoordinator25haveNumNodesReachedOpTimeERKNS0_6OpTimeEib+0xDC) [0x55b29309144c]
       mongod(_ZN5mongo4repl26ReplicationCoordinatorImpl33_doneWaitingForReplication_inlockERKNS0_6OpTimeERKNS_19WriteConcernOptionsE+0x137) [0x55b29305e6e7]
       mongod(_ZN5mongo4repl26ReplicationCoordinatorImpl24_awaitReplication_inlockEPSt11unique_lockISt5mutexEPNS_16OperationContextERKNS0_6OpTimeERKNS_19WriteConcernOptionsE+0x33E) [0x55b29306531e]
       mongod(_ZN5mongo4repl26ReplicationCoordinatorImpl16awaitReplicationEPNS_16OperationContextERKNS0_6OpTimeERKNS_19WriteConcernOptionsE+0x134) [0x55b293065904]
       mongod(_ZN5mongo19waitForWriteConcernEPNS_16OperationContextERKNS_4repl6OpTimeERKNS_19WriteConcernOptionsEPNS_18WriteConcernResultE+0x39B) [0x55b29342b78b]
       mongod(_ZNK5mongo23ServiceEntryPointMongod5Hooks19waitForWriteConcernEPNS_16OperationContextEPKNS_17CommandInvocationERKNS_4repl6OpTimeERNS_14BSONObjBuilderE+0x103) [0x55b292de4e43]
       mongod(+0xACA3ED) [0x55b292df43ed]
       mongod(+0xACC7DB) [0x55b292df67db]
       mongod(+0xACE0F9) [0x55b292df80f9]
       mongod(_ZN5mongo23ServiceEntryPointCommon13handleRequestEPNS_16OperationContextERKNS_7MessageERKNS0_5HooksE+0x3C1) [0x55b292df9031]
       mongod(_ZN5mongo23ServiceEntryPointMongod13handleRequestEPNS_16OperationContextERKNS_7MessageE+0x3A) [0x55b292de478a]
       mongod(_ZN5mongo19ServiceStateMachine15_processMessageENS0_11ThreadGuardE+0xBA) [0x55b292df129a]
       mongod(_ZN5mongo19ServiceStateMachine15_runNextInGuardENS0_11ThreadGuardE+0x97) [0x55b292dec017]
       mongod(+0xAC5771) [0x55b292def771]
       mongod(_ZN5mongo9transport26ServiceExecutorSynchronous8scheduleESt8functionIFvvEENS0_15ServiceExecutor13ScheduleFlagsENS0_23ServiceExecutorTaskNameE+0x1A2) [0x55b293f90122]
       mongod(_ZN5mongo19ServiceStateMachine22_scheduleNextWithGuardENS0_11ThreadGuardENS_9transport15ServiceExecutor13ScheduleFlagsENS2_23ServiceExecutorTaskNameENS0_9OwnershipE+0x150) [0x55b292dea200]
       mongod(_ZN5mongo19ServiceStateMachine15_sourceCallbackENS_6StatusE+0xB05) [0x55b292ded2f5]
       mongod(_ZN5mongo19ServiceStateMachine14_sourceMessageENS0_11ThreadGuardE+0x357) [0x55b292deb757]
       mongod(_ZN5mongo19ServiceStateMachine15_runNextInGuardENS0_11ThreadGuardE+0x11D) [0x55b292dec09d]
       mongod(+0xAC5771) [0x55b292def771]
       mongod(+0x1C66685) [0x55b293f90685]
       mongod(+0x2366794) [0x55b294690794]
       libpthread.so.0(+0x76BA) [0x7fb14c6f36ba]
       libc.so.6(clone+0x6D) [0x7fb14c42941d]
      -----  END BACKTRACE  -----
      

            Assignee:
            jesse@mongodb.com A. Jesse Jiryu Davis
            Reporter:
            john.murphy@mongodb.com John Murphy
            Votes:
            0 Vote for this issue
            Watchers:
            26 Start watching this issue

              Created:
              Updated:
              Resolved:
              None
              None
              None
              None