Clase: Mongo::Retryable::ReadWorker Privada
- Hereda:
-
Trabajador de base
- Objeto
- Trabajador de base
- Mongo::Retryable::ReadWorker
- Definido en:
- lib/mongo/retryable/read_worker.rb
Overview
Esta clase forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
Implementa la lógica relacionada con reintentos en operaciones de lectura.
Resumen de atributos de instancia
Atributos heredados de BaseWorker
Colapso del resumen del método de instancia
-
#lectura_con_un_reintentar(opciones = nula) {... } ⇒ Resultado
privada
Ejecutar una operación de lectura con un solo reintento en caso de errores de red.
-
#lectura_con_reinicio(sesión = nula, selector_de_servidor = nulo, contexto = nulo, &bloque) ⇒ Resultado
privada
Ejecutar una operación de lectura con reintento.
-
#read_with_retry_cursor(sesión, server_selector, vista, contexto: nil, &bloque) ⇒ Cursor
privada
Ejecutar una operación de lectura devolviendo un cursor con reintento.
Métodos heredados de BaseWorker
Detalles del constructor
Esta clase hereda un constructor de Mongo::Retryable::BaseWorker
Detalles del método de instancia
#lectura_con_un_reintentar(opciones = nula) {... } ⇒ Resultado
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Esto solo vuelve a intentar operaciones de lectura en caso de errores de socket.
Ejecutar una operación de lectura con un solo reintento en caso de errores de red.
El controlador utiliza este método para algunas operaciones internas de mantenimiento. Las lecturas solicitadas por la aplicación deben usar read_with_retry en lugar de este método.
153 154 155 156 157 158 159 160 161 |
# Archivo 'lib/mongo/retryable/read_worker.rb', línea 153 def lectura_con_un_reintento( = nulo) rendimiento rescate *retryable_exceptions, Error::PoolError => e propagar e a no ser que e.¿Escritura_reintentable? = && [:retry_message] reintento de registro(e, Mensaje: ) rendimiento end |
#read_with_retry(session = nil, server_selector = nil, context = nil, &block) ⇒ Resultado
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Ejecutar una operación de lectura con reintento.
Este método selecciona el servidor para el selector especificado y cede el paso al bloque proporcionado, que debe ejecutar la consulta inicial y devolver su resultado. El bloque recibirá el servidor seleccionado para la operación. Si el bloque genera una excepción, que corresponde a un error de lectura reintentable, y los reintentos de lectura están habilitados para el cliente, este método volverá a seleccionar el servidor y cede el paso al bloque (posiblemente con un servidor diferente). Si el bloque se ejecuta correctamente, se devuelve el resultado.
Si las lecturas de reintento modernas están activadas (predeterminado), la lectura inicial se reintentará una vez. Si las lecturas de reintento tradicionales están activadas, la lectura inicial se reintentará cero o más veces, según la configuración del cliente :max_read_retries, cuyo valor predeterminado es 1. Para deshabilitar las lecturas de reintento modernas, desactívelas configurando retry_reads: false y estableciendo :max_read_retries en 0 en el cliente.
117 118 119 120 121 122 123 124 125 126 127 |
# Archivo 'lib/mongo/retryable/read_worker.rb', línea 117 def lectura_con_reintentar(sesión = nulo, selector de servidor = nulo, context = nulo, Ybloque) Si sesión.nil? && selector de servidor.nil? lectura heredada obsoleta con reintento(Ybloque) elsif sesión&.retry_reads? lectura moderna con reintento(sesión, selector de servidor, context, Ybloque) elsif Cliente.max_read_retries > 0 lectura heredada con reintento(sesión, selector de servidor, context, Ybloque) else leer_sin_reintentar(sesión, selector de servidor, Ybloque) end end |
#read_with_retry_cursor(sesión, selector_de_servidor, vista, contexto: nulo, &bloque) ⇒ Cursor
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Ejecutar una operación de lectura devolviendo un cursor con reintento.
Este método selecciona el servidor para el selector especificado y cede el paso al bloque proporcionado, que debe ejecutar la consulta inicial y devolver su resultado. El bloque recibirá el servidor seleccionado para la operación. Si el bloque genera una excepción, que corresponde a un error de lectura reintentable, y los reintentos de lectura están habilitados para el cliente, este método volverá a seleccionar el servidor y cede el paso al bloque (posiblemente con un servidor diferente). Si el bloque se devuelve correctamente, su resultado (que debe ser un objeto Mongo::Operation::Result) se utiliza para construir un objeto Mongo::Cursor para el conjunto de resultados. A continuación, se devuelve el cursor.
Si las lecturas de reintento modernas están activadas (predeterminado), la lectura inicial se reintentará una vez. Si las lecturas de reintento tradicionales están activadas, la lectura inicial se reintentará cero o más veces, según la configuración del cliente :max_read_retries, cuyo valor predeterminado es 1. Para deshabilitar las lecturas de reintento modernas, desactívelas configurando retry_reads: false y estableciendo :max_read_retries en 0 en el cliente.
68 69 70 71 72 73 74 75 76 77 78 79 80 |
# Archivo 'lib/mongo/retryable/read_worker.rb', línea 68 def lectura con cursor de reintento(sesión, selector de servidor, vista, context: nulo, Ybloque) lectura_con_reintentar(sesión, selector de servidor, context) hacer |Server| resultado = rendimiento Server # RUBY-2367: Esto se actualizará para permitir que el caché de consultas # cursores de caché con resultados de múltiples lotes. Si Caché de consultas.¿activado? && !vista.Colección.¿colección_del_sistema? Cursor de almacenamiento en caché.Nuevo(vista, resultado, Server, sesión: sesión, context: context) else Cursor.Nuevo(vista, resultado, Server, sesión: sesión, context: context) end end end |