Módulo: OperationFailure::Family

Ampliado por:
Reenviable
Incluye:
Mongo::Error::ReadWriteRetryable, Mongo::Error::SdamErrorDetection
Incluido en:
Mongo::Error::OperationFailure, Mongo::Error::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.

Resumen de constantes colapsar

CAMBIODETRANSMISIÓN_REANUDACIÓN_ERRORES =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

Códigos de error y nombres de códigos que deben hacer que un comando getMore falle en un flujo de cambios NO siendo reanudado.

[
  { code_name: 'HostUnreachable', código: 6 },
  { code_name: 'HostNotFound', código: 7 },
  { code_name: 'NetworkTimeout', código: 89 },
  { code_name: 'ApagadoEnProgreso', código: 91 },
  { code_name: 'PrimarioDescendido', código: 189 },
  { code_name: 'ExceededTimeLimit', código: 262 },
  { code_name: 'SocketException', código: 9001 },
  { code_name: 'NotMaster', código: 10_107 },
  { code_name: 'InterrumpidoDuranteApagado', código: 11_600 },
  { code_name: 'Interruptido por cambio de estado de representación', código: 11_602 },
  { code_name: 'NoPrimarioNoSecundarioOk', código: 13_435 },
  { code_name: 'NoEsPrincipalNiSecundario', código: 13_436 },

  { code_name: 'StaleShardVersion', código: 63 },
  { code_name: 'FailedToSatisfyReadPreference', código: 133 },
  { code_name: 'StaleEpoch', código: 150 },
  { code_name: 'RetryChangeStream', código: 234 },
  { code_name: 'StaleConfig', código: 13_388 },
].freeze
CHANGE_STREAM_RESUME_MESSAGES =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

El flujo de cambios se puede reanudar cuando se encuentren estos mensajes de error.

Desde:

  • 2.6.0

ReadWriteRetryable::WRITE_RETRY_MESSAGES

Constantes incluidas de Mongo::Error::ReadWriteRetryable

Mongo::Error::ReadWriteRetryable::RETRY_MESSAGES, Mongo::Error::ReadWriteRetryable::WRITE_RETRY_ERRORS, Mongo::Error::ReadWriteRetryable::WRITE_RETRY_MESSAGES

Constantes incluidas de Mongo::Error::SdamErrorDetection

Mongo::Error::SdamErrorDetection::NODE_RECOVERING_CODES, Mongo::Error::SdamErrorDetection::NODE_SHUTTING_DOWN_CODES, Mongo::Error::SdamErrorDetection::NOT_MASTER_CODES

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Métodos incluidos de Mongo::Error::ReadWriteRetryable

#¿reintentable?, #¿escritura_reintentable?

Métodos incluidos de Mongo::Error::SdamErrorDetection

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

Detalles de atributo de instancias

#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



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

def Código
  @code
end

#nombre_del_códigostring (solo lectura)

Devuelve el nombre del código de error extraído del documento.

Devuelve:

  • (string)

    El nombre del código de error extraído del documento.

Desde:

  • 2.6.0



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

def code_name
  @code_name
end

#detallesString | nil (solo lectura)

Returns Los detalles del error. Para los errores de WriteConcern, esto es document['writeConcernError']['errInfo']. Para WriteErrors, esto es document['writeErrors'][0]['errInfo']. Para todos los demás errores, este valor es nulo.

Devuelve:

  • (String | nil)

    Los detalles del error. Para WriteConcernErrors esto es document['writeConcernError']['errInfo']. Para los errores de escritura, esto es document['writeErrors'][0]['errInfo']. Para todos los demás errores, este valor es nulo.



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

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.



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

def Documento
  @document
end

#resultadoOperación::Resultado (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el objeto resultado de la operación.

Devuelve:



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

def Resultado
  @result
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.



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

def server_message
  @server_message
end

#write_concern_error_codeInteger | nil (solo lectura)

Devuelve el código de error 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) presente 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



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

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



145
146
147
# Archivo 'lib/mongo/error/operation_failure.rb', línea 145

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 nivel de confirmación de escritura (write concern) tal y como lo reportó el servidor, si lo hubo.

Devuelve:

  • (Hash | nil)

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



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

def documento_de_error_de_gravedad_de_escritura
  @write_concern_error_document
end

Detalles del método de instancia

#change_stream_resumable?true, false

¿Se puede reanudar el flujo de cambios en el que se produjo este error, suponiendo que la operación que activó este error fuera un getMore?

Ejemplos:

¿El error es retomable para el flujo de cambios?

error.change_stream_resumable?

Devuelve:

  • (true, false)

    Si el error es reanudable.

Desde:

  • 2.6.0



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# Archivo 'lib/mongo/error/operation_failure.rb', línea 96

def ¿streaming de cambios reanudable?
  si @result && @result.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 es parte de una API privada. Se debe evitar el uso de este método 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.



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

def_delegator :@result, Descripción de la conexión

#initialize(mensaje = nil, resultado = nil, opciones = {}) ⇒ objeto

Crear la falla de la operación.

Parámetros:

  • mensaje (string) (valor por defecto: nil)

    El mensaje de error.

  • Resultado (Operation::Result) (valor por defecto: nil)

    El objeto resultado.

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

    Parámetros adicionales.

Opciones Hash (options):

  • clave (Integer)

    Código de error.

  • Nombre del código (string)

    Nombre del código de error.

  • documento (BSON::Document)

    El documento de error devuelto por el servidor.

  • server_message (string)

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

  • Documento de error de Write concern (encriptada)

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

  • Código_error_conciencia_escritura (Integer)

    Código de error por error en el nivel de confirmación de escritura (write concern), si existe.

  • Nombre del código de error de writeConcern (string)

    Nombre del código de error para errores de nivel de confirmación de escritura (write concern), si los hay.

  • :write_concern_error_labels (arreglo<String>)

    Etiquetas de error para el error de nivel de confirmación de escritura (write concern), si lo hay.

  • :etiquetas (arreglo<String>)

    El conjunto de etiquetas asociadas con el error.

  • :wtimeout (true | false)

    Si el error es un wtimeout.



186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# Archivo 'lib/mongo/error/operation_failure.rb', línea 186

def inicializar(mensaje = nulo, Resultado = nulo, opciones = {})
  @detalles = retrieve_details(opciones[documento])
  super(append_details(mensaje, @detalles))

  @result = Resultado
  @code = opciones[clave]
  @code_name = opciones[Nombre del código]
  @write_concern_error_document = opciones[Documento de error de Write concern]
  @write_concern_error_code = opciones[Código_error_conciencia_escritura]
  @write_concern_error_code_name = opciones[Nombre del código de error de writeConcern]
  Etiquetas de error de Write Concern = opciones[:write_concern_error_labels] || []
  @labels = opciones[:etiquetas] || []
  @wtimeout = !!opciones[:wtimeout]
  @document = opciones[documento]
  @server_message = opciones[Mensaje_del_servidor]
end

#max_time_ms_expired?true | false

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



217
218
219
# Archivo 'lib/mongo/error/operation_failure.rb', línea 217

def ¿max_time_ms_expired?
  Código == 50 # MaxTimeMSExpired
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



125
126
127
# Archivo 'lib/mongo/error/operation_failure.rb', línea 125

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



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

def ¿wtimeout?
  @wtimeout
end