Skip to content

Commit a3add96

Browse files
jonhymanp
authored andcommitted
Fix RUBY-2030 Client/Cluster construction fails when duplicate seed addresses are provided (#1594)
* Ensure that a duplicate host entry won't prevent a Cluster from instantiating. * Some pull request updates for tests. * Disconnect monitoring threads. * Use register_cluster.
1 parent 922a362 commit a3add96

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

lib/mongo/cluster.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ def initialize(seeds, monitoring, options = Options::Redacted.new)
105105
options[:cleanup] = false
106106
end
107107

108+
seeds = seeds.uniq
109+
108110
@servers = []
109111
@monitoring = monitoring
110112
@event_listeners = Event::Listeners.new

spec/mongo/cluster_spec.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,25 @@
1919

2020
let(:cluster) { cluster_without_io }
2121

22+
describe 'initialize' do
23+
24+
context 'when there are duplicate addresses' do
25+
26+
let(:addresses) do
27+
SpecConfig.instance.addresses + SpecConfig.instance.addresses
28+
end
29+
let(:cluster_with_dup_addresses) do
30+
register_cluster(
31+
described_class.new(addresses, monitoring, SpecConfig.instance.test_options))
32+
end
33+
34+
it 'does not raise an exception' do
35+
expect { cluster_with_dup_addresses }.not_to raise_error
36+
end
37+
end
38+
39+
end
40+
2241
describe '#==' do
2342

2443
context 'when the other is a cluster' do

0 commit comments

Comments
 (0)