Clase: Mongo::Server

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

Desde:

  • 2.0.0

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.

Desde:

  • 2.4.3

10.freeze

Constantes incluidas desde Loggable

Registrable::PREFIX

Resumen de atributos de la instancia colapsar

Atributos incluidos de Event::Publisher

#event_listeners

Resumen del método de instancia colapsar

Métodos incluidos desde Event::Publisher

#publicar

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.

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:

Inicia 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 (clúster)

    El clúster al que pertenece el servidor.

  • Monitoring (supervisión)

    La supervisión.

  • event_listeners (Event::Listeners)

    Los evento listeners.

  • opciones (Hash) (por defecto: {})

    Las opciones del servidor.

Opciones Hash (options):

  • supervisar (booleano)

    Para uso interno del driver únicamente: si se va a supervisar el servidor después de instanciarlo.

  • :monitoring_io (verdadero, falso)

    Solo para uso interno por parte de driver. Configura en falso para evitar que este servidor realice I/O relacionado con SDAM. Nota: si se configura esta opción como falso, el servidor dejará de funcionar. Se pretende utilizar en pruebas que invoquen 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, Monitoring, event_listeners, opciones = {})
  @address = dirección
  @cluster = clúster
  @monitoring = Monitoring
  opciones = opciones.dup
  _monitor = opciones.borrar(supervisar)
  @options = opciones.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 opciones[:monitoring_io] == false
    @monitor = Supervisar.Nuevo(sí mismo, event_listeners, Monitoring,
      opciones.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ónString (solo lectura)

Devuelve la dirección configurada para el servidor.

Devuelve:

  • (string)

    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
  @address
end

#clústerClúster (solo lectura)

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

Devuelve:

  • (clúster)

    clúster El clúster del servidor.

Desde:

  • 2.0.0



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

def clúster
  @cluster
end

#descripciónServer::Description (solo lectura)

Devuelve una descripción. La descripción del servidor que el supervisar actualiza.

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 supervisa El monitor del servidor. nil si el servidor se creó con la opción monitoring_io: false.

Devuelve:

  • (nil | supervisar)

    supervisar El supervisar del servidor. nil si el servidor se creó 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)

Supervisión de devoluciones La supervisión.

Devuelve:

Desde:

  • 2.0.0



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

def Monitoring
  @monitoring
end

#opcionesHash (solo lectura)

Devuelve el hash de opciones.

Devuelve:

  • (encriptada)

    El hash de opciones.

Desde:

  • 2.0.0



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

def opciones
  @options
end

#round_trip_time_calculatorRoundTripTimeCalculator (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.

Devuelve:

Desde:

  • 2.0.0



234
235
236
# Archivo 'lib/mongo/server.rb', línea 234

def calculadora_de_tiempo_de_viaje_redondo
  @round_trip_time_calculator
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 señalar la solicitud de un análisis inmediato de este servidor por parte de su monitor, si hay uno en ejecución.

Devuelve:

  • (Semáforo)

    Semáforo para señalar la solicitud de un escaneo inmediato de este servidor por su supervisor, 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:

¿Es el servidor igual al otro?

server == other

Parámetros:

  • Otros (objeto)

    El objeto con el que 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 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.

Parámetros:

  • :id_de_servicio (objeto)

    Cerrar conexiones únicamente con el ID de servicio especificado.

  • :interrupt_in_use_connections (true | false)

    Si también se deben interrumpir las conexiones despejadas.

Desde:

  • 2.0.0



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_descriptionObject

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.

Desde:

  • 2.0.0



664
665
666
# Archivo 'lib/mongo/server.rb', línea 664

def clear_description
  @descripción = Mongo::Server::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, @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

#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 revisión del servidor y si no se ha negociado ninguna compresión.

Devuelve:

  • (String | nil)

    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.

Determina si es posible establecer una conexión con el servidor y enviarle mensajes.

Ejemplos:

¿El servidor es conectable?

server.connectable?

Devuelve:

  • (verdadero,falso)

    Si el servidor es conectable.

Desde:

  • 2.1.0



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.

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

Devuelve:

  • (cierto)

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

Devuelve:

  • (true | false)

    Si este servidor debe ser forzado a ser un balanceador de carga.

Desde:

  • 2.0.0



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

def forzar_balanceador_de_carga?
  opciones[:conectar] == :balanceo de carga
