Clase: Mongo::Server

Hereda:
Objeto
  • Objeto
Mostrar todo
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.

Desde:

  • 2.0.0

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.

Desde:

  • 2.4.3

10.freeze

Constantes incluidas desde Loggable

Registrable::PREFIX

Colapso delresumen de atributos de instancia

Atributos incluidos desde Event::Publisher

#event_listeners

Colapso del resumen del método de instancia

Métodos incluidos desde Event::Publisher

#publicar

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.

Nota:

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.

Ejemplos:

Inicializar el servidor.

Mongo::Server.new('127.0.0.1:27017', cluster, monitoring, listeners)

Parámetros:

  • dirección ( DIRECCIÓN) -

    La dirección del host:puerto al que conectarse.

  • clúster (Grupo) -

    El clúster al que pertenece el servidor.

  • vigilancia (Monitoreo)

    El seguimiento.

  • event_listeners (Evento::Escuchadores)

    Los oyentes de eventos.

  • opciones (Hash) (predeterminado: {})

    Las opciones del servidor.

Opciones Hash(opciones):

  • :monitor (Booleano)

    Solo para uso interno del controlador: si se debe monitorear el servidor después de instanciarlo.

  • :monitoring_io (verdadero,falso)

    Solo para uso interno del controlador. Establezca "false" para evitar que este servidor realice E/S relacionadas con SDAM. Nota: Si se establece "false", el servidor dejará de funcionar. Está diseñado para usarse en pruebas que invocan manualmente transiciones de estado de SDAM.

  • :populator_io (verdadero,falso)

    Solo para uso interno del controlador. Establézcalo en "false" para evitar que los subprocesos de rellenado se creen e inicien en el pool de conexiones del servidor. Está diseñado para usarse en pruebas que también desactivan monitoring_io, a menos que el rellenador se necesite explícitamente. Si monitoring_io está desactivado, pero populator_io está activado, el rellenador debe cerrarse manualmente al final de la prueba, ya que un clúster sin monitorización se considera no conectado y, por lo tanto, no limpiará los subprocesos de rellenado del pool de conexiones al cerrarlo.

  • :balanceador de carga (true | false)

    Si este servidor es un balanceador de carga.

  • :conectar (Cadena)

    El modo de conexión del cliente.

