Skip to content

Commit e433783

Browse files
committed
Properly check if an address can be added to a cluster
1 parent ee1931c commit e433783

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

lib/mongo/cluster.rb

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,15 @@ def ==(other)
6666
# @since 2.0.0
6767
def add(host)
6868
address = Address.new(host)
69-
if !addresses.include?(address) || direct_connection?(address)
70-
log_debug([ "Adding #{address.to_s} to the cluster." ])
71-
addresses.push(address)
72-
server = Server.new(address, event_listeners,
73-
options.merge(slave_ok: @slave_ok))
74-
@servers.push(server)
75-
server
69+
if !addresses.include?(address)
70+
if addition_allowed?(address)
71+
log_debug([ "Adding #{address.to_s} to the cluster." ])
72+
addresses.push(address)
73+
server = Server.new(address, event_listeners,
74+
options.merge(slave_ok: @slave_ok))
75+
@servers.push(server)
76+
server
77+
end
7678
end
7779
end
7880

@@ -205,7 +207,11 @@ def self.create(client)
205207
private
206208

207209
def direct_connection?(address)
208-
@topology.single? && address.seed == @topology.seed
210+
address.seed == @topology.seed
211+
end
212+
213+
def addition_allowed?(address)
214+
!@topology.single? || direct_connection?(address)
209215
end
210216
end
211217
end

0 commit comments

Comments
 (0)