end

#manejar_fallo_autenticación!Objeto

Manejar falla de autenticación.

Ejemplos:

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

Aumenta:

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

Desde:

  • 2.7.0



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_frequencyObject También conocido como: heartbeat_frequency_seconds

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_latido
end

#inspectString

Consigue una inspección del servidor con una impresión bonita.

Ejemplos:

Obtén la inspección del servidor.

server.inspect

Devuelve:

  • (string)

    La bonita cadena de inspección.

Desde:

  • 2.0.0



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

Devuelve:

  • (Time | nil)

    last_scan La hora en que se completó el escaneo del servidor más reciente, o nil si el servidor no ha sido escaneado todavía.

Desde:

  • 2.4.0



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

Devuelve:

  • (Float | nil)

    last_scan_monotime El tiempo monotónico en que se completó la última exploración del servidor, o nil si el servidor no ha sido escaneado aún.

Desde:

  • 2.0.0



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.

Ejemplos:

¿Son las etiquetas proporcionadas un subconjunto de las etiquetas del servidor?

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

Parámetros:

  • tag_set (encriptada)

    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.¿todos? hacer |k|
    Etiquetas[k] && Etiquetas[k] == tag_set[k]
  end
end

#next_connection_idObject

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 group
  si ¿desconocido?
    propagar Error::ServerNotUsable, dirección
  end

  @pool_lock.sincronizar hacer
    opta = ¿conectado? ? opciones : opciones.fusionar(populator_io: false)
    @pool ||= Pool de conexiones.Nuevo(sí mismo, opta).tocar hacer |group|
      group.Listo
    end
  end
end

#pool_internalServidor::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.

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
    @pool
  end
end

#publish_opening_eventObjeto

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::ServerOpening.Nuevo(dirección, clúster.topología)
  )
end

#¡reconectar!verdadero

Reinicie el monitor del servidor.

Ejemplos:

Reinicie el monitor del servidor.

server.reconnect!

Devuelve:

  • (cierto)

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

Devuelve:

  • (booleano)

Desde:

  • 2.0.0



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

Nota:

Las escrituras reintentables solo están disponibles en versiones del servidor 3.6y superiores, y con clústeres o sets 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 reintentarán las operaciones de guardar enviadas a este servidor?

Ejemplos:

¿Se volverán a intentar los guardados?

server.retry_writes?

Devuelve:

  • (verdadero,falso)

    Si se reintentarán los guardados.

Desde:

  • 2.5.0



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

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.

Desde:

  • 2.0.0



331
332
333
334
335
336
# Archivo 'lib/mongo/server.rb', línea 331

def Comenzar monitoreo
  evento_de_apertura_publicación
  si opciones[:monitoring_io] != false
    Supervisar.ejecutar!
  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 String que representa el estado del servidor (por ejemplo primario/a).

Devuelve:

  • (string)

    string que representa el estado del servidor (por ejemplo, primario/a).

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

#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 = 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.

Parámetros:

  • opciones (Hash) (por defecto: {})

    Opciones.

Opciones Hash (options):

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

    Por lo general, cuando la nueva descripción del servidor es desconocida, el pool de conexiones en el respectivo servidor se limpia. Configure esta opción como 'Verdadero' para mantener el pool de conexiones existente (requerido cuando se manejan errores no master en servidores 4.2+).

  • versión_topológica (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 el estado solo para el ID del 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 = {})
  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 = opciones[: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 opciones[:generación] && group && opciones[:generación] < group.Generación
    return
  end

  si opciones[versión_topológica] && Descripción.topology_version &&
    !opciones[versión_topológica].gt?(Descripción.topology_version)
  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 hacerlo en el lugar.
  # mutaciones e invocar transiciones SDAM según sea necesario.
  config = {}
  si opciones[:id_de_servicio]
    config['serviceId'] = opciones[:id_de_servicio]
  end
  si opciones[versión_topológica]
    config['topologyVersion'] = opciones[versión_topológica]
  end
  new_description = Descripción.Nuevo(dirección, config,
    equilibrador de carga: load_balancer?,
    force_load_balancer: opciones[:conectar] == :balanceo de carga,
  )
  clúster.run_sdam_flow(Descripción, new_description, opciones)
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.

Desde:

  • 2.0.0



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_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
  @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.

Ejemplos:

Enviar 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 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