Desde:

  • 2.0.0



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, opciones = {})
  @DIRECCIÓN = dirección
  @cluster = clúster
  @monitoring = vigilancia
  opciones = opciones.dup
  _monitor = opciones.borrar(:monitor)
  @opciones = 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 opciones[:monitoring_io] == false
    @monitor = Supervisar.Nuevo(yo, event_listeners, vigilancia,
      opciones.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ónCadena (solo lectura)

Devuelve la dirección configurada para el servidor.

Devuelve:

  • (Cadena) -

    La dirección configurada para el servidor.

Desde:

  • 2.0.0



106
107
108
# Archivo 'lib/mongo/server.rb', línea 106

def dirección
  @DIRECCIÓN
end

#clusterClúster (solo lectura)

Devuelve el clúster El clúster del servidor.

Devuelve:

  • (Grupo) -

    clúster El clúster de servidores.

Desde:

  • 2.0.0



109
110
111
# Archivo 'lib/mongo/server.rb', línea 109

def clúster
  @cluster
end

#descripciónServidor::Descripción (solo lectura)

Devuelve la descripción La descripción del servidor que actualiza el monitor.

Devuelve:

  • (Servidor::Descripción)

    descripción La descripción del servidor que actualiza el monitor.

Desde:

  • 2.0.0



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.

Devuelve:

  • ( nulo| Monitor)

    monitor El monitor del servidor. nulo si el servidor fue creado con la opción monitoring_io: false.

Desde:

  • 2.0.0



113
114
115
# Archivo 'lib/mongo/server.rb', línea 113

def Supervisar
  @monitor
end

#monitoringMonitoring (readonly)

Monitoreo de devoluciones El monitoreo.

Devuelve:

Desde:

  • 2.0.0



119
120
121
# Archivo 'lib/mongo/server.rb', línea 119

def vigilancia
  @monitoring
end

#opcionesHash (solo lectura)

Devuelve el hash de las opciones.

Devuelve:

  • (Hash)

    El hash de opciones.

Desde:

  • 2.0.0



116
117
118
# Archivo 'lib/mongo/server.rb', línea 116

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

Devuelve:

Desde:

  • 2.0.0



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_semaphoreSemá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.

Devuelve:

  • (Semáforo)

    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.

Desde:

  • 2.0.0



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?

Ejemplos:

¿El servidor es igual al otro?

server == other

Parámetros:

  • otros (Objeto) -

    El objeto a comparar.

Devuelve:

  • (verdadero,falso)

    Si los servidores son iguales.

Desde:

  • 2.0.0



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.

Parámetros:

  • :id_de_servicio (Objeto) -

    Cerrar conexiones únicamente con el ID de servicio especificado.

  • :interrupción_en_uso_de_conexiones (verdadero | falso)

    Si las conexiones borradas también deben interrumpirse o no.

Desde:

  • 2.0.0



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_descriptionObjeto

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.

Desde:

  • 2.0.0



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

#cerrarObjeto

Desde:

  • 2.0.0



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

#compressorString | nil

Obsoleto.
Nota:

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.

Devuelve:

  • ( Cadena| nulo ) —

    El compresor negociado.

Desde:

  • 2.0.0



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

Obsoleto.

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.

Ejemplos:

¿Se puede conectar el servidor?

server.connectable?

Devuelve:

  • (verdadero,falso)

    Si el servidor se puede conectar.

Desde:

  • 2.1.0



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.

Devuelve:

  • (verdadero|falso)

    Si el servidor está conectado.

Desde:

  • 2.7.0



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.

Devuelve:

  • (verdadero) -

    Siempre verdadero.

Desde:

  • 2.0.0



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.

Devuelve:

  • (verdadero | falso)

    Si este servidor está obligado a ser un balanceador de carga.

Desde:

  • 2.0.0



130
131
132
# Archivo 'lib/mongo/server.rb', línea 130

def ¿equilibrador de carga de fuerza?
  opciones[:conectar] == :balanceo de carga
end

#¡manejar_error_de_autenticación!Objeto

Manejar falla de autenticación.

Ejemplos:

Manejar posibles fallos de autenticación.

server.handle_auth_failure! do
  Auth.get(user).(self)
end

Devuelve:

  • (Objeto) -

    El resultado de la ejecución del bloque.

Aumentos:

  • (Aut::Noautorizado)

    Si la autenticación falló.

Desde:

  • 2.3.0



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.

Desde:

  • 2.7.0



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_latidoObjeto También conocido como: frecuencia_del_latido_segundos

Obsoleto.

Desde:

  • 2.0.0



159
160
161
# Archivo 'lib/mongo/server.rb', línea 159

def frecuencia de latidos del corazón
  clúster.intervalo de latidos
end

#inspeccionarCadena

Obtenga una bonita inspección del servidor impresa.

Ejemplos:

Obtenga la inspección del servidor.

server.inspect

Devuelve:

  • (Cadena) -

    La bonita cadena de inspección.

Desde:

  • 2.0.0



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_scanTiempo | 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.

Devuelve:

  • (Tiempo | cero)

    last_scan La hora en que se completó el último escaneo del servidor o nil si el servidor aún no se ha escaneado.

Desde:

  • 2.4.0



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_monotimeFlotante | 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.

Devuelve:

  • (Float | nil)

    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.

Desde:

  • 2.0.0



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.

Ejemplos:

¿Las etiquetas proporcionadas son un subconjunto de las etiquetas del servidor?

server.matches_tag_set?({ 'rack' => 'a', 'dc' => 'nyc' })

Parámetros:

  • tag_set (Hash)

    El conjunto de etiquetas para comparar con las etiquetas del servidor.

Devuelve:

  • (verdadero,falso)

    Si las etiquetas proporcionadas son un subconjunto de las etiquetas del servidor.

Desde:

  • 2.0.0



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|
    Etiquetas[k] && Etiquetas[k] == tag_set[k]
  end
end

#next_connection_idObjeto

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.0.0



687
688
689
# Archivo 'lib/mongo/server.rb', línea 687

def siguiente_id_de_conexión
  @connection_id_gen.siguiente_id
end

#poolMongo::Servidor::Grupo de conexiones

Obtén el pool de conexiones para este servidor.

Ejemplos:

Obtenga el grupo de conexiones para el servidor.

server.pool

Devuelve:

  • (Mongo::Servidor::Grupode conexiones)

    El pool de conexiones.

Desde:

  • 2.0.0



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? ? opciones : opciones.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.

Devuelve:

Desde:

  • 2.0.0



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_aperturaObjeto

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.

Desde:

  • 2.0.0



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.

Ejemplos:

Reinicie el monitor del servidor.

server.reconnect!

Devuelve:

  • (verdadero) -

    Siempre verdadero.

Desde:

  • 2.1.0



476
477
478
479
480
481
# Archivo 'lib/mongo/server.rb', línea 476

def ¡Reconectar!
  Si opciones[: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.

Devuelve:

  • (Booleano)

Desde:

  • 2.0.0



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

Nota:

Las escrituras reintentables solo están disponibles en versiones de servidor 3.6+ y con clústeres fragmentados o conjuntos de réplicas.

Nota:

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?

Ejemplos:

¿Se volverán a intentar las escrituras?

server.retry_writes?

Devuelve:

  • (verdadero,falso)

    Si se vuelve a intentar escribir, se volverá a intentar.

Desde:

  • 2.5.0



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_monitoringObjeto

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.

Desde:

  • 2.0.0



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 opciones[:monitoring_io] != false
    Supervisar.¡correr!
  end
end

#statusString

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).

Devuelve:

  • (Cadena) -

    Cadena que representa el estado del servidor (por ejemplo, PRIMARIO).

Desde:

  • 2.0.0



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

#resumenObjeto

Nota:

Este método es experimental y está sujeto a cambios.

Desde:

  • 2.7.0



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.

Parámetros:

  • opciones (Hash) (predeterminado: {})

    Opciones.

Opciones Hash(opciones):

  • :generación (Entero)

    Generación del grupo de conexiones de la conexión que se utilizó para la operación que produjo el error.

  • :keep_connection_pool (true | false)

    Normalmente, cuando se desconoce la descripción del nuevo servidor, se borra el grupo de conexiones del servidor correspondiente. Configure esta opción como "true" para conservar el grupo de conexiones existente (necesario para gestionar errores no maestros en servidores 4.2o superiores).

  • :versión_de_topología (TopologyVersion)

    Versión de topología de la respuesta de error que causa que el servidor sea marcado como desconocido.

  • :detener_monitor_de_empuje (true | false)

    Si se debe detener el PushMonitor asociado con el servidor, si lo hay.

  • :id_de_servicio (Objeto)

    Descartar estado solo para el ID de servicio especificado.

Desde:

  • 2.4.0, Los eventos SDAM se envían desde la versión 2.7.0



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!(opciones = {})
  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 = opciones[: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 opciones[:generación] && Piscina && opciones[:generación] < Piscina.generación
    return
  end

  Si opciones[:versión_de_topología] && Descripción.versión_de_topología &&
    !opciones[:versión_de_topología].gt?(Descripción.versión_de_topología)
  entonces
    return
  end

  Si opciones[: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 opciones[:id_de_servicio]
    config['ID de servicio'] = opciones[:id_de_servicio]
  end
  Si opciones[:versión_de_topología]
    config['topologyVersion'] = opciones[: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: opciones[:conectar] == :balanceo de carga,
  )
  clúster.ejecutar_sdam_flow(Descripción, new_description, opciones)
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.

Desde:

  • 2.0.0



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_scanObject

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.0.0



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.

Ejemplos:

Envía un mensaje con la conexión.

server.with_connection do |connection|
  connection.dispatch([ command ])
end

Devuelve:

  • (Objeto) -

    El resultado de la ejecución del bloque.

Desde:

  • 2.3.0



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