Base — Documentation by YARD 0.9.37 (original) (raw)
Class: Mongo::Cluster::Topology::Base
Overview
Defines behavior common to all topologies.
Constant Summary
Constants included from Loggable
Instance Attribute Summary collapse
- #compatibility_error ⇒ Exception readonly
Compatibility_error If topology is incompatible with the driver, an exception with information regarding the incompatibility. - #logical_session_timeout ⇒ Integer? readonly
The logical session timeout value in minutes. - #monitoring ⇒ monitoring readonly
Monitoring the monitoring. - #options ⇒ Hash readonly
Options The options. - #server_descriptions ⇒ Hash readonly
Server_descriptions The map of address strings to server descriptions, one for each server in the cluster.
Instance Method Summarycollapse
- #addresses ⇒ Array
Addresses Server addresses. - #compatible? ⇒ true|false
Compatible Whether topology is compatible with the driver. - #data_bearing_servers? ⇒ true | false private
Have_data_bearing_servers Whether the topology has any data bearing servers, for the purposes of logical session timeout calculation. - #initialize(options, monitoring, cluster) ⇒ Base constructor private
Initialize the topology with the options. - #max_election_id ⇒ BSON::ObjectId
The largest electionId ever reported by a primary. - #max_set_version ⇒ Integer
The largest setVersion ever reported by a primary. - #new_max_election_id(description) ⇒ Object private
- #new_max_set_version(description) ⇒ Object private
- #replica_set_name ⇒ String
Get the replica set name configured for this topology. - #server_hosts_match_any?(patterns) ⇒ true | false private
Compares each server address against the list of patterns.
Methods included from Monitoring::Publishable
#publish_cmap_event, #publish_event, #publish_sdam_event
Methods included from Loggable
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
Constructor Details
#initialize(options, monitoring, cluster) ⇒ Base
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Initialize the topology with the options.
| 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | # File 'lib/mongo/cluster/topology/base.rb', line 56 def initialize(options, monitoring, cluster) options = validate_options(options, cluster) @options = options @monitoring = monitoring @cluster = cluster @server_descriptions = {} (servers = cluster.servers_list).each do |server| @server_descriptions[server.address.to_s] = server.description end if is_a?(LoadBalanced) @compatible = true else begin server_descriptions.each do | address_str, desc| unless desc.unknown? desc.features.check_driver_support! end end rescue Error::UnsupportedFeatures => e @compatible = false @compatibility_error = e else @compatible = true end end @have_data_bearing_servers = false @logical_session_timeout = server_descriptions.inject(nil) do | min, (address_str, desc)| if desc.data_bearing? @have_data_bearing_servers = true break unless timeout = desc.logical_session_timeout [timeout, (min | | timeout)].min else min end end if Mongo::Lint.enabled? freeze end end | | ----------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
Instance Attribute Details
#compatibility_error ⇒ Exception
Returns compatibility_error If topology is incompatible with the driver, an exception with information regarding the incompatibility. If topology is compatible with the driver, nil.
151 152 153 | # File 'lib/mongo/cluster/topology/base.rb', line 151 def compatibility_error @compatibility_error end |
---|
#logical_session_timeout ⇒ Integer?
Note:
The value is in minutes, unlike most other times in the driver which are returned in seconds.
The logical session timeout value in minutes.
161 162 163 | # File 'lib/mongo/cluster/topology/base.rb', line 161 def logical_session_timeout @logical_session_timeout end |
---|
#monitoring ⇒ monitoring
Returns monitoring the monitoring.
118 119 120 | # File 'lib/mongo/cluster/topology/base.rb', line 118 def monitoring @monitoring end |
---|
#options ⇒ Hash
Returns options The options.
105 106 107 | # File 'lib/mongo/cluster/topology/base.rb', line 105 def options @options end |
---|
#server_descriptions ⇒ Hash
Returns server_descriptions The map of address strings to server descriptions, one for each server in the cluster.
136 137 138 | # File 'lib/mongo/cluster/topology/base.rb', line 136 def server_descriptions @server_descriptions end |
---|
Instance Method Details
#addresses ⇒ Array
Returns addresses Server addresses.
113 114 115 | # File 'lib/mongo/cluster/topology/base.rb', line 113 def addresses cluster.addresses.map(&:seed) end |
---|
#compatible? ⇒ true|false
Returns compatible Whether topology is compatible with the driver.
142 143 144 | # File 'lib/mongo/cluster/topology/base.rb', line 142 def compatible? @compatible end |
---|
#data_bearing_servers? ⇒ true | false
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns have_data_bearing_servers Whether the topology has any data bearing servers, for the purposes of logical session timeout calculation.
168 169 170 | # File 'lib/mongo/cluster/topology/base.rb', line 168 def data_bearing_servers? @have_data_bearing_servers end |
---|
#max_election_id ⇒ BSON::ObjectId
The largest electionId ever reported by a primary. May be nil.
178 179 180 | # File 'lib/mongo/cluster/topology/base.rb', line 178 def max_election_id options[:max_election_id] end |
---|
#max_set_version ⇒ Integer
The largest setVersion ever reported by a primary. May be nil.
188 189 190 | # File 'lib/mongo/cluster/topology/base.rb', line 188 def max_set_version options[:max_set_version] end |
---|
#new_max_election_id(description) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
| 193 194 195 196 197 198 199 200 201 | # File 'lib/mongo/cluster/topology/base.rb', line 193 def new_max_election_id(description) if description.election_id && (max_election_id.nil? || description.election_id > max_election_id) description.election_id else max_election_id end end | | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
#new_max_set_version(description) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
| 204 205 206 207 208 209 210 211 212 | # File 'lib/mongo/cluster/topology/base.rb', line 204 def new_max_set_version(description) if description.set_version && (max_set_version.nil? || description.set_version > max_set_version) description.set_version else max_set_version end end | | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
#replica_set_name ⇒ String
Get the replica set name configured for this topology.
128 129 130 | # File 'lib/mongo/cluster/topology/base.rb', line 128 def replica_set_name options[:replica_set_name] end |
---|
#server_hosts_match_any?(patterns) ⇒ true | false
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Compares each server address against the list of patterns.
| 223 224 225 226 227 228 | # File 'lib/mongo/cluster/topology/base.rb', line 223 def server_hosts_match_any?(patterns) server_descriptions.any? do |addr_spec, _desc| addr, _port = addr_spec.split(/:/) patterns.any? { | pattern| addr.end_with?(pattern) } end end | | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------- |