178 lines
5.1 KiB
YAML
178 lines
5.1 KiB
YAML
description: "Primaries with and without electionIds"
|
|
|
|
uri: "mongodb://a/?replicaSet=rs"
|
|
|
|
phases: [
|
|
|
|
# Primary A has no electionId.
|
|
{
|
|
responses: [
|
|
["a:27017", {
|
|
ok: 1,
|
|
helloOk: true,
|
|
isWritablePrimary: true,
|
|
hosts: ["a:27017", "b:27017", "c:27017"],
|
|
setVersion: 1,
|
|
setName: "rs",
|
|
minWireVersion: 0,
|
|
maxWireVersion: 17
|
|
}]
|
|
],
|
|
|
|
outcome: {
|
|
servers: {
|
|
"a:27017": {
|
|
type: "RSPrimary",
|
|
setName: "rs",
|
|
setVersion: 1,
|
|
electionId:
|
|
},
|
|
"b:27017": {
|
|
type: "Unknown",
|
|
setName: ,
|
|
electionId:
|
|
},
|
|
"c:27017": {
|
|
type: "Unknown",
|
|
setName: ,
|
|
electionId:
|
|
}
|
|
},
|
|
topologyType: "ReplicaSetWithPrimary",
|
|
logicalSessionTimeoutMinutes: null,
|
|
setName: "rs",
|
|
maxSetVersion: 1,
|
|
}
|
|
},
|
|
|
|
# B is elected, it has an electionId.
|
|
{
|
|
responses: [
|
|
["b:27017", {
|
|
ok: 1,
|
|
helloOk: true,
|
|
isWritablePrimary: true,
|
|
hosts: ["a:27017", "b:27017", "c:27017"],
|
|
setName: "rs",
|
|
setVersion: 1,
|
|
electionId: {"$oid": "000000000000000000000002"},
|
|
minWireVersion: 0,
|
|
maxWireVersion: 17
|
|
}]
|
|
],
|
|
|
|
outcome: {
|
|
servers: {
|
|
"a:27017": {
|
|
type: "Unknown",
|
|
setName: ,
|
|
electionId:
|
|
},
|
|
"b:27017": {
|
|
type: "RSPrimary",
|
|
setName: "rs",
|
|
setVersion: 1,
|
|
electionId: {"$oid": "000000000000000000000002"}
|
|
},
|
|
"c:27017": {
|
|
type: "Unknown",
|
|
setName: ,
|
|
electionId:
|
|
}
|
|
},
|
|
topologyType: "ReplicaSetWithPrimary",
|
|
logicalSessionTimeoutMinutes: null,
|
|
setName: "rs",
|
|
maxSetVersion: 1,
|
|
maxElectionId: {"$oid": "000000000000000000000002"},
|
|
}
|
|
},
|
|
|
|
# A still claims to be primary, no electionId, we don't trust it.
|
|
{
|
|
responses: [
|
|
["a:27017", {
|
|
ok: 1,
|
|
helloOk: true,
|
|
isWritablePrimary: true,
|
|
hosts: ["a:27017", "b:27017", "c:27017"],
|
|
setVersion: 1,
|
|
setName: "rs",
|
|
minWireVersion: 0,
|
|
maxWireVersion: 17
|
|
}]
|
|
],
|
|
outcome: {
|
|
servers: {
|
|
# A ignored for missing electionId
|
|
"a:27017": {
|
|
type: "Unknown",
|
|
setName: ,
|
|
setVersion: ,
|
|
electionId:
|
|
},
|
|
"b:27017": {
|
|
type: "RSPrimary",
|
|
setName: "rs",
|
|
setVersion: 1,
|
|
electionId: { "$oid": "000000000000000000000002" }
|
|
},
|
|
"c:27017": {
|
|
type: "Unknown",
|
|
setName: ,
|
|
electionId:
|
|
}
|
|
},
|
|
topologyType: "ReplicaSetWithPrimary",
|
|
logicalSessionTimeoutMinutes: null,
|
|
setName: "rs",
|
|
maxSetVersion: 1,
|
|
maxElectionId: {"$oid": "000000000000000000000002"},
|
|
}
|
|
},
|
|
|
|
# But we remember B's electionId, so when we finally hear from C
|
|
# claiming it is primary, we ignore it due to its outdated electionId
|
|
{
|
|
responses: [
|
|
["c:27017", {
|
|
ok: 1,
|
|
helloOk: true,
|
|
isWritablePrimary: true,
|
|
hosts: ["a:27017", "b:27017", "c:27017"],
|
|
setName: "rs",
|
|
setVersion: 1,
|
|
electionId: {"$oid": "000000000000000000000001"},
|
|
minWireVersion: 0,
|
|
maxWireVersion: 17
|
|
}]
|
|
],
|
|
outcome: {
|
|
servers: {
|
|
"a:27017": {
|
|
type: "Unknown",
|
|
setName: ,
|
|
setVersion: ,
|
|
electionId:
|
|
},
|
|
"b:27017": {
|
|
type: "RSPrimary",
|
|
setName: "rs",
|
|
setVersion: 1,
|
|
electionId: { "$oid": "000000000000000000000002" }
|
|
},
|
|
"c:27017": {
|
|
type: "Unknown",
|
|
setName: ,
|
|
electionId:
|
|
}
|
|
},
|
|
topologyType: "ReplicaSetWithPrimary",
|
|
logicalSessionTimeoutMinutes: null,
|
|
setName: "rs",
|
|
maxSetVersion: 1,
|
|
maxElectionId: {"$oid": "000000000000000000000002"},
|
|
}
|
|
}
|
|
]
|