Skip to content

Commit 823e44c

Browse files
committed
CSHARP-1434: Fix issue with recognizing hidden members as secondaries temporarily.
1 parent f55eecc commit 823e44c

File tree

9 files changed

+66
-30
lines changed

9 files changed

+66
-30
lines changed

src/MongoDB.Driver.Core.Tests/Core/Clusters/MultiServerClusterTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,6 @@ public void Should_not_add_a_new_server_from_a_secondary_when_a_primary_exists()
276276
[TestCase(ClusterConnectionMode.Sharded, ServerType.ReplicaSetArbiter)]
277277
[TestCase(ClusterConnectionMode.Sharded, ServerType.ReplicaSetGhost)]
278278
[TestCase(ClusterConnectionMode.Sharded, ServerType.ReplicaSetOther)]
279-
[TestCase(ClusterConnectionMode.Sharded, ServerType.ReplicaSetPassive)]
280279
[TestCase(ClusterConnectionMode.Sharded, ServerType.ReplicaSetPrimary)]
281280
[TestCase(ClusterConnectionMode.Sharded, ServerType.ReplicaSetSecondary)]
282281
[TestCase(ClusterConnectionMode.Sharded, ServerType.Standalone)]

src/MongoDB.Driver.Core.Tests/Core/Clusters/SingleServerClusterTests.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,12 @@ public void Initialize_should_create_and_initialize_the_server()
8585
[TestCase(ClusterConnectionMode.Standalone, ServerType.ReplicaSetArbiter)]
8686
[TestCase(ClusterConnectionMode.Standalone, ServerType.ReplicaSetGhost)]
8787
[TestCase(ClusterConnectionMode.Standalone, ServerType.ReplicaSetOther)]
88-
[TestCase(ClusterConnectionMode.Standalone, ServerType.ReplicaSetPassive)]
8988
[TestCase(ClusterConnectionMode.Standalone, ServerType.ReplicaSetPrimary)]
9089
[TestCase(ClusterConnectionMode.Standalone, ServerType.ReplicaSetSecondary)]
9190
[TestCase(ClusterConnectionMode.Standalone, ServerType.ShardRouter)]
9291
[TestCase(ClusterConnectionMode.Sharded, ServerType.ReplicaSetArbiter)]
9392
[TestCase(ClusterConnectionMode.Sharded, ServerType.ReplicaSetGhost)]
9493
[TestCase(ClusterConnectionMode.Sharded, ServerType.ReplicaSetOther)]
95-
[TestCase(ClusterConnectionMode.Sharded, ServerType.ReplicaSetPassive)]
9694
[TestCase(ClusterConnectionMode.Sharded, ServerType.ReplicaSetPrimary)]
9795
[TestCase(ClusterConnectionMode.Sharded, ServerType.ReplicaSetSecondary)]
9896
[TestCase(ClusterConnectionMode.Sharded, ServerType.Standalone)]

