Clase: Mongo::Error::Parser Privado
- Hereda:
-
Objeto
- Objeto
- Mongo::Error::Parser
- 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.
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
-
#code ⇒ Integer
solo lectura
privada
El código de error analizado del documento.
-
#nombre_código ⇒ Cadena
solo lectura
privada
El nombre del código de error analizado del documento.
-
#document ⇒ BSON::Document
solo lectura
privada
El documento devuelto.
-
#etiquetas ⇒ Matriz<String>
solo lectura
privada
El conjunto de etiquetas asociadas con el error.
-
#mensaje ⇒ Cadena
solo lectura
privada
El mensaje de error completo que se utilizará en la excepción generada.
-
#replies ⇒ Array<Protocol::Message>
solo lectura
privada
El mensaje responde.
-
#mensaje_del_servidor ⇒ Cadena
solo lectura
privada
El mensaje de error devuelto por el servidor analizado a partir de la respuesta.
- #wtimeout ⇒ Objeto solo lectura privada
Colapso delresumen del método de clase
Colapso del resumen del método de instancia
-
#inicializar(documento, respuestas = nulo, opciones = nulo) ⇒ Analizador
constructor
privada
Crea el nuevo analizador con el documento devuelto.
-
#error_de_escritura_inquietante? ⇒ verdadero | falso
Si el documento incluye un error de escritura.
-
#write_concern_error_code ⇒ Entero | nil
El código de error para el error de escritura, si hay un error de escritura y tiene un código.
-
#nombre_código_error_escritura_preocupación ⇒ 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.
-
#escritura_de_error_de_preocupación_documento ⇒ Hash | nulo
Devuelve el documento de error de escritura tal como lo informó el servidor, si lo hay.
-
#escribir_etiquetas_de_error_de_preocupación ⇒ Matriz<String> | nulo
privada
Error de escritura, si hay un error de escritura presente.
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.
122 123 124 125 126 127 128 129 130 131 |
# Archivo 'lib/mongo/error/parser.rb', línea 122 def inicializar(Documento, respuestas = nulo, = nulo) @documento = Documento || {} @replies = respuestas @opciones = Si .dup else {} end.freeze parse! end |
Detalles de los atributos de instancia
#código ⇒ Entero (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.
88 89 90 |
# Archivo 'lib/mongo/error/parser.rb', línea 88 def Código @code end |
#code_name ⇒ Cadena (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.
92 93 94 |
# Archivo 'lib/mongo/error/parser.rb', línea 92 def nombre_clave @code_name end |
#documento ⇒ BSON::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.
73 74 75 |
# Archivo 'lib/mongo/error/parser.rb', línea 73 def Documento @documento end |
#etiquetas ⇒ Array<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.
96 97 98 |
# Archivo 'lib/mongo/error/parser.rb', línea 96 def Etiquetas @labels end |
#mensaje ⇒ Cadena (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.
77 78 79 |
# Archivo 'lib/mongo/error/parser.rb', línea 77 def @mensaje end |
#replies ⇒ Array<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.
84 85 86 |
# Archivo 'lib/mongo/error/parser.rb', línea 84 def respuestas @replies end |
#mensaje_del_servidor ⇒ 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 mensaje de error devuelto por el servidor analizado a partir de la respuesta.
81 82 83 |
# Archivo 'lib/mongo/error/parser.rb', línea 81 def @mensaje_del_servidor end |
#wtimeout ⇒ Objeto (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.
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.
177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# Archivo 'lib/mongo/error/parser.rb', línea 177 def (código: nulo, nombre_código: nulo, Mensaje: nulo) Si nombre_clave && Código "[#{code}:#{code_name}]: #{}" 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}]: #{}" elsif Código "[#{código}]: #{}" else 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.
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_code ⇒ Entero | nulo
Devuelve el código de error para el error de escritura, si hay un error de escritura y tiene un código.
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ón ⇒ Cadena | 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.
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_documento ⇒ Hash | nulo
Devuelve el documento de error de escritura tal como lo informó el servidor, si lo hay.
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ón ⇒ Matriz<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.
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 |