Clase: Mongo::Server
- Hereda:
-
Objeto
- Objeto
- Mongo::Servidor
- Ampliado por:
- Reenviable
- Incluye:
- Evento::Editor, Monitoreo::Publicable
- Definido en:
- lib/mongo/server.rb,
lib/mongo/server/monitor.rb,
lib/mongo/server/connection.rb,
lib/mongo/server/description.rb,
lib/mongo/server/app_metadata.rb,
lib/mongo/server/push_monitor.rb,
lib/mongo/server/connection_base.rb,
lib/mongo/server/connection_pool.rb,
lib/mongo/server/connection_common.rb,
lib/mongo/server/monitor/connection.rb,
lib/mongo/server/pending_connection.rb,
lib/mongo/server/description/features.rb,
lib/mongo/server/monitor/app_metadata.rb,
lib/mongo/server/app_metadata/platform.rb,
lib/mongo/server/app_metadata/truncator.rb,
lib/mongo/server/push_monitor/connection.rb,
lib/mongo/server/app_metadata/environment.rb,
lib/mongo/server/connection_pool/populator.rb,
lib/mongo/server/description/load_balancer.rb,
lib/mongo/server/round_trip_time_calculator.rb,
lib/mongo/server/connection_pool/generation_manager.rb
Overview
Representa un único servidor en el lado del servidor que puede ser autónomo, parte de un set de réplicas o un mongos.
Definido en el espacio de nombres
Clases: AppMetadata, Conexión, ConnectionBase, ConnectionCommon, ConnectionPool, Descripción, Monitor, PendingConnection, PushMonitor, RoundTripTimeCalculator
Colapso delresumen constante
- TIEMPO DE ESPERA DE CONEXIÓN =
El tiempo predeterminado en segundos para que finalice un intento de conexión.
10.freeze
Constantes incluidas desde Loggable
Colapso delresumen de atributos de instancia
-
#dirección ⇒ String
solo lectura
La dirección configurada para el servidor.
-
#cluster ⇒ Cluster
solo lectura
Clúster El clúster de servidores.
-
#descripción ⇒ Servidor::Descripción
solo lectura
Descripción La descripción del servidor que actualiza el monitor.
-
#monitor ⇒ nil | Monitor
solo lectura
Monitor El monitor del servidor.
-
#monitoring ⇒ Monitoring
solo lectura
Monitoreo El monitoreo.
-
#options ⇒ Hash
solo lectura
El hash de opciones.
-
#calculadora_de_tiempo_de_ida_y_vuelta ⇒ CalculadoraDeTiempoDeIda_y_vuelta
solo lectura
privada
Objeto calculador de tiempo de ida y vuelta.
-
#scan_semaphore ⇒ Semáforo
solo lectura
privada
Semáforo para indicar que se debe solicitar un escaneo inmediato de este servidor por parte de su monitor, si hay uno en ejecución.
Atributos incluidos desde Event::Publisher
Colapso del resumen del método de instancia
-
#==(otro) ⇒ true, false
¿Este servidor es igual a otro?
- #clear_connection_pool(id_de_servicio: nulo, conexiones_de_interrupción_en_uso: falso) ⇒ Objeto privada
-
#clear_description ⇒ Objeto
privada
Borre la descripción del servidor para que se considere desconocido y se pueda desconectar de forma segura.
- #cerrar ⇒ Objeto
- #compressor ⇒ String | nil Obsoleto Obsoleto.
-
#¿conectable? ⇒ verdadero, falso
Obsoleto
Obsoleto.
Ya no es necesario con la especificación de selección de servidor.
-
#¿conectado? ⇒ verdadero|falso
privada
Si el servidor está conectado.
-
#¡desconectarse! ⇒ verdadero
Desconecte el controlador de este servidor.
-
#balanceador_de_carga_forzado? ⇒ verdadero | falso
privada
Devuelve si este servidor se ve obligado a ser un balanceador de carga.
-
#¡manejar_error_de_autenticación! ⇒ Objeto
Manejar falla de autenticación.
-
#¡Error de manejo del protocolo de enlace! ⇒ Objeto
privada
Manejar falla del protocolo de enlace.
- #frecuencia_del_latido ⇒ Objeto (también: #segundos_del_latido) Obsoleto Obsoleto.
-
#inicializar(dirección, clúster, monitoreo, escuchas_de_eventos, opciones = {}) ⇒ Servidor
constructor
privada
Crear una instancia de un nuevo objeto de servidor.
-
#inspeccionar ⇒ Cadena
Obtenga una bonita inspección del servidor impresa.
-
#last_scan ⇒ Tiempo | nulo
Last_scan La hora en que se completó el último escaneo del servidor o nulo si el servidor aún no se ha escaneado.
-
#last_scan_monotime ⇒ Float | nil
privada
Last_scan_monotime El tiempo monótono en el que se completó el último escaneo del servidor, o nulo si el servidor aún no ha sido escaneado.
-
#matches_tag_set?(tag_set) ⇒ true, false
Determinar si las etiquetas proporcionadas son un subconjunto de las etiquetas del servidor.
- #next_connection_id ⇒ Objeto privada
-
#pool ⇒ Mongo::Servidor::Grupo de conexiones
Obtén el pool de conexiones para este servidor.
-
# pool_internal ⇒ Servidor::Grupode conexiones | nulo
privada
Método de controlador interno para recuperar el grupo de conexiones para este servidor.
-
#publicar_evento_de_apertura ⇒ Objeto
privada
Publica el evento de apertura del servidor.
-
#¡reconectar! ⇒ verdadero
Reinicie el monitor del servidor.
-
#retry_reads? ⇒ Booleano
privada
Si el servidor admite reintentos de lectura modernos.
-
#retry_writes? ⇒ verdadero, falso
¿Se volverán a intentar las escrituras enviadas a este servidor?
-
#start_monitoring ⇒ Objeto
privada
Empieza la supervisión del servidor.
-
#status ⇒ String
privada
Cadena que representa el estado del servidor (por ejemplo, PRIMARIO).
- #resumen ⇒ Objeto
-
#¡desconocido!(opciones = {}) ⇒ Objeto
Marca el servidor como desconocido y publica el evento SDAM asociado (descripción del servidor modificada).
- #update_description(descripción) ⇒ Objeto privada
- #update_last_scan ⇒ Object privada
-
#con_conexión(id_global_de_conexión: nulo, contexto: nulo, &bloque) ⇒ Objeto
Ejecutar un bloque de código con una conexión que se extrae del pool del servidor y luego se vuelve a reincorporar.
Métodos incluidos desde Event::Publisher
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(dirección, clúster, monitoreo, escuchas_de_eventos, opciones = {}) ⇒ Servidor
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
El servidor nunca debe instanciarse directamente fuera de un clúster.
Instancias un nuevo objeto servidor. Iniciará la actualización en segundo plano y se suscribirá a los eventos correspondientes.
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 103 |
# Archivo 'lib/mongo/server.rb', línea 71 def inicializar(dirección, clúster, vigilancia, event_listeners, = {}) @DIRECCIÓN = dirección @cluster = clúster @monitoring = vigilancia = .dup _monitor = .borrar(:monitor) @opciones = .freeze @oyentes_de_eventos = event_listeners @connection_id_gen = Clase.Nuevo hacer incluyen ID end @scan_semaphore = Semáforo distintivo.Nuevo @calculadora_de_tiempo_de_ida_y_vuelta = Calculadora de tiempo de ida y vuelta.Nuevo @descripción = Descripción.Nuevo(dirección, {}, equilibrador de carga: !!@opciones[:balanceador de carga], equilibrador de carga de fuerza: ¿equilibrador de carga de fuerza?, ) @último_escaneo = nulo @último_escaneo_monotime = nulo a no ser que [:monitoring_io] == false @monitor = Supervisar.Nuevo(yo, event_listeners, vigilancia, .unir( app_metadata: clúster., push_monitor_app_metadata: clúster., intervalo de latidos: clúster.intervalo de latidos, )) a no ser que _monitor == false monitorización de inicio end end @conectado = true @pool_lock = Mutex.Nuevo end |
Detalles de los atributos de instancia
#dirección ⇒ Cadena (solo lectura)
Devuelve la dirección configurada para el servidor.
106 107 108 |
# Archivo 'lib/mongo/server.rb', línea 106 def dirección @DIRECCIÓN end |
#cluster ⇒ Clúster (solo lectura)
Devuelve el clúster El clúster del servidor.
109 110 111 |
# Archivo 'lib/mongo/server.rb', línea 109 def clúster @cluster end |
#descripción ⇒ Servidor::Descripción (solo lectura)
Devuelve la descripción La descripción del servidor que actualiza el monitor.
123 124 125 |
# Archivo 'lib/mongo/server.rb', línea 123 def Descripción @descripción end |
#monitor ⇒ nulo| Monitor (solo lectura)
Devuelve el monitor El monitor del servidor. nulo si el servidor se creó con la opción monitoring_io: false.
113 114 115 |
# Archivo 'lib/mongo/server.rb', línea 113 def Supervisar @monitor end |
#monitoring ⇒ Monitoring (readonly)
Monitoreo de devoluciones El monitoreo.
119 120 121 |
# Archivo 'lib/mongo/server.rb', línea 119 def vigilancia @monitoring end |
#opciones ⇒ Hash (solo lectura)
Devuelve el hash de las opciones.
116 117 118 |
# Archivo 'lib/mongo/server.rb', línea 116 def @opciones end |
# round_trip_time_calculator ⇒ Calculadora de tiempo de ida y vuelta (solo lectura)
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 el objeto calculadora de tiempo de ida y vuelta.
234 235 236 |
# Archivo 'lib/mongo/server.rb', línea 234 def calculadora de tiempo de ida y vuelta @calculadora_de_tiempo_de_ida_y_vuelta end |
#scan_semaphore ⇒ Semáforo (solo lectura)
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 Semaphore para indicar que se debe solicitar un escaneo inmediato de este servidor por parte de su monitor, si hay uno en ejecución.
230 231 232 |
# Archivo 'lib/mongo/server.rb', línea 230 def semáforo de escaneo @scan_semaphore end |
Detalles del método de instancia
#==(otro) ⇒ true, false
¿Este servidor es igual a otro?
246 247 248 249 |
# Archivo 'lib/mongo/server.rb', línea 246 def ==(otros) return false a no ser que otros.is_a?(Servidor) dirección == otros.dirección end |
#clear_connection_pool(id_de_servicio: nulo, conexiones_de_interrupción_en_uso: falso) ⇒ 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.
674 675 676 677 678 679 680 681 682 683 684 |
# Archivo 'lib/mongo/server.rb', línea 674 def borrar el grupo de conexiones(id_de_servicio: nulo, conexiones de interrupción en uso: false) @pool_lock.sincronizar hacer # Un servidor que se marca como desconocido después de cerrarse es técnicamente # incorrecto pero no altera significativamente ningún estado. # Porque históricamente el controlador permitía que los servidores estuvieran marcados # desconocido en cualquier momento, continúe haciéndolo incluso si el pool está cerrado. Si @piscina && !@piscina.¿cerrado? @piscina.¡desconectar!(id_de_servicio: id_de_servicio, conexiones de interrupción en uso: conexiones de interrupción en uso) end end end |
#clear_description ⇒ 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.
Borre la descripción del servidor para que se considere desconocido y se pueda desconectar de forma segura.
664 665 666 |
# Archivo 'lib/mongo/server.rb', línea 664 def descripción clara @descripción = Mongo::Servidor::Descripción.Nuevo(dirección, {}) end |
#cerrar ⇒ Objeto
295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 |
# Archivo 'lib/mongo/server.rb', línea 295 def cerrar Si Supervisar Supervisar.¡detener! end @conectado = false _piscina = nulo @pool_lock.sincronizar hacer _piscina, @piscina = @piscina, nulo end # TODO: cambie esto a _pool.close en RUBY-3174. # Limpiar el pool. Si el servidor no es desconocido, entonces El grupo # permanecerá listo. Detenga el subproceso de relleno en segundo plano. _piscina&.cerrar(Mantente listo: true) nulo end |
#compressor ⇒ String | nil
La compresión se negocia para cada conexión por separado.
El compresor negociado por el monitor del servidor, si lo hay.
Este atributo es nulo si aún no se ha completado ninguna verificación del servidor y si no se ha negado ninguna compresión.
181 182 183 184 185 186 187 |
# Archivo 'lib/mongo/server.rb', línea 181 def compresor Si Supervisar Supervisar.compresor else nulo end end |
#¿conectable? ⇒ verdadero, falso
Ya no es necesario con la especificación de selección de servidor.
Determinar si se puede establecer una conexión con el servidor y se le pueden enviar mensajes.
262 |
# Archivo 'lib/mongo/server.rb', línea 262 def ¿conectable?; end |
#¿conectado? ⇒ 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.
Si el servidor está conectado.
321 322 323 |
# Archivo 'lib/mongo/server.rb', línea 321 def ¿conectado? @conectado end |
#¡desconectarse! ⇒ verdadero
Desconecte el controlador de este servidor.
Desconecta todas las conexiones inactivas a este servidor en su pool de conexiones, si las hay. Detiene el rellenador del pool de conexiones, si está en ejecución. No cierra inmediatamente las conexiones que están actualmente desprotegidas (es decir, en uso); dichas conexiones se cerrarán al regresar a sus respectivos pools de conexiones. Detiene el monitor en segundo plano del servidor.
276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 |
# Archivo 'lib/mongo/server.rb', línea 276 def ¡desconectar! Si Supervisar Supervisar.¡detener! end @conectado = false # La especificación CMAP actual requiere que un grupo sea prácticamente inutilizable # si su servidor es desconocido (o, por tanto, está desconectado). # Sin embargo, cualquier operación pendiente deberá continuar hasta su finalización. # y sus conexiones deben registrarse en el pool para ser # demolido. Debido a este requisito de limpieza, no podemos simplemente # cierra el grupo y configúralo como nulo aquí, para volver a crearlo la próxima vez # hora en que se descubre el servidor. pool_internal&.borrar true end |
#balanceador_de_carga_forzado? ⇒ 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.
Devuelve si este servidor se ve obligado a ser un balanceador de carga.
130 131 132 |
# Archivo 'lib/mongo/server.rb', línea 130 def ¿equilibrador de carga de fuerza? [:conectar] == :balanceo de carga end |
#¡manejar_error_de_autenticación! ⇒ Objeto
Manejar falla de autenticación.
529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 |
# Archivo 'lib/mongo/server.rb', línea 529 def ¡Manejo de falla de autenticación! rendimiento rescate Mongo::Error::Error de tiempo de espera del socket # Posiblemente el cluster esté lento, no te des por vencido propagar rescate Mongo::Error::Error de socket, Auth::No autorizado => e # error de red sin tiempo de espera o error de autenticación, borrar el grupo y marcar el # topología como desconocida ¡desconocido!( generación: e.generación, id_de_servicio: e.id_de_servicio, monitor de parada de inserción: true, ) propagar end |
#¡Error de manejo del protocolo de enlace! ⇒ 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.
Manejar falla del protocolo de enlace.
506 507 508 509 510 511 512 513 514 515 |
# Archivo 'lib/mongo/server.rb', línea 506 def ¡Error en el manejo del apretón de manos! rendimiento rescate Mongo::Error::Error de socket, Mongo::Error::Error de tiempo de espera del socket => e ¡desconocido!( generación: e.generación, id_de_servicio: e.id_de_servicio, monitor de parada de inserción: true, ) propagar end |
#frecuencia_del_latido ⇒ Objeto También conocido como: frecuencia_del_latido_segundos
159 160 161 |
# Archivo 'lib/mongo/server.rb', línea 159 def frecuencia de latidos del corazón clúster.intervalo de latidos end |
#inspeccionar ⇒ Cadena
Obtenga una bonita inspección del servidor impresa.
356 357 358 |
# Archivo 'lib/mongo/server.rb', línea 356 def inspeccionar "#<Mongo::Server:0x#{object_id} dirección=#{dirección.host }:#{dirección.puerto} #{estado}>" end |
#last_scan ⇒ Tiempo | nulo
Devuelve last_scan La hora en que se completó el último escaneo del servidor o nil si el servidor aún no se ha escaneado.
138 139 140 141 142 143 144 |
# Archivo 'lib/mongo/server.rb', línea 138 def último_escaneo Si Descripción && !Descripción.config.¿vacío? Descripción.last_update_time else @último_escaneo end end |
#last_scan_monotime ⇒ Flotante | nulo
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 last_scan_monotime El tiempo monótono en el que se completó el último escaneo del servidor, o nulo si el servidor aún no ha sido escaneado.
149 150 151 152 153 154 155 |
# Archivo 'lib/mongo/server.rb', línea 149 def último_escaneo_monotime Si Descripción && !Descripción.config.¿vacío? Descripción.last_update_monotime else @último_escaneo_monotime end end |
#matches_tag_set?(tag_set) ⇒ true, false
Determinar si las etiquetas proporcionadas son un subconjunto de las etiquetas del servidor.
462 463 464 465 466 |
# Archivo 'lib/mongo/server.rb', línea 462 def matches_tag_set?(tag_set) tag_set.claves.¿todo? hacer |k| [k] && [k] == tag_set[k] end end |
#next_connection_id ⇒ 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.
687 688 689 |
# Archivo 'lib/mongo/server.rb', línea 687 def siguiente_id_de_conexión @connection_id_gen.siguiente_id end |
#pool ⇒ Mongo::Servidor::Grupo de conexiones
Obtén el pool de conexiones para este servidor.
425 426 427 428 429 430 431 432 433 434 435 436 |
# Archivo 'lib/mongo/server.rb', línea 425 def Piscina Si ¿desconocido? propagar Error::ServerNotUsable, dirección end @pool_lock.sincronizar hacer opta = ¿conectado? ? : .unir(populator_io: false) @piscina ||= Pool de conexiones.Nuevo(yo, opta).grifo hacer |Piscina| Piscina.listo end end end |
# pool_internal ⇒Servidor::Grupo de conexiones |nulo
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Método de controlador interno para recuperar el grupo de conexiones para este servidor.
A diferencia de pool, pool_internal no creará un grupo si aún no existe uno.
446 447 448 449 450 |
# Archivo 'lib/mongo/server.rb', línea 446 def pool_internal @pool_lock.sincronizar hacer @piscina end end |
#publicar_evento_de_apertura ⇒ 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.
Publica el evento de apertura del servidor.
341 342 343 344 345 346 |
# Archivo 'lib/mongo/server.rb', línea 341 def evento_de_apertura_publicación evento publicar_sdam( Monitoring::APERTURA DEL SERVIDOR, Monitoring::Evento::Apertura del servidor.Nuevo(dirección, clúster.topología) ) end |
#¡reconectar! ⇒ verdadero
Reinicie el monitor del servidor.
476 477 478 479 480 481 |
# Archivo 'lib/mongo/server.rb', línea 476 def ¡Reconectar! Si [:monitoring_io] != false Supervisar.¡Reanudar! end @conectado = true end |
#retry_reads? ⇒ Booleano
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Si el servidor admite reintentos de lectura modernos.
548 549 550 |
# Archivo 'lib/mongo/server.rb', línea 548 def retry_reads? !!(características.¿sesiones_habilitadas? && tiempo de espera de sesión lógica) end |
#retry_writes? ⇒ verdadero, falso
Las escrituras reintentables solo están disponibles en versiones de servidor 3.6+ y con clústeres fragmentados o conjuntos de réplicas.
Algunas condiciones de este método devuelven automáticamente "false" en topologías con balanceo de carga. Estas condiciones siempre deben ser verdaderas, ya que las topologías con balanceo de carga solo están disponibles en MongoDB 5.0+, y no en topologías independientes. Por lo tanto, podemos asumir que los reintentos de escritura están habilitados.
¿Se volverán a intentar las escrituras enviadas a este servidor?
569 570 571 |
# Archivo 'lib/mongo/server.rb', línea 569 def ¿retry_writes? !!(características.¿sesiones_habilitadas? && tiempo de espera de sesión lógica && !¿autónomo?) || ¿equilibrador de carga? end |
#start_monitoring ⇒ 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.
Empieza la supervisión del servidor.
El controlador lo utiliza internamente para agregar un servidor a un clúster y retrasar la supervisión hasta que el servidor esté en el clúster.
331 332 333 334 335 336 |
# Archivo 'lib/mongo/server.rb', línea 331 def monitorización de inicio evento_de_apertura_publicación Si [:monitoring_io] != false Supervisar.¡correr! end end |
#status ⇒ String
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 una cadena que representa el estado del servidor (por ejemplo, PRIMARIO).
363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 |
# Archivo 'lib/mongo/server.rb', línea 363 def Estado caso Cuando ¿equilibrador de carga? 'LB' Cuando ¿primario? 'PRIMARIO ' Cuando ¿secundario? 'SECUNDARIA ' Cuando ¿autónomo? 'STANDALONE' Cuando ¿árbitro? 'ARBITER' Cuando ghost? 'GHOST' Cuando ¿otro? 'OTHER' Cuando mongos? 'MONGOS' Cuando ¿desconocido? 'DESCONOCIDO ' else # Dado que el método de resumen se utiliza a menudo para la depuración, no lo genere. # una excepción en caso de que ninguno de los tipos esperados coincida nulo end end |
#resumen ⇒ Objeto
Este método es experimental y está sujeto a cambios.
394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 |
# Archivo 'lib/mongo/server.rb', línea 394 def resumen Estado = yo.Estado || '' Si nombre_del_conjunto_de_réplicas Estado += " conjunto_de_réplicas=#{nombre_del_conjunto_de_réplicas}" end a no ser que Supervisar&.¿correr? Estado += " NO-MONITORING" end Si @piscina Estado += "pool= #{@pool. summary}" end bit de dirección = Si dirección "#{dirección.host}: #{dirección.puerto}" else 'nil' end "#<Dirección del servidor=#{bit_de_dirección} #{estado}>" end |
#¡desconocido!(opciones = {}) ⇒ Objeto
Marca el servidor como desconocido y publica el evento SDAM asociado (descripción del servidor modificada).
Si la generación se pasa en las opciones, el servidor solo se marcará como desconocido si la generación pasada no es más antigua que la generación actual del grupo de conexiones del servidor.
597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 |
# Archivo 'lib/mongo/server.rb', línea 597 def ¡desconocido!( = {}) Piscina = pool_internal Si ¿equilibrador de carga? # Cuando el cliente está en una topología de equilibrio de carga, los servidores (el uno y el otro) # solo eso puede ser) comienza como un balanceador de carga y permanece como un # Balanceador de carga indefinidamente. Por lo tanto, no se marca como desconocido. # # Sin embargo, este método también borra el grupo de conexiones del servidor. # cuando este último está marcado como desconocido y esta parte debe suceder # cuando el servidor es un balanceador de carga. # # Es posible que un servidor balanceador de carga no tenga un ID de servicio, # por ejemplo, si aún no ha habido ninguna conexión exitosa a # este servidor, pero el servidor aún puede marcarse como desconocido si uno # de dichas conexiones fallaron a mitad de su establecimiento. Si id_de_servicio = [:id_de_servicio] Piscina&.¡desconectar!(id_de_servicio: id_de_servicio) end return end # NOTA: No puedes usar la navegación segura aquí porque si el grupo es nulo, finalizarás # intentando evaluar Integer < nil lo cual no es válido. Si [:generación] && Piscina && [:generación] < Piscina.generación return end Si [:versión_de_topología] && Descripción.versión_de_topología && ![:versión_de_topología].gt?(Descripción.versión_de_topología) entonces return end Si [:detener_monitor_de_empuje] Supervisar&.stop_push_monitor! end # El flujo SDAM actualizará la descripción en el servidor sin necesidad de hacerlo en el lugar # mutaciones e invocar transiciones SDAM según sea necesario. config = {} Si [:id_de_servicio] config['ID de servicio'] = [:id_de_servicio] end Si [:versión_de_topología] config['topologyVersion'] = [:versión_de_topología] end new_description = Descripción.Nuevo(dirección, config, equilibrador de carga: ¿equilibrador de carga?, equilibrador de carga de fuerza: [:conectar] == :balanceo de carga, ) clúster.ejecutar_sdam_flow(Descripción, new_description, ) end |
#update_description(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.
652 653 654 655 656 657 658 |
# Archivo 'lib/mongo/server.rb', línea 652 def update_description(Descripción) Piscina = pool_internal Si Piscina && !Descripción.¿desconocido? Piscina.listo end @descripción = Descripción end |
#update_last_scan ⇒ 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.
692 693 694 695 |
# Archivo 'lib/mongo/server.rb', línea 692 def update_last_scan @último_escaneo = Tiempo.ahora @último_escaneo_monotime = Utils.monotonic_time end |
#con_conexión(id_global_de_conexión: nulo, contexto: nulo, &bloque) ⇒ Objeto
Ejecutar un bloque de código con una conexión que se extrae del pool del servidor y luego se vuelve a reincorporar.
494 495 496 497 498 499 500 |
# Archivo 'lib/mongo/server.rb', línea 494 def con_conexión(id_global_de_conexión: nulo, context: nulo, Ybloque) Piscina.con_conexión( id_global_de_conexión: id_global_de_conexión, context: context, Ybloque ) end |