Clase: Mongo::Error::Parser Privada

Hereda:
Objeto
  • Objeto
Mostrar todo
Incluye:
SdamErrorDetection
Definido en:
lib/mongo/error/parser.rb

Overview

Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.

Clase para analizar las diversas formas en que pueden presentarse errores en las respuestas a comandos de MongoDB.

Los errores pueden ser reportados por el servidor de diversas maneras:

  • ok:0 respuesta indica fallo. En servidores más recientes, deben establecerse los campos code, codeName y errmsg. En servidores 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 writeErrors no tiene campos codeName; solo proporciona códigos y mensajes. De manera similar, writeConcernErrors podría no proporcionar nombres de código.

Desde:

  • 2.0.0

Resumen constante

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 clase colapsar

Resumen del método de instancia colapsar

Métodos incluidos de SdamErrorDetection

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

Detalles del constructor

#inicializar(documento, respuestas = nil, opciones = nil) ⇒ Parser

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

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

Parámetros:

  • Documento (BSON::Document)

    El documento devuelto.

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

    Las respuestas a los mensajes.

  • opciones (Hash) (predeterminado: nulo)

    Las opciones.

Opciones Hash (options):

  • :legacy (true | false)

    Si el documento y las respuestas provienen de un sistema heredado (previo a3.2) respuesta

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
  @options = 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:

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

#nombre_del_códigostring (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:

  • (string)

    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::Document)

    El documento devuelto.

Desde:

  • 2.0.0



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

def Documento
  @documento
end

#labelsarreglo<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 asociado al error.

Devuelve:

  • (arreglo<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

#mensajestring (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 debe usar en la excepción generada.

Devuelve:

  • (string)

    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.

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



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

def mensaje del servidor
  @server_message
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 wtimeout
  @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 build_message(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.
    "[#{code_name}]: #{message}"
  elsif Código
    "[#{código}]: #{mensaje}"
  else
    mensaje
  end
end

Detalles del método de instancia

#es_una_inquietud_de _escritura?true | false

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

Devuelve:

  • (true | false)

    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?
  !!documento_de_error_de_gravedad_de_escritura
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 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



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

def write_concern_error_code
  documento_de_error_de_gravedad_de_escritura && documento_de_error_de_gravedad_de_escritura['code']
end

#nombre_código_error_escritura_preocupaciónCadena | nulo

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



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

def write_concern_error_code_name
  documento_de_error_de_gravedad_de_escritura && documento_de_error_de_gravedad_de_escritura['nombreCódigo']
end

#Documento de error de write concernHash | nil

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



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

def documento_de_error_de_gravedad_de_escritura
  Documento['writeConcernError']
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:

  • (arreglo<String> | nil)

    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
  documento_de_error_de_gravedad_de_escritura && documento_de_error_de_gravedad_de_escritura['errorLabels']
end