Clase: Mongo::Server
- Hereda:
-
Objeto
- Objeto
- Mongo::Servidor
- Ampliado por:
- Reenviable
- Incluye:
- evento::Publisher, supervisión::Publishable
- 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 bajo Namespace
Clases: AppMetadata, Conexión, ConnectionBase, ConnectionCommon, ConnectionPool, Descripción, Monitor, PendingConnection, PushMonitor, RoundTripTimeCalculator
Colapso delresumen constante
- TIEMPO DE ESPERA DE CONEXIÓN =
El tiempo por defecto en segundos para agotar el tiempo de espera de un intento de conexión.
10.freeze
Constantes incluidas desde Loggable
Resumen de atributos de la instancia colapsar
-
#dirección ⇒ String
Solo lectura
La dirección configurada para el servidor.
-
#cluster ⇒ Cluster
Solo lectura
Cluster El clúster del servidor.
-
#descripción ⇒ Servidor::Descripción
Solo lectura
Descripción La descripción del servidor que el monitor actualiza.
-
#monitor ⇒ nil | Monitor
Solo lectura
Supervisar El monitor del servidor.
-
#monitoring ⇒ Monitoring
Solo lectura
Supervisión La supervisión.
-
#options ⇒ Hash
Solo lectura
El hash de opciones.
-
#calculadora_de_tiempo_de_ida_y_vuelta ⇒ CalculadoraDeTiempoDeIda_y_vuelta
Solo lectura
privado
Objeto calculador del tiempo de ida y vuelta.
-
#scan_semaphore ⇒ Semáforo
Solo lectura
privado
Semáforo para señalar la solicitud de un escaneo inmediato de este servidor por su supervisor, si hay uno en ejecución.
Atributos incluidos de Event::Publisher
Resumen del método de instancia colapsar
-
#==(otro) ⇒ true, false
¿Este servidor es igual a otro?.
- #clear_connection_pool(service_id: nil, interrupt_in_use_connections: false) ⇒ objeto privado
-
#clear_description ⇒ Object
privado
Borra la descripción de los servidores para que se considere desconocida y pueda desconectarse de manera segura.
- #close ⇒ objeto
- #compressor ⇒ String | nil Obsoleto Obsoleto.
-
#¿se puede conectar? ⇒ verdadero, falso
Obsoleto
Obsoleto.
Ya no es necesario con la especificación de Selección de Servidor.
-
#¿conectado? ⇒ verdadero|falso
privado
Si el servidor está conectado.
-
#desconéctese ⇒ verdadero
Desconecte el controlador de este servidor.
-
#balanceador_de_carga_forzado? ⇒ verdadero | falso
privado
Devuelve si este servidor se ve obligado a ser un balanceador de carga.
-
#handle_auth_failure! ⇒ Object
Manejar falla de autenticación.
-
#¡Error de manejo del protocolo de enlace! ⇒ Objeto
privado
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
privado
Instancia un nuevo objeto de servidor.
-
#inspeccionar ⇒ Cadena
Consigue una inspección del servidor con una impresión bonita.
-
#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 ha sido escaneado.
-
#last_scan_monotime ⇒ Float | nil
privado
Last_scan_monotime El momento monotonico cuando se completó la última exploración del servidor, o nulo si aún no se ha explorado el servidor.
-
#matches_tag_set?(tag_set) ⇒ true, false
Determina si las etiquetas proporcionadas son un subconjunto de las etiquetas del servidor.
- #next_connection_id ⇒ Objeto privado
-
#pool ⇒ Mongo::Servidor::Grupo de conexiones
Obtén el pool de conexiones para este servidor.
-
#pool_internal ⇒ Server::ConnectionPool | nulo
privado
Método interno del driver para recuperar el pool de conexiones de este servidor.
-
#publish_opening_event ⇒ Object
privado
Publica el evento de apertura del servidor.
-
#¡reconectar! ⇒ verdadero
Reinicie el monitor del servidor.
-
#reintentar_lecturas? ⇒ booleano
privado
Si el servidor admite reintentos de lectura modernos.
-
#retry_writes? ⇒ verdadero, falso
¿Se reintentarán las operaciones de guardar enviadas a este servidor?
-
#start_monitoring ⇒ Objeto
privado
Empieza la supervisión del servidor.
-
#status ⇒ String
privado
string que representa el estado del servidor (por ejemplo, primario/a).
- #resumen ⇒ Objeto
-
#¡desconocido!(opciones = {}) ⇒ Objeto
Marca el servidor como desconocido y publica el evento SDAM asociado (cambio en la descripción del servidor).
- #update_description(descripción) ⇒ Objeto privado
- #update_last_scan ⇒ Object privado
-
#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 desde Registrable
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
Detalles del constructor
#inicializar(dirección, clúster, supervisión, event_listeners, 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, Monitoring, event_listeners, = {}) @address = dirección @cluster = clúster @monitoring = Monitoring = .dup _monitor = .borrar(supervisar) @options = .freeze @event_listeners = event_listeners @connection_id_gen = clase.Nuevo hacer incluyen ID end @scan_semaphore = DistinguishingSemaphore.Nuevo @round_trip_time_calculator = RoundTripTimeCalculator.Nuevo @descripción = Descripción.Nuevo(dirección, {}, equilibrador de carga: !!@options[balanceador_de_carga], force_load_balancer: forzar_balanceador_de_carga?, ) @last_scan = nulo @último_escaneo_monotime = nulo a menos que [:monitoring_io] == false @monitor = Supervisar.Nuevo(sí mismo, event_listeners, Monitoring, .fusionar( app_metadata: clúster., push_monitor_app_metadata: clúster., intervalo_heartbeat: clúster.intervalo_latido, )) a menos que _monitor == false Comenzar monitoreo end end @conectado = true @pool_lock = Mutex (exclusión mutua).Nuevo end |
Detalles de los atributos de instancia
#dirección ⇒ String (solo lectura)
Devuelve la dirección configurada para el servidor.
106 107 108 |
# Archivo 'lib/mongo/server.rb', línea 106 def dirección @address end |
#clúster ⇒ 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 ⇒ Server::Description (solo lectura)
Devuelve una descripción. La descripción del servidor que el supervisar actualiza.
123 124 125 |
# Archivo 'lib/mongo/server.rb', línea 123 def Descripción @descripción end |
#monitor ⇒ nulo| Monitor (solo lectura)
Devuelve supervisa El monitor del servidor. nil 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)
Supervisión de devoluciones La supervisión.
119 120 121 |
# Archivo 'lib/mongo/server.rb', línea 119 def Monitoring @monitoring end |
#opciones ⇒ Hash (solo lectura)
Devuelve el hash de opciones.
116 117 118 |
# Archivo 'lib/mongo/server.rb', línea 116 def @options end |
#round_trip_time_calculator ⇒ RoundTripTimeCalculator (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 calculador de tiempo de ida y vuelta.
234 235 236 |
# Archivo 'lib/mongo/server.rb', línea 234 def calculadora_de_tiempo_de_viaje_redondo @round_trip_time_calculator 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 señalar la solicitud de un análisis 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 menos que Otros.is_a?(Server) dirección == Otros.dirección end |
#clear_connection_pool(service_id: nil, interrupt_in_use_connections: false) ⇒ 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 clear_connection_pool(service_id: nulo, interrupt_in_use_connections: 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 driver permitía que los servidores fueran marcados # desconocido en cualquier momento, continúa haciéndolo incluso si la piscina está cerrada. si @pool && !@pool.¿Cerrado? @pool.¡desconectar!(service_id: service_id, interrupt_in_use_connections: conexiones de interrupción en uso) end end end |
#clear_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.
Borra la descripción de los servidores para que se considere desconocida y pueda desconectarse de manera segura.
664 665 666 |
# Archivo 'lib/mongo/server.rb', línea 664 def clear_description @descripción = Mongo::Server::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, @pool = @pool, nulo end # TODO: cambia esto a _pool.close en RUBY-3174. # Despeje la piscina. Si el servidor no es desconocido, entonces el # pool permanecerá listo. Detener el hilo de poblamiento 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 revisión del servidor y si no se ha negociado 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.
Determina si es posible establecer una conexión con el servidor y enviarle mensajes.
262 |
# Archivo 'lib/mongo/server.rb', línea 262 def ¿connectable?; 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 existen. Detiene el rellenador del pool de conexiones, si se está ejecutando. No cierra inmediatamente las conexiones que actualmente están extraídas (es decir, en uso): tales conexiones se cerrarán cuando se devuelvan a sus respectivos pools de conexiones. Detén el supervisor 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 actual de CMAP requiere que un pool sea mayormente 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 ser registradas en el pool para ser # demolido. Debido a este requisito de limpieza, no podemos simplemente # cierra el grupo y establécelo en nil aquí, para que se vuelva a crear la próxima vez # tiempo 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 forzar_balanceador_de_carga? [:conectar] == :balanceo de carga end |
#manejar_fallo_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 handle_auth_failure! rendimiento rescate Mongo::Error::SocketTimeoutError # Posiblemente el cluster esté lento, no te des por vencido propagar rescate Mongo::Error::Error de socket, Autenticación::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, service_id: e.service_id, 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 handle_handshake_failure! rendimiento rescate Mongo::Error::Error de socket, Mongo::Error::SocketTimeoutError => e ¡desconocido!( generación: e.Generación, service_id: e.service_id, monitor de parada de inserción: true, ) propagar end |
#heartbeat_frequency ⇒ Object También conocido como: heartbeat_frequency_seconds
159 160 161 |
# Archivo 'lib/mongo/server.rb', línea 159 def frecuencia de latidos del corazón clúster.intervalo_latido end |
#inspect ⇒ String
Consigue una inspección del servidor con una impresión bonita.
356 357 358 |
# Archivo 'lib/mongo/server.rb', línea 356 def inspeccionar "#<Mongo::servidor:0x#{object_id} dirección=#{dirección.host}:#{dirección.puerto} #{estado}>" end |
#last_scan ⇒ Time | nil
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 last_scan si Descripción && !Descripción.config.¿vacío? Descripción.last_update_time else @last_scan end end |
#last_scan_monotime ⇒ Float | nil
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 last_scan_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
Determina 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.¿todos? hacer |k| [k] && [k] == tag_set[k] end end |
#next_connection_id ⇒ 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.
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 group si ¿desconocido? propagar Error::ServerNotUsable, dirección end @pool_lock.sincronizar hacer opta = ¿conectado? ? : .fusionar(populator_io: false) @pool ||= Pool de conexiones.Nuevo(sí mismo, opta).tocar hacer |group| group.Listo end end end |
#pool_internal ⇒ Servidor::ConnectionPool | nil
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 interno del driver para recuperar el pool de conexiones de este servidor.
A diferencia de pool, pool_internal no creará una pool si aún no existe.
446 447 448 449 450 |
# Archivo 'lib/mongo/server.rb', línea 446 def pool_internal @pool_lock.sincronizar hacer @pool end end |
#publish_opening_event ⇒ 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::ServerOpening.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.¡reiniciar! end @conectado = true end |
#reintentar_lecturas? ⇒ 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? !!(Funcionalidades.¿sessions_enabled? && logical_session_timeout) end |
#retry_writes? ⇒ verdadero, falso
Las escrituras reintentables solo están disponibles en versiones del servidor 3.6y superiores, y con clústeres o sets 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 reintentarán las operaciones de guardar enviadas a este servidor?
569 570 571 |
# Archivo 'lib/mongo/server.rb', línea 569 def ¿retry_writes? !!(Funcionalidades.¿sessions_enabled? && logical_session_timeout && !autónomo?) || load_balancer? 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.
Usado internamente por el driver para agregar un servidor a un clúster mientras retrasa 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 Comenzar monitoreo evento_de_apertura_publicación si [:monitoring_io] != false Supervisar.ejecutar! 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 String que representa el estado del servidor (por ejemplo primario/a).
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 load_balancer? 'LB' Cuando primario/a? 'PRIMARIO ' Cuando secundario? 'secundario' 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 usa a menudo para la depuración, no levantar # 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 = sí mismo.Estado || '' si nombre_del_conjunto_de_réplicas Estado += " replica_set=#{replica_set_name}" end a menos que Supervisar&.¿correr? Estado += " NO-MONITORING" end si @pool 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 (cambio en la descripción del servidor).
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 pool 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!( = {}) group = pool_internal si load_balancer? # Cuando el cliente está en una topología equilibrada en la carga, los servidores (el uno y el # sólo lo que 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 pool de conexiones para el servidor # cuando este último está marcado como desconocido y esta parte debe suceder # cuando el servidor actúa como equilibrador 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 service_id = [:id_de_servicio] group&.¡desconectar!(service_id: service_id) 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] && group && [:generación] < group.Generación return end si [versión_topológica] && Descripción.topology_version && ![versión_topológica].gt?(Descripción.topology_version) entonces return end si [:detener_monitor_de_empuje] Supervisar&.stop_push_monitor! end # El flujo SDAM actualizará la descripción en el servidor sin hacerlo en el lugar. # mutaciones e invocar transiciones SDAM según sea necesario. config = {} si [:id_de_servicio] config['serviceId'] = [:id_de_servicio] end si [versión_topológica] config['topologyVersion'] = [versión_topológica] end new_description = Descripción.Nuevo(dirección, config, equilibrador de carga: load_balancer?, force_load_balancer: [:conectar] == :balanceo de carga, ) clúster.run_sdam_flow(Descripción, new_description, ) end |
#update_descripción(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) group = pool_internal si group && !Descripción.¿desconocido? group.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 @last_scan = 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 with_connection(id_global_de_conexión: nulo, context: nulo, Ybloque) group.with_connection( id_global_de_conexión: connection_global_id, context: context, Ybloque ) end |