Clase: Mongo::Error::Parser Privado

Hereda:
Objeto
  • Objeto
Mostrar todo
Incluye:
Detección de errores de Sdam
Definido en:
lib/mongo/error/parser.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.

Clase para analizar las distintas formas en que pueden presentarse los errores en las respuestas de los comandos de MongoDB.

El servidor puede informar los errores de varias maneras:

  • La respuesta ok:0 indica un error. En servidores más nuevos, los campos code, codeName y errmsg deben estar configurados. En servidores más antiguos, es posible que algunos no estén configurados.

  • Respuesta ok:1 con un error de escritura (campo de nivel superior writeConcernError). Esto indica que el nodo que respondió ejecutó la solicitud correctamente, pero no hubo suficientes otros nodos para satisfacer el error de escritura.

  • Respuesta ok:1 con el campo de nivel superior writeErrors. Esto se puede obtener tanto en una escritura masiva como en una escritura no masiva. En una escritura no masiva, debe haber exactamente un error en la lista writeErrors. BulkWrite::Result gestiona los errores múltiples.

  • Respuesta ok:1 con el campo de nivel superior writeConcernErrors. Esto solo se puede obtener en una escritura masiva y lo gestiona BulkWrite::Result, no esta clase.

Tenga en cuenta que los writeErrors no tienen campos codeName: solo proporcionan códigos y mensajes. De manera similar, los writeConcernErrors también pueden no proporcionar nombres de código.

Desde:

  • 2.0.0

Resumen constante

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 delresumen del método de clase

Colapso del resumen del método de instancia

Métodos incluidos en SdamErrorDetection

#nodo_en_recuperación?, #nodo_apagándose?, #no_maestro?

Detalles del constructor

#inicializar(documento, respuestas = nulo, opciones = nulo) ⇒ Analizador

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Crea el nuevo analizador con el documento devuelto.

En el modo heredado, los campos code y codeName del documento no se examinan porque el estado (ok: 1) no forma parte del documento y no es posible distinguir las respuestas correctas de las incorrectas utilizando el propio documento. Una respuesta correcta puede tener legítimamente { code: 123, codeName: 'foo' } como contenido de un documento insertado por el usuario. Las versiones heredadas del servidor no completan code ni codeName, por lo que no leerlos no implica pérdida de información.

Ejemplos:

Crea el nuevo analizador.

Parser.new({ 'errmsg' => 'failed' })

Parámetros:

  • Documento (BSON::Documento)

    El documento devuelto.

  • respuestas (Array<Protocol::Message>) (predeterminado: nulo)

    El mensaje responde.

  • opciones (Hash) (predeterminado: nulo)

    Las opciones.

Opciones Hash(opciones):

  • :legacy (true | false)

    Si el documento y las respuestas son de una respuesta heredada (anterior a3.2)

Desde:

  • 2.0.0



122
123
124
125
126
127
128
129
130
131
# Archivo 'lib/mongo/error/parser.rb', línea 122

def inicializar(Documento, respuestas = nulo, opciones = nulo)
  @documento = Documento || {}
  @replies = respuestas
  @opciones = Si opciones
    opciones.dup
  else
    {}
  end.freeze
  parse!
end

Detalles de los atributos de instancia

#códigoEntero (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 código de error analizado del documento.

Devuelve:

  • (Entero)

    El código de error analizado del documento.

Desde:

  • 2.6.0



88
89
90
# Archivo 'lib/mongo/error/parser.rb', línea 88

def Código
  @code
end

#code_nameCadena (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 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



92
93
94
# Archivo 'lib/mongo/error/parser.rb', línea 92

def nombre_clave
  @code_name
end

#documentoBSON::Documento (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 documento devuelto.

Devuelve:

  • (BSON::Documento)

    El documento devuelto.

Desde:

  • 2.0.0



73
74
75
# Archivo 'lib/mongo/error/parser.rb', línea 73

def Documento
  @documento
