class Mongo::ServerSelector::Nearest
Encapsulates specifications for selecting near servers given a list
of candidates.
@since 2.0.0
Public Instance Methods
name()
click to toggle source
Get the name of the server mode type.
@example Get the name of the server mode for this preference.
preference.name
@return [ Symbol ] :nearest
@since 2.0.0
# File lib/mongo/server_selector/nearest.rb, line 33 def name :nearest end
slave_ok?()
click to toggle source
Whether the slaveOk bit should be set on wire protocol messages.
I.e. whether the operation can be performed on a secondary server.
@return [ true ] true
@since 2.0.0
# File lib/mongo/server_selector/nearest.rb, line 43 def slave_ok? true end
to_mongos()
click to toggle source
Convert this server preference definition into a format appropriate
for a mongos server.
@example Convert this server preference definition into a format
for mongos. preference = Mongo::ServerSelector::Nearest.new preference.to_mongos
@return [ Hash ] The server preference formatted for a mongos server.
@since 2.0.0
# File lib/mongo/server_selector/nearest.rb, line 67 def to_mongos preference = { :mode => 'nearest' } preference.merge!({ :tags => tag_sets }) unless tag_sets.empty? preference.merge!({ maxStalenessSeconds: max_staleness }) if max_staleness preference end
Private Instance Methods
max_staleness_allowed?()
click to toggle source
# File lib/mongo/server_selector/nearest.rb, line 92 def max_staleness_allowed? true end
select(candidates)
click to toggle source
Select the near servers taking into account any defined tag sets and
local threshold between the nearest server and other servers.
@example Select nearest servers given a list of candidates.
preference = Mongo::ServerSelector::Nearest.new preference.select_server(cluster)
@return [ Array ] The nearest servers from the list of candidates.
@since 2.0.0
# File lib/mongo/server_selector/nearest.rb, line 86 def select(candidates) matching_servers = filter_stale_servers(candidates, primary(candidates).first) matching_servers = match_tag_sets(matching_servers) unless tag_sets.empty? near_servers(matching_servers) end