description: "Primary with newer topologyVersion" uri: "mongodb://a/?replicaSet=rs" phases: [ # Primary A is discovered { responses: [ ["a:27017", { ok: 1, ismaster: true, hosts: ["a:27017"], setName: "rs", minWireVersion: 0, maxWireVersion: 9, topologyVersion: {'processId': {"$oid": "000000000000000000000001"}, "counter": {"$numberLong": "1"}} }] ], outcome: { servers: { "a:27017": { type: "RSPrimary", setName: "rs", topologyVersion: {'processId': {"$oid": "000000000000000000000001"}, "counter": {"$numberLong": "1"}} } }, topologyType: "ReplicaSetWithPrimary", logicalSessionTimeoutMinutes: null, setName: "rs", } }, # A responds with a greater topologyVersion counter, we should process the response. { responses: [ ["a:27017", { ok: 1, ismaster: true, hosts: ["a:27017", "b:27017"], setName: "rs", minWireVersion: 0, maxWireVersion: 9, topologyVersion: {'processId': {"$oid": "000000000000000000000001"}, "counter": {"$numberLong": "2"}} }] ], outcome: { servers: { "a:27017": { type: "RSPrimary", setName: "rs", topologyVersion: {'processId': {"$oid": "000000000000000000000001"}, "counter": {"$numberLong": "2"}} }, "b:27017": { type: "Unknown", topologyVersion: null } }, topologyType: "ReplicaSetWithPrimary", logicalSessionTimeoutMinutes: null, setName: "rs", } }, # A responds with a different topologyVersion processId, we should process the response. { responses: [ ["a:27017", { ok: 1, ismaster: true, hosts: ["a:27017", "c:27017"], setName: "rs", minWireVersion: 0, maxWireVersion: 9, topologyVersion: {'processId': {"$oid": "000000000000000000000002"}, "counter": {"$numberLong": "0"}} }] ], outcome: { servers: { "a:27017": { type: "RSPrimary", setName: "rs", topologyVersion: {'processId': {"$oid": "000000000000000000000002"}, "counter": {"$numberLong": "0"}} }, "c:27017": { type: "Unknown", topologyVersion: null } }, topologyType: "ReplicaSetWithPrimary", logicalSessionTimeoutMinutes: null, setName: "rs", } }, # A responds without a topologyVersion, we should process the response. { responses: [ ["a:27017", { ok: 1, ismaster: true, hosts: ["a:27017", "d:27017"], setName: "rs", minWireVersion: 0, maxWireVersion: 9 }] ], outcome: { servers: { "a:27017": { type: "RSPrimary", setName: "rs", topologyVersion: null }, "d:27017": { type: "Unknown", topologyVersion: null } }, topologyType: "ReplicaSetWithPrimary", logicalSessionTimeoutMinutes: null, setName: "rs", } }, # A responds with a topologyVersion again, we should process the response. { responses: [ ["a:27017", { ok: 1, ismaster: true, hosts: ["a:27017", "e:27017"], setName: "rs", minWireVersion: 0, maxWireVersion: 9, topologyVersion: {'processId': {"$oid": "000000000000000000000003"}, "counter": {"$numberLong": "0"}} }] ], outcome: { servers: { "a:27017": { type: "RSPrimary", setName: "rs", topologyVersion: {'processId': {"$oid": "000000000000000000000003"}, "counter": {"$numberLong": "0"}} }, "e:27017": { type: "Unknown", topologyVersion: null } }, topologyType: "ReplicaSetWithPrimary", logicalSessionTimeoutMinutes: null, setName: "rs", } }, # A responds with a network error, we should process the response. { responses: [ ["a:27017", {}] ], outcome: { servers: { "a:27017": { type: "Unknown", topologyVersion: null }, "e:27017": { type: "Unknown", topologyVersion: null } }, topologyType: "ReplicaSetNoPrimary", logicalSessionTimeoutMinutes: null, setName: "rs", } } ]