Classe: Mongo::Error::Parser Private
- Herda:
-
Objeto
- Objeto
- Mongo::Error::parser
- Inclui:
- SdamErrorDetection
- Definido em:
- build/ruby-driver-v2.19/lib/mongo/error/parser.rb
Visão geral
Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.
Classe para analisar as várias formas em que os erros podem vir das respostas de comando MongoDB.
Os erros podem ser relatados pelo servidor de várias maneiras:
-
ok: a resposta 0 indica falha. Em servidores mais recentes, os campos code, codeName e errmsg devem ser definidos. Em servidores mais antigos, alguns podem não estar definidos.
-
ok: resposta 1 com um erro de write concern (campo de nível superior writeConcernError). Isso indica que o nó que responde executou a solicitação com êxito, mas outros nós não executaram a solicitação com êxito o suficiente para satisfazer o write concern.
-
ok:1 resposta com o campo de nível superior writeErrors . Isso pode ser obtido em uma gravação em massa, mas também em uma gravação não em massa. Em uma gravação não em massa, deve haver exatamente um erro na lista writeErrors. O caso de vários erros é tratado por BulkWrite::Result.
-
ok:1 resposta com o campo de nível superior writeConcernErrors. Isso só pode ser obtido em uma gravação em massa e é tratado por BulkWrite::Result, não por essa classe.
Observe que writeErrors não têm campos codeName - eles apenas fornecem códigos e mensagens. Da mesma forma, os writeConcernErrors podem não fornecer nomes de código.
Resumo constante
Constantes incluídas de SdamErrorDetection
SdamErrorDetection::NODE_RECOVERING_CODES, SdamErrorDetection::NODE_SHUTTING_DOWN_CODES, SdamErrorDetection::NOT_MASTER_CODES
Recolhimento do Resumo do atributo de instância
-
#code ➤ inteiro
Somente leitura
privado
O código de erro analisado do documento.
-
#code_name ➤ string
Somente leitura
privado
O nome do código de erro analisado do documento.
-
#document ➤ BSON::Document
Somente leitura
privado
O documento devolvido.
-
#rótulos ➤ Array<String>
Somente leitura
privado
O conjunto de rótulos associados ao erro.
-
#mensagem ➤ string
Somente leitura
privado
A mensagem de erro completa a ser usada na exceção gerada.
-
#replies ⇒ Array<Protocol::Message>
Somente leitura
privado
A mensagem responde.
-
#server_message ➤ string
Somente leitura
privado
A mensagem de erro retornada pelo servidor analisada a partir da resposta.
- #wtimeout ➤ Objeto Somente leitura privado
Recolhimento do Resumo do método de classe
Recolhimento do Resumo do método de instância
-
#initialize(documento, respostas = nil, opções = nil) ➤ Analisador
construtor
privado
Crie o novo analisador com o documento retornado.
-
#write_concern_error? ➤ verdadeiro | false
Se o documento inclui um erro de write concern.
-
#write_concern_error_code ➤ Inteiro | nada
O código de erro para o erro de preocupação de gravação, se um erro de preocupação de gravação estiver presente e tiver um código.
-
#write_concern_error_code_name ➤ string | nada
O nome de código do erro de preocupação de gravação , se um erro de preocupação de gravação estiver presente e tiver um nome de código.
-
#write_concern_error_document ➤ Hash | nada
Retorna o documento de erro de write concern conforme relatado pelo servidor, se houver.
-
#write_concern_error_labels ➤ Array<String> | nada
privado
erro de write concern, se houver um erro de write concern presente.
Métodos incluídos do SdamErrorDetection
#node_recovering?, #node_shutting_down?, #not_master?
Detalhes do construtor
#initialize(documento, responses = nil, options = nil) ➤ Analisador
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Crie o novo analisador com o documento retornado.
No modo legado, os campos code e codeName do documento não são examinados porque o status (ok: 1) não faz parte do documento e não há como distinguir respostas bem-sucedidas de com falha usando o próprio documento, e um a resposta pode legitimamente ter { code: 123, codeName: 'foo' } como conteúdo de um documento inserido pelo usuário. As versões do servidor legado não preenchem code nem codeName, portanto, não lê-las não perde informações.
122 123 124 125 126 127 128 129 130 131 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 122 def inicializar(documento, respostas = nada, = nada) @document = documento || {} @replica = respostas @opções = se .dup mais {} end.congelar análise! end |
Detalhes do atributo da instância
#code ➤ Inteiro (somente leitura)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna o código de erro analisado do documento.
88 89 90 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 88 def código @code end |
#code_name ➤ string (somente leitura)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna o nome do código de erro analisado do documento.
92 93 94 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 92 def code_name @code_name end |
#document ➤ BSON::Document (readonly)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna O documento retornado.
73 74 75 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 73 def documento @document end |
#rótulos ➤ Array<String> (somente leitura)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna o conjunto de rótulos associados ao erro.
96 97 98 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 96 def rótulos @labels end |
#mensagem ➤ string (somente leitura)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna a mensagem de erro completa a ser usada na exceção gerada.
77 78 79 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 77 def @message end |
#replies ⇒ Array<Protocol::Message> (readonly)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna A mensagem responde.
84 85 86 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 84 def respostas @replica end |
#server_message ➤ string (readonly)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna A mensagem de erro retornada pelo servidor analisada a partir da resposta.
81 82 83 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 81 def @server_message end |
#wtimeout ➤ Object (somente leitura)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
99 100 101 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 99 def tempo esgotado @wtimeout end |
Detalhes do método de classe
.build_message(code: nil, code_name: nil, mensagem: nil) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 177 def (código: nada, code_name: nada, Mensagem: nada) se code_name && código "[#{code}:#{code_name}]: #{}" elsif code_name # Isso seguramente nunca deve acontecer, se houver um nome de código # também deve haver o código fornecido. # Lidar com este caso para completar. "[#{code_name}]: #{}" elsif código "[#{code}]: #{}" mais end end |
Detalhes do método de instância
#write_concern_error? ➤ verdadeiro | false
Retorna se o documento inclui um erro de write concern. Uma falha pode ter um erro de nível superior e um erro de write concern ou qualquer um dos dois.
139 140 141 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 139 def write_concern_error? !!write_concern_error_document end |
#write_concern_error_code ➤ Inteiro | nada
Retorna o código de erro para o erro de preocupação de gravação, se um erro de preocupação de gravação estiver presente e tiver um código.
157 158 159 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 157 def write_concern_error_code write_concern_error_document && write_concern_error_document['código'] end |
#write_concern_error_code_name ➤ string | nada
Retorna o nome do código do erro de preocupação de gravação, se um erro de preocupação de gravação estiver presente e tiver um nome de código.
166 167 168 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 166 def write_concern_error_code_name write_concern_error_document && write_concern_error_document['codeName'] end |
#write_concern_error_document ➤ Hash | nada
Retorna o documento de erro de write concern conforme relatado pelo servidor, se houver.
148 149 150 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 148 def write_concern_error_document documento['writeConcernError'] end |
#write_concern_error_labels ➤ Array<String> | nada
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
erro de write concern, se houver um erro de write concern presente.
172 173 174 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 172 def write_concern_error_labels write_concern_error_document && write_concern_error_document['errorLabels'] end |