Skip to content

Commit 10019f5

Browse files
committed
Merge pull request #648 from estolfo/RUBY-959-mongos-disconnect
RUBY-959 Don't remove an unknown mongos from the cluster
2 parents c608e00 + 21c8f38 commit 10019f5

File tree

3 files changed

+106
-1
lines changed

3 files changed

+106
-1
lines changed

lib/mongo/cluster/topology/sharded.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ def standalone_discovered; self; end
184184
private
185185

186186
def remove_self?(description, server)
187-
description.is_server?(server) && !description.mongos?
187+
description.is_server?(server) && !(description.mongos? || description.unknown?)
188188
end
189189
end
190190
end

spec/mongo/cluster/topology/sharded_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
let(:description) do
107107
double('description').tap do |d|
108108
allow(d).to receive(:mongos?).and_return(false)
109+
allow(d).to receive(:unknown?).and_return(false)
109110
allow(d).to receive(:is_server?).and_return(true)
110111
end
111112
end
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
description: "Mongos disconnect"
2+
3+
uri: "mongodb://a,b"
4+
5+
phases: [
6+
7+
{
8+
responses: [
9+
10+
["a:27017", {
11+
12+
ok: 1,
13+
ismaster: true,
14+
msg: "isdbgrid"
15+
}],
16+
17+
["b:27017", {
18+
19+
ok: 1,
20+
ismaster: true,
21+
msg: "isdbgrid"
22+
}]
23+
],
24+
25+
outcome: {
26+
27+
servers: {
28+
29+
"a:27017": {
30+
31+
type: "Mongos",
32+
setName:
33+
},
34+
35+
"b:27017": {
36+
37+
type: "Mongos",
38+
setName:
39+
}
40+
},
41+
42+
topologyType: "Sharded",
43+
setName:
44+
}
45+
},
46+
{
47+
responses: [
48+
["a:27017", {}], # Hangup.
49+
],
50+
51+
outcome: {
52+
53+
servers: {
54+
55+
"a:27017": {
56+
57+
type: "Unknown",
58+
setName:
59+
},
60+
61+
"b:27017": {
62+
63+
type: "Mongos",
64+
setName:
65+
}
66+
},
67+
68+
topologyType: "Sharded",
69+
setName:
70+
}
71+
},
72+
{
73+
responses: [
74+
# Back in action.
75+
["a:27017", {
76+
77+
ok: 1,
78+
ismaster: true,
79+
msg: "isdbgrid"
80+
}],
81+
],
82+
83+
outcome: {
84+
85+
servers: {
86+
87+
"a:27017": {
88+
89+
type: "Mongos",
90+
setName:
91+
},
92+
93+
"b:27017": {
94+
95+
type: "Mongos",
96+
setName:
97+
}
98+
},
99+
100+
topologyType: "Sharded",
101+
setName:
102+
}
103+
}
104+
]

0 commit comments

Comments
 (0)