end

#etiquetasArray<String> (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 conjunto de etiquetas asociadas con el error.

Devuelve:

  • (Matriz<String>)

    El conjunto de etiquetas asociadas con el error.

Desde:

  • 2.7.0



96
97
98
# Archivo 'lib/mongo/error/parser.rb', línea 96

def Etiquetas
  @labels
end

#mensajeCadena (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 mensaje de error completo que se utilizará en la excepción generada.

Devuelve:

  • (Cadena) -

    El mensaje de error completo que se utilizará en la excepción generada.

Desde:

  • 2.0.0



77
78
79
# Archivo 'lib/mongo/error/parser.rb', línea 77

def Mensaje
  @mensaje
end

#repliesArray<Protocol::Message> (readonly)

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 las respuestas del mensaje.

Devuelve:

Desde:

  • 2.0.0



84
85
86
# Archivo 'lib/mongo/error/parser.rb', línea 84

def respuestas
  @replies
end

#mensaje_del_servidorString (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 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



81
82
83
# Archivo 'lib/mongo/error/parser.rb', línea 81

def mensaje del servidor
  @mensaje_del_servidor
end

#wtimeoutObjeto (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.

Desde:

  • 2.0.0



99
100
101
# Archivo 'lib/mongo/error/parser.rb', línea 99

def tiempo de espera
  @wtimeout
end

Detalles del método de clase

.build_message(código: nil, nombre_código: nil, mensaje: nil) ⇒ Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



177
178
179
180
181
182
183
184
185
186
187
188
189
190
# Archivo 'lib/mongo/error/parser.rb', línea 177

def mensaje de construcción(código: nulo, nombre_código: nulo, Mensaje: nulo)
  Si nombre_clave && Código
    "[#{code}:#{code_name}]: #{message}"
  elsif nombre_clave
    # Esto seguramente nunca debería suceder, si hay un nombre en código
    # También debería proporcionarse el código.
    # Manejar este caso para completarlo.
    "[#{nombre_código}]: #{mensaje}"
  elsif Código
    "[#{código}]: #{mensaje}"
  else
    Mensaje
  end
end

Detalles del método de instancia

#error_de_escritura_inquietante?verdadero | falso

Indica si el documento contiene un error de escritura. Un fallo puede incluir un error de nivel superior y uno de escritura, o cualquiera de ambos.

Devuelve:

  • (verdadero | falso)

    Indica si el documento 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



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

def ¿error de escritura?
  !!error_de_escritura_de_documento_de_error_de_preocupación
end

#write_concern_error_codeEntero | nulo

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



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

def código de error de escritura de preocupación
  error_de_escritura_de_documento_de_error_de_preocupación && error_de_escritura_de_documento_de_error_de_preocupación['code']
end

#nombre_código_error_escritura_preocupaciónCadena | nulo

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



166
167
168
# Archivo 'lib/mongo/error/parser.rb', línea 166

def write_concern_error_code_name
  error_de_escritura_de_documento_de_error_de_preocupación && error_de_escritura_de_documento_de_error_de_preocupación['nombreCódigo']
end

#escritura_de_error_de_preocupación_documentoHash | nulo

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



148
149
150
# Archivo 'lib/mongo/error/parser.rb', línea 148

def error_de_escritura_de_documento_de_error_de_preocupación
  Documento['error de preocupación de escritura']
end

#escribir_etiquetas_de_error_de_preocupaciónMatriz<String> | nulo

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Error de escritura, si hay un error de escritura presente.

Devuelve:

  • (Matriz<String> | nulo ) —

    Las etiquetas de error asociadas con esto

Desde:

  • 2.0.0



172
173
174
# Archivo 'lib/mongo/error/parser.rb', línea 172

def etiquetas de error de escritura de preocupación
  error_de_escritura_de_documento_de_error_de_preocupación && error_de_escritura_de_documento_de_error_de_preocupación['errorLabels']
end