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.

Desde:

  • 2.0.0

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.

Desde:

  • 2.0.0

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

Desde:

  • 2.6.0

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

Colapso del resumen del método de instancia

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ódigoEntero (solo lectura)

Devuelve el código de error analizado del documento.

Devuelve:

  • (Entero)

    El código de error analizado del documento.

Desde:

  • 2.6.0



44
45
46
# Archivo 'lib/mongo/error/operation_failure.rb', línea 44

def Código
  @code
end

#code_nameCadena (solo lectura)

Devuelve el nombre del código de error analizado del documento.

Devuelve:

  • (Cadena) -

    El nombre del código de error analizado del documento.

Desde:

  • 2.6.0



49
50
51
# Archivo 'lib/mongo/error/operation_failure.rb', línea 49

def nombre_clave
  @code_name
end

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

Devuelve:

  • ( Cadena| nulo ) —

    Detalles del error. Para WriteConcernErrors, es"documento['errInfo']". Para WriteErrors, es"documento0[]". Para todos los demás errores, es nulo.

Desde:

  • 2.0.0



152
153
154
# Archivo 'lib/mongo/error/operation_failure.rb', línea 152

def detalles
  @detalles
end

#documentoBSON::Documento | nil (solo lectura)

Devuelve el documento de error devuelto por el servidor.

Devuelve:

  • (BSON::Document | nil)

    El documento de error devuelto por el servidor.

Desde:

  • 2.0.0



157
158
159
# Archivo 'lib/mongo/error/operation_failure.rb', línea 157

def Documento
  @documento
end

#resultadoOperació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.

Devuelve:

  • (Operación::Resultado)

    el objeto de resultado de la operación.

Desde:

  • 2.0.0



162
163
164
# Archivo 'lib/mongo/error/operation_failure.rb', línea 162

def resultado
  @resultado
end

#mensaje_del_servidorString (solo lectura)

Devuelve el mensaje de error devuelto por el servidor analizado a partir de la respuesta.

Devuelve:

  • (Cadena) -

    El mensaje de error devuelto por el servidor analizado a partir de la respuesta.

Desde:

  • 2.0.0



55
56
57
# Archivo 'lib/mongo/error/operation_failure.rb', línea 55

def mensaje del servidor
  @mensaje_del_servidor
end

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

Devuelve:

  • (Integer | nil)

    El código de error para el error de escritura, si hay un error de escritura y tiene un código.

Desde:

  • 2.10.0



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

Devuelve:

  • ( Cadena| nulo ) —

    El nombre del código para el error de escritura, si hay un error de escritura y tiene un nombre de código.

Desde:

  • 2.10.0



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_documentHash | nulo (solo lectura)

Devuelve el documento de error de escritura tal como lo informó el servidor, si lo hay.

Devuelve:

  • (Hash | nulo ) —

    Escriba el error de preocupación según lo informado al servidor.

Desde:

  • 2.0.0



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?

Ejemplos:

¿El error se puede reanudar para el flujo de cambio?

error.change_stream_resumable?

Devuelve:

  • (verdadero,falso)

    Si el error es reanudable.

Desde:

  • 2.6.0



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ónServidor::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.

Devuelve:

  • (Servidor::Descripción)

    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.

Parámetros:

  • Mensaje (Cadena) (predeterminado: nulo)

    El mensaje de error.

  • resultado (Operación::Resultado) (predeterminado: nulo)

    El objeto de resultado.

  • opciones (Hash) (predeterminado: {})

    Parámetros adicionales.

Opciones Hash(opciones):

  • :código (Entero)

    Código de error.

  • :nombre_código (Cadena)

    Nombre del código de error.

  • :documento (BSON::Documento)

    El documento de error devuelto por el servidor.

  • mensaje del servidor (Cadena)

    El mensaje de error devuelto por el servidor analizado a partir de la respuesta.

  • :escribir_documento_de_error_de_preocupación (Hash)

    El documento de error de escritura proporcionado por el servidor, si lo hay.

  • :escribir_código_de_error_de_preocupación (Entero)

    Código de error para error de escritura, si lo hay.

  • :escribir_nombre_código_de_error_de_preocupación (Cadena)

    Nombre del código de error para el error de escritura, si lo hay.

  • :escribir etiquetas de error de preocupación (Matriz<String>)

    Etiquetas de error para el error de escritura, si lo hay.

  • :etiquetas (Matriz<String>)

    El conjunto de etiquetas asociadas con el error.

  • :tiempo de espera (true | false)

    Si el error es un tiempo de espera.

Desde:

  • 2.0.0



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(Mensaje = nulo, resultado = nulo, opciones = {})
  @detalles = retrieve_details(opciones[:documento])
  Super(añadir_detalles(Mensaje, @detalles))

  @resultado = resultado
  @code = opciones[:código]
  @code_name = opciones[:nombre_código]
  @write_concern_error_document = opciones[:escribir_documento_de_error_de_preocupación]
  @write_concern_error_code = opciones[:escribir_código_de_error_de_preocupación]
  @write_concern_nombre_código_error = opciones[:escribir_nombre_código_de_error_de_preocupación]
  @write_concern_error_labels = opciones[:escribir etiquetas de error de preocupación] || []
  @labels = opciones[:etiquetas] || []
  @wtimeout = !!opciones[:tiempo de espera]
  @documento = opciones[:documento]
  @mensaje_del_servidor = opciones[:mensaje_del_servidor]
end

#¿max_time_ms_expired?verdadero | falso

Si el error es MaxTimeMSExpired.

Devuelve:

  • (verdadero | falso)

    Si el error es MaxTimeMSExpired.

Desde:

  • 2.10.0



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.

Devuelve:

  • (verdadero | falso)

    Si el error es causado por un intento

Desde:

  • 2.10.0



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 && mensaje del servidor&.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.

Devuelve:

  • (verdadero | falso)

    Si el fallo incluye un error de escritura. Un fallo puede tener un error de nivel superior y un error de escritura, o cualquiera de los dos.

Desde:

  • 2.10.0



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.

Devuelve:

  • (verdadero | falso)

    Si el error es un problema de tiempo de espera de escritura.

Desde:

  • 2.7.1



209
210
211
# Archivo 'lib/mongo/error/operation_failure.rb', línea 209

def ¿wtimeout?
  @wtimeout
end