Skip to content

Commit d633fae

Browse files
committed
RUBY-932 Only use one lock in cluster
1 parent c142c88 commit d633fae

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

lib/mongo/cluster.rb

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ def add(host)
6666
if !addresses.include?(address)
6767
if addition_allowed?(address)
6868
log_debug([ "Adding #{address.to_s} to the cluster." ])
69-
@addresses_update.synchronize { @addresses.push(address) }
69+
@update_lock.synchronize { @addresses.push(address) }
7070
server = Server.new(address, event_listeners,
7171
options.merge(slave_ok: @slave_ok))
72-
@servers_update.synchronize { @servers.push(server) }
72+
@update_lock.synchronize { @servers.push(server) }
7373
server
7474
end
7575
end
@@ -86,13 +86,12 @@ def add(host)
8686
# @since 2.0.0
8787
def initialize(seeds, options = {})
8888
@addresses = []
89-
@addresses_update = Mutex.new
9089
@servers = []
91-
@servers_update = Mutex.new
9290
@event_listeners = Event::Listeners.new
9391
@options = options.freeze
9492
@topology = Topology.initial(seeds, options)
9593
@slave_ok = @topology.single? unless options[:read]
94+
@update_lock = Mutex.new
9695

9796
subscribe_to(Event::DESCRIPTION_CHANGED, Event::DescriptionChanged.new(self))
9897
subscribe_to(Event::PRIMARY_ELECTED, Event::PrimaryElected.new(self))
@@ -152,11 +151,9 @@ def remove(host)
152151
log_debug([ "#{host} being removed from the cluster." ])
153152
address = Address.new(host)
154153
removed_servers = @servers.select { |s| s.address == address }
155-
@servers_update.synchronize { @servers = @servers - removed_servers }
154+
@update_lock.synchronize { @servers = @servers - removed_servers }
156155
removed_servers.each{ |server| server.disconnect! } if removed_servers
157-
@addresses_update.synchronize do
158-
@addresses.reject!{ |addr| addr == address }
159-
end
156+
@update_lock.synchronize { @addresses.reject! { |addr| addr == address } }
160157
end
161158

162159
# Force a scan of all known servers in the cluster.
@@ -258,15 +255,15 @@ def addition_allowed?(address)
258255
end
259256

260257
def servers_list
261-
@servers_update.synchronize do
258+
@update_lock.synchronize do
262259
@servers.reduce([]) do |servers, server|
263260
servers << server
264261
end
265262
end
266263
end
267264

268265
def addresses_list
269-
@addresses_update.synchronize do
266+
@update_lock.synchronize do
270267
@addresses.reduce([]) do |addresses, address|
271268
addresses << address
272269
end

0 commit comments

Comments
 (0)