ExportXMLWordPrintableJSON

    • Type: Bug
    • Resolution: Fixed
    • Priority: Major - P3
    • Affects Version/s: None
    • Component/s: None
    • None
    • Replication
    • Fully Compatible
    • ALL
    • Storage Execution 2026-09-14
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      ReplicationCoordinatorDisaggregatedStorage::produceReplSetGetStatusResponse falsely assumes that the n'th member in the repl set config has member _id n (i.e. the first member has _id 0, the second 1, etc.).

      src/mongo/db/modules/atlas/src/disagg_storage/replication_coordinator_disagg_storage.cpp:1982-1985

      std::vector<BSONObj> membersOut;
          for (size_t i = 0; i < rsConfig.members().size(); i++) {
              auto&& member = rsConfig.members()[i];
              BSONObjBuilder bb;
              bb.append("_id", static_cast<int>(i));
      

      This is not necessarily true and is a regression from the correct ASC behavior:

      src/mongo/db/repl/topology_coordinator.cpp:2216-2222

          for (std::vector<MemberData>::const_iterator it = _memberData.begin(); it != _memberData.end();
               ++it) {
              const int itIndex = indexOfIterator(_memberData, it);
              if (itIndex == _selfIndex) {
                  // add self
                  BSONObjBuilder bb;
                  bb.append("_id", _selfConfig().getId().getData());
      

      We should get the member id from the config itself, and not the loop iteration variable.

            Assignee:
            Joseph Obaraye
            Reporter:
            Joseph Obaraye
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: