class Mongo::Cluster::Topology::Sharded

Defines behaviour for when a cluster is in sharded topology.

@since 2.0.0

Constants

NAME

The display name for the topology.

@since 2.0.0

Attributes

monitoring[R]

@return [ Monitoring ] monitoring The monitoring.

options[R]

@return [ Hash ] options The options.

Public Class Methods

new(options, monitoring, seeds = []) click to toggle source

Initialize the topology with the options.

@example Initialize the topology.

Sharded.new(options)

@param [ Hash ] options The options. @param [ Monitoring ] monitoring The monitoring. @param [ Array<String> ] seeds The seeds.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 99
def initialize(options, monitoring, seeds = [])
  @options = options
  @monitoring = monitoring
end

Public Instance Methods

add_hosts?(description, servers) click to toggle source

Whether a server description's hosts may be added to the cluster.

@example Check if a description's hosts may be added to the cluster.

topology.add_hosts?(description, servers)

@param [ Mongo::Server::Description ] description The description. @param [ Array<Mongo::Server> ] servers The cluster servers.

@return [ false ] A description's hosts are never added to a

sharded cluster.

@since 2.0.6

# File lib/mongo/cluster/topology/sharded.rb, line 150
def add_hosts?(description, servers); false; end
display_name() click to toggle source

Get the display name.

@example Get the display name.

Sharded.display_name

@return [ String ] The display name.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 44
def display_name
  NAME
end
elect_primary(description, servers) click to toggle source

Elect a primary server within this topology.

@example Elect a primary server.

topology.elect_primary(description, servers)

@param [ Server::Description ] description The description of the

elected primary.

@param [ Array<Server> ] servers The list of known servers to the

cluster.

@return [ Sharded ] The topology.

# File lib/mongo/cluster/topology/sharded.rb, line 59
def elect_primary(description, servers); self; end
has_readable_server?(cluster, server_selector = nil) click to toggle source

Determine if the topology would select a readable server for the provided candidates and read preference.

@example Is a readable server present?

topology.has_readable_server?(cluster, server_selector)

@param [ Cluster ] cluster The cluster. @param [ ServerSelector ] server_selector The server

selector.

@return [ true ] A Sharded cluster always has a readable server.

@since 2.4.0

# File lib/mongo/cluster/topology/sharded.rb, line 74
def has_readable_server?(cluster, server_selector = nil); true; end
has_writable_server?(cluster) click to toggle source

Determine if the topology would select a writable server for the provided candidates.

@example Is a writable server present?

topology.has_writable_server?(servers)

@param [ Cluster ] cluster The cluster.

@return [ true ] A Sharded cluster always has a writable server.

@since 2.4.0

# File lib/mongo/cluster/topology/sharded.rb, line 87
def has_writable_server?(cluster); true; end
member_discovered() click to toggle source

Notify the topology that a member was discovered.

@example Notify the cluster that a member was discovered.

topology.member_discovered

@since 2.4.0

# File lib/mongo/cluster/topology/sharded.rb, line 228
def member_discovered; end
remove_hosts?(description) click to toggle source

Whether a description can be used to remove hosts from the cluster.

@example Check if a description can be used to remove hosts from the cluster.

topology.remove_hosts?(description)

@param [ Mongo::Server::Description ] description The description.

@return [ true ] A description can always be used to remove hosts

from a sharded cluster.

@since 2.0.6

# File lib/mongo/cluster/topology/sharded.rb, line 164
def remove_hosts?(description); true; end
remove_server?(description, server) click to toggle source

Whether a specific server in the cluster can be removed, given a description.

@example Check if a specific server can be removed from the cluster.

topology.remove_server?(description, server)

@param [ Mongo::Server::Description ] description The description. @param [ Mongo::Serve ] server The server in question.

@return [ true, false ] Whether the server can be removed from the cluster.

@since 2.0.6

# File lib/mongo/cluster/topology/sharded.rb, line 177
def remove_server?(description, server)
  remove_self?(description, server) ||
    !(server.mongos? || server.unknown?)
end
replica_set?() click to toggle source

A sharded topology is not a replica set.

@example Is the topology a replica set?

Sharded.replica_set?

@return [ false ] Always false.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 112
def replica_set?; false; end
replica_set_name() click to toggle source

Sharded topologies have no replica set name.

@example Get the replica set name.

sharded.replica_set_name

@return [ nil ] Always nil.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 122
def replica_set_name; nil; end
servers(servers) click to toggle source

Select appropriate servers for this topology.

@example Select the servers.

Sharded.servers(servers)

@param [ Array<Server> ] servers The known servers.

@return [ Array<Server> ] The mongos servers.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 134
def servers(servers)
  servers.select{ |server| server.mongos? }
end
sharded?() click to toggle source

A sharded topology is sharded.

@example Is the topology sharded?

Sharded.sharded?

@return [ true ] Always true.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 190
def sharded?; true; end
single?() click to toggle source

A sharded topology is not single.

@example Is the topology single?

Sharded.single?

@return [ false ] Always false.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 200
def single?; false; end
standalone_discovered() click to toggle source

Notify the topology that a standalone was discovered.

@example Notify the topology that a standalone was discovered.

topology.standalone_discovered

@return [ Topology::Sharded ] Always returns self.

@since 2.0.6

# File lib/mongo/cluster/topology/sharded.rb, line 220
def standalone_discovered; self; end
unknown?() click to toggle source

A sharded topology is not unknown.

@example Is the topology unknown?

Sharded.unknown?

@return [ false ] Always false.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 210
def unknown?; false; end

Private Instance Methods

remove_self?(description, server) click to toggle source
# File lib/mongo/cluster/topology/sharded.rb, line 232
def remove_self?(description, server)
  description.is_server?(server) && !(description.mongos? || description.unknown?)
end