Módulo: Mongo::Error::OperationFailure::Family

Ampliado por:
Reenviable
Incluye:
ReadWriteRetryable, SdamErrorDetection
Incluido en:
Mongo::Error:: OperationFailure, ServerTimeoutError
Definido en:
lib/mongo/error/operation_failure.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

CAMBIODETRANSMISIÓN_REANUDACIÓN_ERRORES =

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: 'NetworkTimeout', código: 89},
  {nombre_código: 'ApagadoEnProgreso', código: 91},
  {nombre_código: 'PrimarioDescendido', código: 189},
  {nombre_código: 'ExceededTimeLimit', código: 262},
  {nombre_código: 'SocketException', código: 9001},
  {nombre_código: 'NotMaster', 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: 'NoEsPrincipalNiSecundario', 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

ReadWriteRetryable::WRITE_RETRY_MESSAGES

Constantes incluidas en ReadWriteRetryable

ReadWriteRetryable::RETRY_MESSAGES, ReadWriteRetryable::WRITE_RETRY_ERRORS, ReadWriteRetryable::WRITE_RETRY_MESSAGES

Constantes incluidas de SdamErrorDetection

SdamErrorDetection::NODE_RECOVERING_CODES, SdamErrorDetection::NODE_SHUTTING_DOWN_CODES, SdamErrorDetection::NOT_MASTER_CODES

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Métodos incluidos de ReadWriteRetryable

#¿reintentable?, #¿escritura_reintentable?

Métodos incluidos de SdamErrorDetection

#nodo_recuperando?, #nodo_apagándose?, #no_es_máster?

Detalles de los atributos de instancia

#códigoEntero (solo lectura)

Devuelve el código de error analizado del documento.

Devuelve:

  • (Número 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

#nombre_del_códigostring (solo lectura)

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

Devuelve:

  • (string)

    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

#detallesString | nil (solo lectura)

Devuelve los detalles del error. Para WriteConcernErrors esto es ‘documento[’errInfo’]‘. Para WriteErrors esto es `documento[0]`. Para todos los demás errores, esto es nulo.

Devuelve:

  • (String | nil)

    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::Document | 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 resultado de la operación.

Devuelve:

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)

DevuelveEl mensaje de error devuelto por el servidor analizado de la respuesta.

Devuelve:

  • (string)

    El mensaje de error devuelto por el servidor que se ha 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
  @server_message
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 del error de nivel de confirmación de escritura (write concern), si un error de nivel de confirmación de escritura (write concern) está presente y tiene un código.

Desde:

  • 2.10.0



140
141
142
# Archivo 'lib/mongo/error/operation_failure.rb', línea 140

def write_concern_error_code
  @write_concern_error_code
end

#write_concern_error_code_nameString | nil (solo lectura)

Retorna el nombre del código para el error de nivel de confirmación de escritura (write concern), si hay un error de nivel de confirmación de escritura (write concern) y este tiene un nombre de código.

Devuelve:

  • (String | nil)

    El nombre en clave para el error de nivel de confirmación de escritura (write concern), si existe un error de nivel de confirmación de escritura (write concern) y tiene un nombre en clave.

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

#write_concern_error_documentHash | nil (solo lectura)

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

Devuelve:

  • (Hash | nil)

    Error de nivel de confirmación de escritura (write concern) según lo informado al servidor.

Desde:

  • 2.0.0



134
135
136
# Archivo 'lib/mongo/error/operation_failure.rb', línea 134

def documento_de_error_de_gravedad_de_escritura
  @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 es retomable para el flujo de cambios?

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 ¿streaming de cambios reanudable?
  si @resultado && @resultado.is_a?(Mongo::Operación::Obtener más::Resultado)
    # Las excepciones CursorNotFound siempre pueden reanudarse porque el servidor
    # no está al tanto de la 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 conexión no se rellena para guardados no reconocidos.
    si connection_description.max_wire_version >= 9
      ¿etiqueta?('ResumableChangeStreamError')
    else
      change_stream_resumable_code?
    end
  else
    false
  end
end

#descripción_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 se refiere esta excepción.

Devuelve:

  • (Servidor::Descripción)

    Descripción del servidor en el que se realizó la operación a la que se refiere esta excepción.



39
# Archivo 'lib/mongo/error/operation_failure.rb', línea 39

def_delegador :@resultado, :descripción_de_conexión

#initialize(mensaje = nil, resultado = nil, 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 resultado.

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

    Parámetros adicionales.

Opciones Hash (options):

  • clave (Entero)

    Código de error.

  • :nombre_código (Cadena)

    Nombre del código de error.

  • :documento (BSON::Document)

    El documento de error devuelto por el servidor.

  • mensaje del servidor (Cadena)

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

  • Documento de error de Write concern (Hash)

    El documento de error de nivel de confirmación de escritura (write concern) suministrado por el servidor, si existe.

  • :escribir_código_de_error_de_preocupación (Entero)

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

  • Nombre del código de error de writeConcern (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.

  • :wtimeout (true | false)

    Si el error es un wtimeout.

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(append_details(mensaje, @detalles))

  @resultado = Resultado
  @code = opciones[clave]
  @code_name = opciones[:nombre_código]
  @write_concern_error_document = opciones[Documento de error de Write concern]
  @write_concern_error_code = opciones[:escribir_código_de_error_de_preocupación]
  @write_concern_error_code_name = opciones[Nombre del código de error de writeConcern]
  Etiquetas de error de Write Concern = opciones[:escribir etiquetas de error de preocupación] || []
  @labels = opciones[:etiquetas] || []
  @wtimeout = !!opciones[:wtimeout]
  @documento = opciones[:documento]
  @server_message = opciones[Mensaje_del_servidor]
end

#¿max_time_ms_expired?verdadero | falso

Si el error es MaxTimeMSExpired (Tiempo máximo alcanzado).

Devuelve:

  • (true | false)

    Si el error es MaxTimeMSExpired (Tiempo máximo alcanzado).

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

#unsupported_retryable_write?true | false

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:

  • (true | false)

    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 unsupported_retryable_write?
  # El código 20 es IllegalOperation.
  # Ten en cuenta que se espera que el documento sea un BSON::Document, por lo tanto
  # ya sea teniendo claves de string o proporcionando acceso indiferente.
  Código == 20 && mensaje del servidor&.start_with?("Números de transacción") || false
end

#es_una_inquietud_de _escritura?true | false

Devuelve si la falla incluye un error de nivel de confirmación de escritura (write concern). Una falla puede tener un error de nivel superior y un error de nivel de confirmación de escritura (write concern) o uno de los dos.

Devuelve:

  • (true | false)

    Si la falla incluye un error de nivel de confirmación de escritura (write concern). Una falla puede tener un error de nivel superior y un error de nivel de confirmación de escritura (write concern) o uno 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?true | false

Si el error es un tiempo de espera de nivel de confirmación de escritura (write concern).

Devuelve:

  • (true | false)

    Si el error es un tiempo de espera de nivel de confirmación de escritura (write concern).

Desde:

  • 2.7.1



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

def ¿wtimeout?
  @wtimeout
end