Clase: Mongo::Cluster::Topology::Base

Hereda:
Objeto
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Incluye:
Registrable, supervisión::Publicable
Definido en:
lib/mongo/cluster/topology/base.rb

Overview

Define el comportamiento común a todas las topologías.

Desde:

  • 2.7.0

Resumen constante

Constantes incluidas desde Loggable

Loggable::PREFIX

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Métodos incluidos de Monitoring::Publishable

#publish_cmap_event, #publish_event, #publish_sdam_event

Métodos incluidos desde Registrable

#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger

Detalles del Constructor

#inicializar(opciones, supervisión, clúster) ⇒ Base

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Inicializa la topología con las opciones.

Parámetros:

  • opciones (encriptada)

    Las opciones.

  • Monitoring (supervisión)

    La supervisión.

  • clúster (clúster)

    El clúster.

Opciones Hash (options):

  • Conjunto de réplicas (Símbolo)

    Nombre del set de réplicas al que conectarse. Se puede dejar en blanco (se acepta tanto nil como la string vacía) para descubrir el nombre del clúster. Si las direcciones pertenecen a diferentes sets de réplicas, no hay garantía de qué set de réplicas se selecciona; en particular, el driver puede elegir el nombre del set de réplicas de un secundario si devuelve su respuesta antes que un primario perteneciente a un set de réplicas diferente. Esta opción solo se puede especificar al instanciar una topología de set de réplicas.

  • :max_election_id (BSON::ObjectId)

    ID máximo de elección según la especificación SDAM. Esta opción solo se puede especificar al instanciar una topología de set de réplicas.

  • : max_set_version (Integer)

    Versión máxima de set según la especificación SDAM. Esta opción sólo puede especificarse al instanciar una topología de set de réplicas.

Desde:

  • 2.7.0



54
55
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
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 54

def inicializar(opciones, Monitoring, clúster)
  opciones = validate_options(opciones, clúster)

  @options = opciones
  @monitoring = Monitoring
  @cluster = clúster
  # La lista de descripciones del servidor simplemente se fija en el momento de
  # creación de topología. Si la descripción del servidor cambia más tarde, un
  # se debe crear una nueva instancia de topología.
  @server_descriptions = {}
  clúster.servers_list.cada hacer |Server|
    @server_descriptions[Server.dirección.to_s] = Server.Descripción
  end

  si is_a?(loadBalanced)
    @compatible = true
  else
    begin
      server_descriptions.cada hacer |_address_str, desc|
        desc.Funcionalidades.check_driver_support! a menos que desc.¿desconocido?
      end
    rescate Error::UnsupportedFeatures => e
      @compatible = false
      @compatibility_error = e
    else
      @compatible = true
    end
  end

  @have_data_bearing_servers = false
  @logical_session_timeout = server_descriptions.inyectar(nulo) hacer |min, (_address_str, desc)|
    # LST solo se lee de servidores con datos
    si desc.¿portador de datos?
      @have_data_bearing_servers = true
      break a menos que tiempo de espera = desc.logical_session_timeout

      [ tiempo de espera, min || tiempo de espera ].min
    else
      min
    end
  end

  return a menos que mongo::Lint.¿habilitado?

  freeze
end

Detalles de atributo de instancias

#compatibility_errorException (solo lectura)

Devuelve compatibility_error si la topología es incompatible con el controlador, una excepción con información sobre la incompatibilidad. Si la topología es compatible con el driver, nil.

Devuelve:

  • (Exception)

    compatibility_error Si la topología es incompatible con el controlador, se producirá una excepción con información sobre la incompatibilidad. Si la topología es compatible con el driver, nil.

Desde:

  • 2.7.0



148
149
150
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 148

def compatibilidad_error
  @compatibility_error
end

#logical_session_timeoutInteger? (solo lectura)

Nota:

El valor está en minutos, a diferencia de la mayoría de las demás veces en el driver, que se devuelven en segundos.

El valor de tiempo de espera de la sesión lógica en minutos.

Devuelve:

  • (Integer, nil)

    El tiempo de espera lógico de la sesión.

Desde:

  • 2.7.0



158
159
160
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 158

def logical_session_timeout
  @logical_session_timeout
end

#monitoringmonitoring (readonly)

