Skip to content

Commit 45f5aac

Browse files
committed
RUBY-932 Only use one lock in cluster
1 parent 732bc6d commit 45f5aac

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

lib/mongo/cluster.rb

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ 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, self, event_listeners, options)
7171
@servers_update.synchronize { @servers.push(server) }
7272
server
@@ -85,12 +85,11 @@ def add(host)
8585
# @since 2.0.0
8686
def initialize(seeds, options = {})
8787
@addresses = []
88-
@addresses_update = Mutex.new
8988
@servers = []
90-
@servers_update = Mutex.new
9189
@event_listeners = Event::Listeners.new
9290
@options = options.freeze
9391
@topology = Topology.initial(seeds, options)
92+
@update_lock = Mutex.new
9493

9594
subscribe_to(Event::DESCRIPTION_CHANGED, Event::DescriptionChanged.new(self))
9695
subscribe_to(Event::PRIMARY_ELECTED, Event::PrimaryElected.new(self))
@@ -150,11 +149,9 @@ def remove(host)
150149
log_debug([ "#{host} being removed from the cluster." ])
151150
address = Address.new(host)
152151
removed_servers = @servers.select { |s| s.address == address }
153-
@servers_update.synchronize { @servers = @servers - removed_servers }
152+
@update_lock.synchronize { @servers = @servers - removed_servers }
154153
removed_servers.each{ |server| server.disconnect! } if removed_servers
155-
@addresses_update.synchronize do
156-
@addresses.reject!{ |addr| addr == address }
157-
end
154+
@update_lock.synchronize { @addresses.reject! { |addr| addr == address } }
158155
end
159156

160157
# Force a scan of all known servers in the cluster.
@@ -256,15 +253,15 @@ def addition_allowed?(address)
256253
end
257254

258255
def servers_list
259-
@servers_update.synchronize do
256+
@update_lock.synchronize do
260257
@servers.reduce([]) do |servers, server|
261258
servers << server
262259
end
263260
end
264261
end
265262

266263
def addresses_list
267-
@addresses_update.synchronize do
264+
@update_lock.synchronize do
268265
@addresses.reduce([]) do |addresses, address|
269266
addresses << address
270267
end

0 commit comments

Comments
 (0)