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

Registrable::PREFIX

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Métodos incluidos en Monitoring::Publishable

#publicar_evento_cmap, #publicar_evento, #publicar_evento_sdam

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 forma parte de una API privada. Debe evitarlo 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 conjunto de réplicas al que se conectará. Puede dejarse en blanco (se acepta un valor nulo o una cadena vacía) para obtener el nombre del clúster. Si las direcciones pertenecen a diferentes conjuntos de réplicas, no se garantiza cuál se selecciona; en particular, el controlador puede elegir el nombre del conjunto de réplicas de un secundario si devuelve su respuesta antes que un principal que pertenece a un conjunto de réplicas diferente. Esta opción solo se puede especificar al instanciar una topología de conjunto de réplicas.

  • :max_election_id (BSON::ObjectId)

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

  • : max_set_version (Entero)

    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



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

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 = {}
  (servidores = 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|
        a menos que desc.¿desconocido?
          desc.Funcionalidades.check_driver_support!
        end
      end
    rescate Error::UnsupportedFeatures => e
      @compatible = false
      @compatibility_error = e
    else
      @compatible = true
    end
  end

  @tener_servidores_de_soporte_de_datos = 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?
      @tener_servidores_de_soporte_de_datos = true
      break a menos que tiempo de espera = desc.logical_session_timeout
      [tiempo de espera, (min || tiempo de espera)].min
    else
      min
    end
  end

  si Mongo::Lint.¿habilitado?
    freeze
  end
end

Detalles de los atributos de instancia

#error_de_compatibilidadExcepción (solo lectura)

Devuelve un error de compatibilidad. Si la topología es incompatible con el controlador, se genera una excepción con información sobre la incompatibilidad. Si la topología es compatible con el controlador, se devuelve nulo.

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



151
152
153
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 151

def error de compatibilidad
  @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



161
162
163
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 161

def logical_session_timeout
  @logical_session_timeout
end

#monitoringmonitoring (readonly)

Las devoluciones supervisan la supervisión.

Devuelve:

Desde:

  • 2.7.0



118
119
120
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 118

def Monitoring
  @monitoring
end

#opcionesHash (solo lectura)

Devuelve opciones Las opciones.

Devuelve:

  • (encriptada)

    opciones Las opciones.

Desde:

  • 2.7.0



105
106
107
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 105

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



136
137
138
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 136

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



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

def direcciones
  clúster.direcciones.map(Yplantar)
end

#¿compatible?verdadero|falso

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



142
143
144
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 142

def ¿compatible?
  @compatible
end

#data_bearing_servers?true | false

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve have_data_bearing_servers Si la topología tiene servidores que contienen datos, a los efectos del cálculo del tiempo de espera de la 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



168
169
170
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 168

def ¿servidores_de_datos?
  @tener_servidores_de_soporte_de_datos
end

#max_election_idBSON::ObjectId

La elección más grande jamás reportada por una primaria. Podría ser nula.

Devuelve:

  • (BSON::ObjectId)

    El ID de elección.

Desde:

  • 2.7.0



178
179
180
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 178

def id_máximo_de_elección
  opciones[:max_election_id]
end

#max_set_versionInteger

La mayor versión del conjunto reportada por un primario. Podría ser nula.

Devuelve:

  • (Número entero)

    La versión establecida.

Desde:

  • 2.7.0



188
189
190
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 188

def max_set_version
  opciones[: max_set_version]
end

#new_max_election_id(description) ⇒ Object

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.7.0



193
194
195
196
197
198
199
200
201
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 193

def nuevo_max_election_id(Descripción)
  si Descripción.id_elección &&
      (id_máximo_de_elección.nil? ||
          Descripción.id_elección > id_máximo_de_elección)
    Descripción.id_elección
  else
    id_máximo_de_elección
  end
end

#new_max_set_version(descripción) ⇒ Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.7.0



204
205
206
207
208
209
210
211
212
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 204

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



128
129
130
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 128

def nombre_del_conjunto_de_réplicas
  opciones[:nombre_del_conjunto_de_réplicas]
end

#server_hosts_match_any?(patrones) ⇒ true | false

Este método forma parte de una API privada. Debe evitarlo 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



223
224
225
226
227
228
# Archivo 'lib/mongo/cluster/topology/base.rb', línea 223

def ¿server_hosts_match_any?(patrón)
  server_descriptions.any? hacer |especificación de dirección, _desc|
    addr, _puerto = especificación de dirección.división(/:/)
    patrón.any? { |Patrón| addr.¿Fin_con?(Patrón) }
  end
end