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

Hereda:
Objeto
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Incluye:
Registrable, Monitoreo::Publicable
Definido en:
lib/mongo/cluster/topología/base.rb

Overview

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

Desde:

  • 2.7.0

Subclases conocidas directas

LoadBalanced, ReplicaSetNoPrimary, Fragmentado, Único, Desconocido

Resumen constante

Constantes incluidas desde Loggable

Registrable::PREFIX

Colapso delresumen de atributos de instancia

Colapso del resumen del método de instancia

Métodos incluidos en Monitoring::Publishable

#publicar_evento_cmap, #publicar_evento, #publicar_evento_sdam

Métodos incluidos en Loggable

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

Detalles del constructor

#inicializar(opciones, monitoreo, cluster) ⇒ 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.

Inicialice la topología con las opciones.

Parámetros:

  • opciones (Hash)

    Las opciones.

  • vigilancia (Monitoreo)

    El seguimiento.

  • clúster (Grupo) -

    El cluster.

Opciones Hash(opciones):

  • :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.

  • :id_máximo_de_elección (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.

  • :versión_máxima_del_conjunto (Entero)

    Versión máxima del conjunto según la especificación SDAM. Esta opción solo se puede especificar al instanciar una topología de conjunto 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, vigilancia, clúster)
  opciones = validate_options(opciones, clúster)

  @opciones = opciones
  @monitoring = vigilancia
  @cluster = clúster
  # La lista de descripciones de servidores simplemente se fija en el momento de
  # Creación de topología. Si la descripción del servidor cambia más adelante,
  # Se debe crear una nueva instancia de topología.
  @server_descriptions = {}
  (servidores = clúster.servers_list).cada hacer |Server|
    @server_descriptions[Server.dirección.a_s] = Server.Descripción
  end

  Si is_a?(Balance de carga)
    @compatible = true
  else
    begin
      descripciones del servidor.cada hacer |dirección_str, desc|
        a no ser que desc.¿desconocido?
          desc.características.¡Compruebe el soporte del controlador!
        end
      end
    rescate Error::UnsupportedFeatures => e
      @compatible = false
      @error_de_compatibilidad = e
    else
      @compatible = true
    end
  end

  @tener_servidores_de_soporte_de_datos = false
  @logical_session_timeout = descripciones del servidor.inyectar(nulo) hacer |min, (dirección_str, desc)|
    # LST solo se lee desde servidores que contienen datos
    Si desc.¿datos_de_portador?
      @tener_servidores_de_soporte_de_datos = true
      break a no ser que tiempo de espera = desc.tiempo de espera de sesión lógica
      [tiempo de espera, (min || tiempo de espera)].min
    else
      min
    end
  end

  Si Mongo::Lint.¿activado?
    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:

  • (Excepción) -

    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 genera un error nulo.

Desde:

  • 2.7.0



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

def error de compatibilidad
  @error_de_compatibilidad
end

#logical_session_timeoutInteger? (solo lectura)

Nota:

El valor está en minutos, a diferencia de la mayoría de los otros tiempos en el controlador que se devuelven en segundos.

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

Devuelve:

  • (Integer, nil)

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

Desde:

  • 2.7.0



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

def tiempo de espera de sesión lógica
  @logical_session_timeout
end

#monitoringmonitoring (readonly)

Devuelve el seguimiento del seguimiento.

Devuelve:

Desde:

  • 2.7.0



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

def vigilancia
  @monitoring
end

#opcionesHash (solo lectura)

Devuelve opciones Las opciones.

Devuelve:

  • (Hash)

    opciones Las opciones.

Desde:

  • 2.7.0



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

def opciones
  @opciones
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:

  • (Hash)

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

Desde:

  • 2.7.0



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

def descripciones del servidor
  @server_descriptions
end

Detalles del método de instancia

#direccionesArray<String>

Devuelve direcciones Direcciones del servidor.

Devuelve:

  • (Matriz<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(Y:semilla)
end

#¿compatible?verdadero|falso

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

Devuelve:

  • (verdadero|falso)

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

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:

  • (verdadero | falso)

    have_data_bearing_servers Si la topología tiene servidores portadores de datos, a los efectos 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)

    La identificación electoral.

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[:id_máximo_de_elección]
end

#max_set_versionInteger

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

Devuelve:

  • (Entero)

    La versión establecida.

Desde:

  • 2.7.0



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

def versión_máxima_del_conjunto
  opciones[:versión_máxima_del_conjunto]
end

#new_max_election_id(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



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

def nuevo_id_máximo_de_elección(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_del_conjunto(Descripción)
  Si Descripción.establecer_versión &&
      (versión_máxima_del_conjunto.nil? ||
          Descripción.establecer_versión > versión_máxima_del_conjunto)
    Descripción.establecer_versión
  else
    versión_máxima_del_conjunto
  end
end

#nombre_del_conjunto_de_réplicasCadena

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

Ejemplos:

Obtener el nombre del conjunto de réplicas.

topology.replica_set_name

Devuelve:

  • (Cadena) -

    El nombre del conjunto 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) ⇒ verdadero | falso

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:

  • patrones (Matriz<String>)

    Los sufijos de URL con los que se compara cada servidor.

Devuelve:

  • (verdadero | falso)

    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 ¿Los hosts del servidor coinciden con alguno?(patrones)
  descripciones del servidor.any? hacer |especificación de dirección, _desc|
    addr, _puerto = especificación de dirección.división(/:/)
    patrones.any? { |patrón| addr.¿Fin_con?(patrón) }
  end
end