src/MongoDB.Driver.Core.Tests/Core/Connections/IsMasterResultTests.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,26 +147,25 @@ public void Me_should_parse_document_correctly(string json, string expectedEndPo
147147
[TestCase("{ ok: 1, isreplicaset: true, setName: \"awesome\", ismaster: true }", ServerType.ReplicaSetGhost)]
148148
[TestCase("{ ok: 1, setName: \"awesome\", ismaster: true }", ServerType.ReplicaSetPrimary)]
149149
[TestCase("{ ok: 1, setName: \"awesome\", ismaster: true, secondary: true }", ServerType.ReplicaSetPrimary)]
150-
[TestCase("{ ok: 1, setName: \"awesome\", secondary: true, arbiterOnly: true }", ServerType.ReplicaSetSecondary)]
151150
[TestCase("{ ok: 1, setName: \"awesome\", secondary: true }", ServerType.ReplicaSetSecondary)]
152-
[TestCase("{ ok: 1, setName: \"awesome\", passive: true }", ServerType.ReplicaSetPassive)]
153-
[TestCase("{ ok: 1, setName: \"awesome\", passive: true }", ServerType.ReplicaSetPassive)]
151+
[TestCase("{ ok: 1, setName: \"awesome\", secondary: true, passive: true }", ServerType.ReplicaSetSecondary)]
154152
[TestCase("{ ok: 1, setName: \"awesome\", arbiterOnly: true }", ServerType.ReplicaSetArbiter)]
155153
[TestCase("{ ok: 1, setName: \"awesome\", ismaster: false, secondary: false, arbiterOnly: false }", ServerType.ReplicaSetOther)]
156154
[TestCase("{ ok: 1, setName: \"awesome\", ismaster: false, secondary: false }", ServerType.ReplicaSetOther)]
157155
[TestCase("{ ok: 1, setName: \"awesome\", ismaster: false }", ServerType.ReplicaSetOther)]
158156
[TestCase("{ ok: 1, setName: \"awesome\", secondary: false }", ServerType.ReplicaSetOther)]
159157
[TestCase("{ ok: 1, setName: \"awesome\", arbiterOnly: false }", ServerType.ReplicaSetOther)]
160-
[TestCase("{ ok: 1, setName: \"awesome\", hidden: true }", ServerType.ReplicaSetPassive)]
158+
[TestCase("{ ok: 1, setName: \"awesome\", secondary: true, hidden: true }", ServerType.ReplicaSetOther)]
159+
[TestCase("{ ok: 1, setName: \"awesome\", secondary: true, hidden: false }", ServerType.ReplicaSetSecondary)]
161160
[TestCase("{ ok: 1, setName: \"awesome\" }", ServerType.ReplicaSetOther)]
162161
[TestCase("{ ok: 1, isreplicaset: true }", ServerType.ReplicaSetGhost)]
163162
[TestCase("{ ok: 1, isreplicaset: 1 }", ServerType.ReplicaSetGhost)]
164163
[TestCase("{ ok: 1, isreplicaset: false }", ServerType.Standalone)]
165164
[TestCase("{ ok: 1, isreplicaset: 0 }", ServerType.Standalone)]
166165
[TestCase("{ ok: 1, msg: \"isdbgrid\" }", ServerType.ShardRouter)]
167166
[TestCase("{ ok: 1, msg: \"isdbgrid\" }", ServerType.ShardRouter)]
168-
[TestCase("{ ok: 1, }", ServerType.Standalone)]
169-
[TestCase("{ ok: 0, }", ServerType.Unknown)]
167+
[TestCase("{ ok: 1 }", ServerType.Standalone)]
168+
[TestCase("{ ok: 0 }", ServerType.Unknown)]
170169
public void ServerType_should_parse_document_correctly(string json, ServerType expected)
171170
{
172171
var subject = new IsMasterResult(BsonDocument.Parse(json));

src/MongoDB.Driver.Core.Tests/Specifications/server-discovery-and-monitoring/tests/rs/rsother_discovered.json

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,46 @@
55
"outcome": {
66
"servers": {
77
"a:27017": {
8-
"setName": null,
9-
"type": "Unknown"
8+
"setName": "rs",
9+
"type": "RSOther"
1010
},
1111
"b:27017": {
1212
"setName": "rs",
1313
"type": "RSOther"
14+
},
15+
"c:27017": {
16+
"setName": null,
17+
"type": "Unknown"
18+
},
19+
"d:27017": {
20+
"setName": null,
21+
"type": "Unknown"
1422
}
1523
},
1624
"setName": "rs",
1725
"topologyType": "ReplicaSetNoPrimary"
1826
},
1927
"responses": [
28+
[
29+
"a:27017",
30+
{
31+
"hidden": true,
32+
"hosts": [
33+
"c:27017",
34+
"d:27017"
35+
],
36+
"ismaster": false,
37+
"ok": 1,
38+
"secondary": true,
39+
"setName": "rs"
40+
}
41+
],
2042
[
2143
"b:27017",
2244
{
2345
"hosts": [
24-
"a:27017",
25-
"b:27017"
46+
"c:27017",
47+
"d:27017"
2648
],
2749
"ismaster": false,
2850
"ok": 1,

src/MongoDB.Driver.Core.Tests/Specifications/server-discovery-and-monitoring/tests/rs/rsother_discovered.yml

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,21 @@ phases: [
77
{
88
responses: [
99

10+
["a:27017", {
11+
12+
ok: 1,
13+
ismaster: false,
14+
secondary: true,
15+
hidden: true,
16+
hosts: ["c:27017", "d:27017"],
17+
setName: "rs"
18+
}],
1019
["b:27017", {
1120

1221
ok: 1,
1322
ismaster: false,
1423
secondary: false,
15-
hosts: ["a:27017", "b:27017"],
24+
hosts: ["c:27017", "d:27017"],
1625
setName: "rs"
1726
}]
1827
],
@@ -23,14 +32,26 @@ phases: [
2332

2433
"a:27017": {
2534

26-
type: "Unknown",
27-
setName:
35+
type: "RSOther",
36+
setName: "rs"
2837
},
2938

3039
"b:27017": {
3140

3241
type: "RSOther",
3342
setName: "rs"
43+
},
44+
45+
"c:27017": {
46+
47+
type: "Unknown",
48+
setName:
49+
},
50+
51+
"d:27017": {
52+
53+
type: "Unknown",
54+
setName:
3455
}
3556
},
3657

src/MongoDB.Driver.Core/Core/Connections/IsMasterResult.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,13 +188,13 @@ public ServerType ServerType
188188
{
189189
return ServerType.ReplicaSetPrimary;
190190
}
191-
if (_wrapped.GetValue("secondary", false).ToBoolean())
191+
if (_wrapped.GetValue("hidden", false).ToBoolean())
192192
{
193-
return ServerType.ReplicaSetSecondary;
193+
return ServerType.ReplicaSetOther;
194194
}
195-
if (_wrapped.GetValue("passive", false).ToBoolean() || _wrapped.GetValue("hidden", false).ToBoolean())
195+
if (_wrapped.GetValue("secondary", false).ToBoolean())
196196
{
197-
return ServerType.ReplicaSetPassive;
197+
return ServerType.ReplicaSetSecondary;
198198
}
199199
if (_wrapped.GetValue("arbiterOnly", false).ToBoolean())
200200
{

src/MongoDB.Driver.Core/Core/Servers/ServerType.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,9 @@ public enum ServerType
5353
ReplicaSetSecondary,
5454

5555
/// <summary>
56-
/// The server is a replica set passive member.
56+
/// Use ReplicaSetSecondary instead.
5757
/// </summary>
58+
[Obsolete("Passives are treated the same as secondaries.")]
5859
ReplicaSetPassive,
5960

6061
/// <summary>
@@ -114,14 +115,13 @@ public static bool IsWritable(this ServerType serverType)
114115
/// <returns>The cluster type.</returns>
115116
public static ClusterType ToClusterType(this ServerType serverType)
116117
{
117-
switch(serverType)
118+
switch (serverType)
118119
{
119120
case ServerType.ReplicaSetPrimary:
120121
case ServerType.ReplicaSetSecondary:
121122
case ServerType.ReplicaSetArbiter:
122123
case ServerType.ReplicaSetOther:
123124
case ServerType.ReplicaSetGhost:
124-
case ServerType.ReplicaSetPassive:
125125
return ClusterType.ReplicaSet;
126126
case ServerType.ShardRouter:
127127
return ClusterType.Sharded;

src/MongoDB.Driver.Legacy/Communication/MongoServerInstance.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ public MongoServerInstanceType InstanceType
8080
switch (serverDescription.Type)
8181
{
8282
case ServerType.ReplicaSetArbiter:
83-
case ServerType.ReplicaSetPassive:
8483
case ServerType.ReplicaSetPrimary:
8584
case ServerType.ReplicaSetSecondary:
8685
case ServerType.ReplicaSetOther:
@@ -133,12 +132,12 @@ public bool IsArbiter
133132
/// <summary>
134133
/// Gets a value indicating whether this server instance is a passive instance.
135134
/// </summary>
135+
[Obsolete("Passives are treated the same as secondaries.")]
136136
public bool IsPassive
137137
{
138138
get
139139
{
140-
var serverDescription = GetServerDescription();
141-
return serverDescription.Type == ServerType.ReplicaSetPassive;
140+
return false;
142141
}
143142
}
144143

src/MongoDB.Driver.Legacy/MongoServer.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -238,14 +238,12 @@ public virtual MongoServerInstance[] Instances
238238
/// <summary>
239239
/// Gets the passive instances.
240240
/// </summary>
241+
[Obsolete("Passives are treated the same as secondaries.")]
241242
public virtual MongoServerInstance[] Passives
242243
{
243244
get
244245
{
245-
lock (_serverLock)
246-
{
247-
return _serverInstances.Where(i => i.IsPassive).ToArray();
248-
}
246+
return new MongoServerInstance[0];
249247
}
250248
}
251249

0 commit comments

Comments
 (0)