Skip to content

Commit eed32b5

Browse files
committed
Merge pull request #37 from ajdavis/SPEC-244-remember-electionId
Remember electionId
2 parents 5206bed + f3fd121 commit eed32b5

File tree

5 files changed

+136
-27
lines changed

5 files changed

+136
-27
lines changed

source/server-discovery-and-monitoring/tests/rs/equal_electionids.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ phases: [
2828
servers: {
2929
"a:27017": {
3030
type: "Unknown",
31-
setName:,
32-
electionId:,
31+
setName: ,
32+
electionId:
3333
},
3434
"b:27017": {
3535
type: "RSPrimary",

source/server-discovery-and-monitoring/tests/rs/new_primary_new_electionid.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ phases: [
2525
},
2626
"b:27017": {
2727
type: "Unknown",
28-
setName:,
28+
setName: ,
2929
electionId:
3030
}
3131
},
@@ -50,7 +50,7 @@ phases: [
5050
servers: {
5151
"a:27017": {
5252
type: "Unknown",
53-
setName:,
53+
setName: ,
5454
electionId:
5555
},
5656
"b:27017": {
@@ -79,7 +79,7 @@ phases: [
7979
servers: {
8080
"a:27017": {
8181
type: "Unknown",
82-
setName:,
82+
setName: ,
8383
electionId:
8484
},
8585
"b:27017": {

source/server-discovery-and-monitoring/tests/rs/null_election_id.json

Lines changed: 65 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"description": "Primary with no electionId, then a primary with electionId",
2+
"description": "Primaries with and without electionIds",
33
"phases": [
44
{
55
"outcome": {
@@ -13,6 +13,11 @@
1313
"electionId": null,
1414
"setName": null,
1515
"type": "Unknown"
16+
},
17+
"c:27017": {
18+
"electionId": null,
19+
"setName": null,
20+
"type": "Unknown"
1621
}
1722
},
1823
"setName": "rs",
@@ -24,7 +29,8 @@
2429
{
2530
"hosts": [
2631
"a:27017",
27-
"b:27017"
32+
"b:27017",
33+
"c:27017"
2834
],
2935
"ismaster": true,
3036
"ok": 1,
@@ -43,10 +49,15 @@
4349
},
4450
"b:27017": {
4551
"electionId": {
46-
"$oid": "000000000000000000000001"
52+
"$oid": "000000000000000000000002"
4753
},
4854
"setName": "rs",
4955
"type": "RSPrimary"
56+
},
57+
"c:27017": {
58+
"electionId": null,
59+
"setName": null,
60+
"type": "Unknown"
5061
}
5162
},
5263
"setName": "rs",
@@ -57,11 +68,12 @@
5768
"b:27017",
5869
{
5970
"electionId": {
60-
"$oid": "000000000000000000000001"
71+
"$oid": "000000000000000000000002"
6172
},
6273
"hosts": [
6374
"a:27017",
64-
"b:27017"
75+
"b:27017",
76+
"c:27017"
6577
],
6678
"ismaster": true,
6779
"ok": 1,
@@ -82,6 +94,11 @@
8294
"electionId": null,
8395
"setName": null,
8496
"type": "Unknown"
97+
},
98+
"c:27017": {
99+
"electionId": null,
100+
"setName": null,
101+
"type": "Unknown"
85102
}
86103
},
87104
"setName": "rs",
@@ -93,7 +110,49 @@
93110
{
94111
"hosts": [
95112
"a:27017",
96-
"b:27017"
113+
"b:27017",
114+
"c:27017"
115+
],
116+
"ismaster": true,
117+
"ok": 1,
118+
"setName": "rs"
119+
}
120+
]
121+
]
122+
},
123+
{
124+
"outcome": {
125+
"servers": {
126+
"a:27017": {
127+
"electionId": null,
128+
"setName": "rs",
129+
"type": "RSPrimary"
130+
},
131+
"b:27017": {
132+
"electionId": null,
133+
"setName": null,
134+
"type": "Unknown"
135+
},
136+
"c:27017": {
137+
"electionId": null,
138+
"setName": null,
139+
"type": "Unknown"
140+
}
141+
},
142+
"setName": "rs",
143+
"topologyType": "ReplicaSetWithPrimary"
144+
},
145+
"responses": [
146+
[
147+
"c:27017",
148+
{
149+
"electionId": {
150+
"$oid": "000000000000000000000001"
151+
},
152+
"hosts": [
153+
"a:27017",
154+
"b:27017",
155+
"c:27017"
97156
],
98157
"ismaster": true,
99158
"ok": 1,

source/server-discovery-and-monitoring/tests/rs/null_election_id.yml

Lines changed: 60 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
description: "Primary with no electionId, then a primary with electionId"
1+
description: "Primaries with and without electionIds"
22

33
uri: "mongodb://a/?replicaSet=rs"
44

@@ -10,7 +10,7 @@ phases: [
1010
["a:27017", {
1111
ok: 1,
1212
ismaster: true,
13-
hosts: ["a:27017", "b:27017"],
13+
hosts: ["a:27017", "b:27017", "c:27017"],
1414
setName: "rs"
1515
}]
1616
],
@@ -24,7 +24,12 @@ phases: [
2424
},
2525
"b:27017": {
2626
type: "Unknown",
27-
setName:,
27+
setName: ,
28+
electionId:
29+
},
30+
"c:27017": {
31+
type: "Unknown",
32+
setName: ,
2833
electionId:
2934
}
3035
},
@@ -39,23 +44,28 @@ phases: [
3944
["b:27017", {
4045
ok: 1,
4146
ismaster: true,
42-
hosts: ["a:27017", "b:27017"],
47+
hosts: ["a:27017", "b:27017", "c:27017"],
4348
setName: "rs",
44-
electionId: {"$oid": "000000000000000000000001"}
49+
electionId: {"$oid": "000000000000000000000002"}
4550
}]
4651
],
4752

4853
outcome: {
4954
servers: {
5055
"a:27017": {
5156
type: "Unknown",
52-
setName:,
57+
setName: ,
5358
electionId:
5459
},
5560
"b:27017": {
5661
type: "RSPrimary",
5762
setName: "rs",
58-
electionId: {"$oid": "000000000000000000000001"}
63+
electionId: {"$oid": "000000000000000000000002"}
64+
},
65+
"c:27017": {
66+
type: "Unknown",
67+
setName: ,
68+
electionId:
5969
}
6070
},
6171
topologyType: "ReplicaSetWithPrimary",
@@ -69,7 +79,7 @@ phases: [
6979
["a:27017", {
7080
ok: 1,
7181
ismaster: true,
72-
hosts: ["a:27017", "b:27017"],
82+
hosts: ["a:27017", "b:27017", "c:27017"],
7383
setName: "rs"
7484
}]
7585
],
@@ -82,13 +92,53 @@ phases: [
8292
},
8393
"b:27017": {
8494
type: "Unknown",
85-
setName:,
95+
setName: ,
96+
electionId:
97+
},
98+
"c:27017": {
99+
type: "Unknown",
100+
setName: ,
101+
electionId:
102+
}
103+
},
104+
topologyType: "ReplicaSetWithPrimary",
105+
setName: "rs",
106+
}
107+
},
108+
109+
# But we remember A's electionId, so when we finally hear from C
110+
# claiming it is primary, we ignore it due to its outdated electionId
111+
{
112+
responses: [
113+
["c:27017", {
114+
ok: 1,
115+
ismaster: true,
116+
hosts: ["a:27017", "b:27017", "c:27017"],
117+
setName: "rs",
118+
electionId: {"$oid": "000000000000000000000001"}
119+
}]
120+
],
121+
outcome: {
122+
servers: {
123+
# Still primary.
124+
"a:27017": {
125+
type: "RSPrimary",
126+
setName: "rs",
127+
electionId:
128+
},
129+
"b:27017": {
130+
type: "Unknown",
131+
setName: ,
132+
electionId:
133+
},
134+
"c:27017": {
135+
type: "Unknown",
136+
setName: ,
86137
electionId:
87138
}
88139
},
89140
topologyType: "ReplicaSetWithPrimary",
90141
setName: "rs",
91-
# But we remember old electionId.
92142
}
93143
}
94144
]

source/server-discovery-and-monitoring/tests/rs/primary_disconnect_electionid.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ phases: [
2727
servers: {
2828
"a:27017": {
2929
type: "Unknown",
30-
setName:,
30+
setName: ,
3131
electionId:
3232
},
3333
"b:27017": {
@@ -50,12 +50,12 @@ phases: [
5050
servers: {
5151
"a:27017": {
5252
type: "Unknown",
53-
setName:,
53+
setName: ,
5454
electionId:
5555
},
5656
"b:27017": {
5757
type: "Unknown",
58-
setName:,
58+
setName: ,
5959
electionId:
6060
}
6161
},
@@ -79,12 +79,12 @@ phases: [
7979
servers: {
8080
"a:27017": {
8181
type: "Unknown",
82-
setName:,
82+
setName: ,
8383
electionId:
8484
},
8585
"b:27017": {
8686
type: "Unknown",
87-
setName:,
87+
setName: ,
8888
electionId:
8989
}
9090
},
@@ -113,7 +113,7 @@ phases: [
113113
},
114114
"b:27017": {
115115
type: "Unknown",
116-
setName:,
116+
setName: ,
117117
electionId:
118118
}
119119
},

0 commit comments

Comments
 (0)