description: "Disconnected from primary, reject primary with stale setVersion" uri: "mongodb://a/?replicaSet=rs" phases: [ # A is elected, then B after a reconfig. { responses: [ ["a:27017", { ok: 1, ismaster: true, hosts: ["a:27017", "b:27017"], setName: "rs", setVersion: 1, electionId: {"$oid": "000000000000000000000001"}, minWireVersion: 0, maxWireVersion: 6 }], ["b:27017", { ok: 1, ismaster: true, hosts: ["a:27017", "b:27017"], setName: "rs", setVersion: 2, electionId: {"$oid": "000000000000000000000001"}, minWireVersion: 0, maxWireVersion: 6 }] ], outcome: { servers: { "a:27017": { type: "Unknown", setName: , electionId: }, "b:27017": { type: "RSPrimary", setName: "rs", setVersion: 2, electionId: {"$oid": "000000000000000000000001"} } }, topologyType: "ReplicaSetWithPrimary", logicalSessionTimeoutMinutes: null, setName: "rs", maxSetVersion: 2, maxElectionId: {"$oid": "000000000000000000000001"}, } }, # Disconnected from B. { responses: [ ["b:27017", {}] ], outcome: { servers: { "a:27017": { type: "Unknown", setName: , electionId: }, "b:27017": { type: "Unknown", setName: , electionId: } }, topologyType: "ReplicaSetNoPrimary", logicalSessionTimeoutMinutes: null, setName: "rs", maxSetVersion: 2, maxElectionId: {"$oid": "000000000000000000000001"}, } }, # A still claims to be primary but it's ignored. { responses: [ ["a:27017", { ok: 1, ismaster: true, hosts: ["a:27017", "b:27017"], setName: "rs", setVersion: 1, electionId: {"$oid": "000000000000000000000001"}, minWireVersion: 0, maxWireVersion: 6 }] ], outcome: { servers: { "a:27017": { type: "Unknown", setName: , electionId: }, "b:27017": { type: "Unknown", setName: , electionId: } }, topologyType: "ReplicaSetNoPrimary", logicalSessionTimeoutMinutes: null, setName: "rs", maxSetVersion: 2, maxElectionId: {"$oid": "000000000000000000000001"}, } }, # Now A is re-elected. { responses: [ ["a:27017", { ok: 1, ismaster: true, hosts: ["a:27017", "b:27017"], setName: "rs", setVersion: 2, electionId: {"$oid": "000000000000000000000002"}, minWireVersion: 0, maxWireVersion: 6 }] ], outcome: { servers: { "a:27017": { type: "RSPrimary", setName: "rs", setVersion: 2, electionId: {"$oid": "000000000000000000000002"} }, "b:27017": { type: "Unknown", setName: , electionId: } }, topologyType: "ReplicaSetWithPrimary", logicalSessionTimeoutMinutes: null, setName: "rs", maxSetVersion: 2, maxElectionId: {"$oid": "000000000000000000000002"}, } }, # B comes back as secondary. { responses: [ ["b:27017", { ok: 1, ismaster: false, secondary: true, hosts: ["a:27017", "b:27017"], setName: "rs", minWireVersion: 0, maxWireVersion: 6 }] ], outcome: { servers: { "a:27017": { type: "RSPrimary", setName: "rs", setVersion: 2, electionId: {"$oid": "000000000000000000000002"} }, "b:27017": { type: "RSSecondary", setName: "rs" } }, topologyType: "ReplicaSetWithPrimary", logicalSessionTimeoutMinutes: null, setName: "rs", maxSetVersion: 2, maxElectionId: {"$oid": "000000000000000000000002"}, } } ]