Las devoluciones supervisan la supervisión.

Devuelve:

Desde:

  • 2.7.0



115
116
117
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 115

def Monitoring
  @monitoring
end

#opcionesHash (solo lectura)

Devuelve opciones Las opciones.

Devuelve:

  • (encriptada)

    opciones Las opciones.

Desde:

  • 2.7.0



102
103
104
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 102

def opciones
  @options
end

#server_descriptionsHash (solo lectura)

Devuelve server_descriptions El mapa de cadenas de direcciones a descripciones del servidor, una para cada servidor en el clúster.

Devuelve:

  • (encriptada)

    server_descriptions El mapa de cadenas de direcciones a descripciones de servidores, una para cada servidor en el clúster.

Desde:

  • 2.7.0



133
134
135
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 133

def server_descriptions
  @server_descriptions
end

Detalles del método de instancia

#direccionesarreglo<String>

Devuelve direcciones Direcciones del servidor.

Devuelve:

  • (arreglo<String>)

    Direcciones Direcciones del servidor.

Desde:

  • 2.7.0



110
111
112
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 110

def direcciones
  clúster.direcciones.map(&plantar)
end

#compatible?true|false

Devuelve si la topología es compatible con el controlador.

Devuelve:

  • (verdadero|falso)

    compatible Si la topología es compatible con el driver.

Desde:

  • 2.7.0



139
140
141
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 139

def ¿compatible?
  @compatible
end

#data_bearing_servers?true | false

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve have_data_bearing_servers si la topología cuenta con servidores portadores de datos, a efectos del cálculo de tiempo de espera de sesión lógica.

Devuelve:

  • (true | false)

    have_data_bearing_servers Si la topología tiene algún servidor con datos, para los fines del cálculo del tiempo de espera de la sesión lógica.

Desde:

  • 2.7.0



165
166
167
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 165

def ¿servidores portadores de datos?
  @have_data_bearing_servers
end

#max_election_idBSON::ObjectId

El electionId más grande jamás reportado por una primaria. Puede ser nulo.

Devuelve:

  • (BSON::ObjectId)

    El ID de elección.

Desde:

  • 2.7.0



175
176
177
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 175

def id_max_election
  opciones[:max_election_id]
end

#max_set_versionInteger

El conjunto setVersion más grande jamás reportado por un primario. Puede ser nulo.

Devuelve:

  • (Número entero)

    La versión establecida.

Desde:

  • 2.7.0



185
186
187
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 185

def max_set_version
  opciones[: max_set_version]
end

#new_max_election_id(description) ⇒ Object

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.7.0



190
191
192
193
194
195
196
197
198
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 190

def nuevo_max_election_id(Descripción)
  si Descripción.election_id &&
     (id_max_election.nil? ||
         Descripción.election_id > id_max_election)
    Descripción.election_id
  else
    id_max_election
  end
end

#new_max_set_version(description) ⇒ Objeto

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.7.0



201
202
203
204
205
206
207
208
209
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 201

def nueva_versión_máxima_establecida(Descripción)
  si Descripción.set_version &&
     (max_set_version.nil? ||
         Descripción.set_version > max_set_version)
    Descripción.set_version
  else
    max_set_version
  end
end

#replica_set_nameString

Obtenga el nombre del set de réplicas configurado para esta topología.

Ejemplos:

Obtén el nombre del set de réplicas.

topology.replica_set_name

Devuelve:

  • (string)

    El nombre del set de réplicas configurado.

Desde:

  • 2.0.0



125
126
127
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 125

def nombre_conjunto_replicación
  opciones[nombre_del_conjunto_de_replicas]
end

#server_hosts_match_any?(patrones) ⇒ true | false

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Compara cada dirección de servidor con la lista de patrones.

Parámetros:

  • patrón (arreglo<String>)

    los sufijos de URL para comparar cada servidor.

Devuelve:

  • (true | false)

    si alguna de las direcciones coincide con alguno de los patrones o no.

Desde:

  • 2.7.0



220
221
222
223
224
225
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 220

def ¿server_hosts_match_any?(patrón)
  server_descriptions.any? hacer |addr_spec, _desc|
    addr, puerto = addr_spec.división(':')
    patrón.any? { |Patrón| addr.end_with?(Patrón) }
  end
end