Módulo: Mongo::Error::OperationFailure::Family
- Ampliado por:
- Reenviable
- Incluye:
- Lectura/Escritura/Reintentable, SdamErrorDetection
- Incluido en:
- Mongo::Error::Error de operación, Error detiempo de espera del servidor
- Definido en:
- lib/mongo/error/fallo_de_operación.rb
Overview
Implementa el comportamiento para un error OperationFailure. Otros errores (por ejemplo, ServerTimeoutError) también pueden implementar esto, para que puedan ser reconocidos y tratados como errores OperationFailure.
Colapso delresumen constante
- ERRORES DE REANUDACIÓN DE FLUJO DE CAMBIOS =
Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
Códigos de error y nombres de códigos que deberían provocar que un comando getMore fallido en un flujo de cambios NO se reanude.
[ {nombre_código: 'HostUnreachable', código: 6}, {nombre_código: 'HostNoEncontrado', código: 7}, {nombre_código: 'Tiempo de espera de red ', código: 89}, {nombre_código: 'Apagado en progreso', código: 91}, {nombre_código: 'Primario escalonado', código: 189}, {nombre_código: 'ExceededTimeLimit', código: 262}, {nombre_código: 'Excepción de socket', código: 9001}, {nombre_código: 'No Maestro', código: 10107}, {nombre_código: 'InterrumpidoAlApagar', código: 11600}, {nombre_código: 'Interruptido por cambio de estado de representación', código: 11602}, {nombre_código: 'NoPrimarioNoSecundarioOk ', código: 13435}, {nombre_código: 'NoMaestroNiSecundario', código: 13436}, {nombre_código: 'StaleShardVersion', código: 63}, {nombre_código: 'FailedToSatisfyReadPreference', código: 133}, {nombre_código: 'StaleEpoch', código: 150}, {nombre_código: 'RetryChangeStream', código: 234}, {nombre_código: 'StaleConfig', código: 13388}, ].freeze
- CAMBIAR_MENSAJES_DE_REANUDACIÓN_DE_FLUJO =
Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
El flujo de cambios se puede reanudar cuando se encuentran estos mensajes de error.
Lectura/Escritura/Reintentable::ESCRIBIR_REINTENTAR_MENSAJES
Constantes incluidas en ReadWriteRetryable
LeerEscrituraReintentable::REINTENTAR_MENSAJES, LeerEscrituraReintentable::ESCRIBIR_REINTENTAR_ERRORES, LeerEscrituraReintentable::ESCRIBIR_REINTENTAR_MENSAJES
Constantes incluidas de SdamErrorDetection
SdamErrorDetection::CÓDIGOS DE RECUPERACIÓNDE NODO, SdamErrorDetection::CÓDIGOS DE APAGADO DE NODO, SdamErrorDetection::CÓDIGOS NO MAESTROS
Colapso delresumen de atributos de instancia
-
#code ⇒ Integer
solo lectura
El código de error analizado del documento.
-
#nombre_código ⇒ Cadena
solo lectura
El nombre del código de error analizado del documento.
-
#detalles ⇒ Cadena | nulo
solo lectura
Los detalles del error.
-
#document ⇒ BSON::Document | nil
solo lectura
El documento de error devuelto por el servidor.
-
#resultado ⇒ Operación::Resultado
solo lectura
privada
El objeto de resultado de la operación.
-
#mensaje_del_servidor ⇒ Cadena
solo lectura
El mensaje de error devuelto por el servidor analizado a partir de la respuesta.
-
#write_concern_error_code ⇒ Entero | nulo
solo lectura
El código de error para el error de escritura, si hay un error de escritura y tiene un código.
-
#nombre_código_error_escritura_preocupación ⇒ Cadena | nulo
solo lectura
El nombre del código para el error de escritura, si hay un error de escritura y tiene un nombre de código.
-
#escritura_de_error_de_preocupación_documento ⇒ Hash | nulo
solo lectura
Devuelve el documento de error de escritura tal como lo informó el servidor, si lo hay.
Colapso del resumen del método de instancia
-
#change_stream_resumable? ⇒ true, false
¿Se puede reanudar el flujo de cambio en el que se produjo este error, siempre que la operación que desencadenó este error haya sido getMore?
-
#descripción_de_conexión ⇒ Servidor::Descripción
privada
Descripción del servidor en el que se realizó la operación a la que hace referencia esta excepción.
-
#inicializar(mensaje = nulo, resultado = nulo, opciones = {}) ⇒ Objeto
Crear la falla de la operación.
-
#¿max_time_ms_expired? ⇒ verdadero | falso
Si el error es MaxTimeMSExpired.
-
#¿Escritura reintentable no compatible? ⇒ verdadero | falso
Si el error se debe a un intento de escritura reintentable en un motor de almacenamiento que no admite escrituras reintentables.
-
#error_de_escritura_inquietante? ⇒ verdadero | falso
Si el error incluye un error de escritura.
-
#wtimeout? ⇒ verdadero | falso
Si el error es un problema de tiempo de espera de escritura.
Métodos incluidos en ReadWriteRetryable
#¿reintentable?, #¿escritura_reintentable?
Métodos incluidos en SdamErrorDetection
#nodo_en_recuperación?, #nodo_apagándose?, #no_maestro?
Detalles de los atributos de instancia
#código ⇒ Entero (solo lectura)
Devuelve el código de error analizado del documento.
44 45 46 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 44 def Código @code end |
#code_name ⇒ Cadena (solo lectura)
Devuelve el nombre del código de error analizado del documento.
49 50 51 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 49 def nombre_clave @code_name end |
#detalles ⇒ Cadena | nulo (solo lectura)
Devuelve los detalles del error. Para WriteConcernErrors, es"documento['errInfo']". Para WriteErrors, es"documento0[]". Para todos los demás errores, es nulo.
152 153 154 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 152 def detalles @detalles end |
#documento ⇒ BSON::Documento | nil (solo lectura)
Devuelve el documento de error devuelto por el servidor.
157 158 159 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 157 def Documento @documento end |
#resultado ⇒ Operación::Resultado (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 de resultado de la operación.
162 163 164 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 162 def resultado @resultado end |
#mensaje_del_servidor ⇒ String (solo lectura)
Devuelve el mensaje de error devuelto por el servidor analizado a partir de la respuesta.
55 56 57 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 55 def @mensaje_del_servidor end |
#write_concern_error_code ⇒ Entero | nulo (solo lectura)
Devuelve el código de error para el error de escritura, si hay un error de escritura y tiene un código.
140 141 142 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 140 def código de error de escritura de preocupación @write_concern_error_code end |
#write_concern_error_code_name ⇒ Cadena | nulo (solo lectura)
Devuelve el nombre de código para el error de escritura, si hay un error de escritura y tiene un nombre de código.
146 147 148 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 146 def write_concern_error_code_name @write_concern_nombre_código_error end |
#write_concern_error_document ⇒ Hash | nulo (solo lectura)
Devuelve el documento de error de escritura tal como lo informó el servidor, si lo hay.
134 135 136 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 134 def error_de_escritura_de_documento_de_error_de_preocupación @write_concern_error_document end |
Detalles del método de instancia
#change_stream_resumable? ⇒ verdadero, falso
¿Se puede reanudar el flujo de cambio en el que se produjo este error, siempre que la operación que desencadenó este error haya sido getMore?
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 97 def ¿cambio_de_flujo_reanudable? Si @resultado && @resultado.is_a?(Mongo::Operación::Obtener más::Resultado) # Las excepciones CursorNotFound siempre se pueden reanudar porque el servidor # no conoce el ID del cursor y, por lo tanto, no puede determinar si # el cursor es un flujo de cambios y no puede añadir el Etiqueta #ResumableChangeStreamError. return true Si Código == 43 # La descripción de la conexión no se completa para escrituras no reconocidas. Si descripción de la conexión.versión máxima del cable >= 9 ¿etiqueta?('ResumableChangeStreamError') else change_stream_resumable_code? end else false end end |
#descripción_de_conexión ⇒ Servidor::Descripción
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 la descripción del servidor en el que se realizó la operación a la que hace referencia esta excepción.
39 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 39 def_delegador :@resultado, :descripción_de_conexión |
#inicializar(mensaje = nulo, resultado = nulo, opciones = {}) ⇒ Objeto
Crear la falla de la operación.
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 187 def inicializar( = nulo, resultado = nulo, = {}) @detalles = retrieve_details([:documento]) Super(añadir_detalles(, @detalles)) @resultado = resultado @code = [:código] @code_name = [:nombre_código] @write_concern_error_document = [:escribir_documento_de_error_de_preocupación] @write_concern_error_code = [:escribir_código_de_error_de_preocupación] @write_concern_nombre_código_error = [:escribir_nombre_código_de_error_de_preocupación] @write_concern_error_labels = [:escribir etiquetas de error de preocupación] || [] @labels = [:etiquetas] || [] @wtimeout = !![:tiempo de espera] @documento = [:documento] @mensaje_del_servidor = [:mensaje_del_servidor] end |
#¿max_time_ms_expired? ⇒ verdadero | falso
Si el error es MaxTimeMSExpired.
218 219 220 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 218 def ¿max_time_ms_expired? Código == 50 # MaxTimeMSExpired end |
#¿Escritura reintentable no compatible? ⇒ verdadero | falso
Si el error se debe a un intento de escritura reintentable en un motor de almacenamiento que no admite escrituras reintentables.
escritura reintentable en un motor de almacenamiento que no admite escrituras reintentables.
229 230 231 232 233 234 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 229 def ¿Escritura reintentable no compatible? # El código 20 es IllegalOperation. # Tenga en cuenta que se espera que el documento sea un BSON::Document, por lo tanto # ya sea que tengan claves de cadena o proporcionen acceso indiferente. Código == 20 && &.empezar_con?("Números de transacción") || false end |
#error_de_escritura_inquietante? ⇒ verdadero | falso
Indica si el fallo incluye un error de escritura. Un fallo puede incluir un error de nivel superior y uno de escritura, o cualquiera de ambos.
126 127 128 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 126 def ¿error de escritura? !!@write_concern_error_document end |
#wtimeout? ⇒ verdadero | falso
Si el error es un problema de tiempo de espera de escritura.
209 210 211 |
# Archivo 'lib/mongo/error/operation_failure.rb', línea 209 def ¿wtimeout? @wtimeout end |