-
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.