Classe: Mongo::Error::Parser Private

Herda:
Objeto
  • Objeto
mostrar tudo
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.

Desde:

  • 2.0.0

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

Recolhimento do Resumo do método de classe

Recolhimento do Resumo do método de instância

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.

Exemplos:

Crie o novo analisador.

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

Parâmetros:

  • documento (BSON::Document)

    O documento devolvido.

  • respostas (Array<Protocol::Message>) (padrão para: nil)

    A mensagem responde.

  • opções (Hash) (padrão para: nil)

    As opções.

Hash de opções (opções):

  • :legacy (verdadeiro | falso)

    Se o documento e as respostas são de um legado (anterior a3.2) resposta

Desde:

  • 2.0.0



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, opções = nada)
  @document = documento || {}
  @replica = respostas
  @opções = se opções
    opções.dup
  mais
    {}
  end.congelar
  análise!
end

Detalhes do atributo da instância

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

Retorna:

  • (Inteiro)

    O código de erro analisado do documento.

Desde:

  • 2.6.0



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.

Retorna:

  • (string)

    O nome do código de erro analisado do documento.

Desde:

  • 2.6.0



92
93
94
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 92

def code_name
  @code_name
end

#documentBSON::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.

Retorna:

  • (BSON::Document)

    O documento devolvido.

Desde:

  • 2.0.0



73
74
75
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 73

def documento
  @document
end

#rótulosArray<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.

Retorna:

  • (Array<String>)

    O conjunto de rótulos associados ao erro.

Desde:

  • 2.7.0



96
97
98
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 96

def rótulos
  @labels
end

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

Retorna:

  • (string)

    A mensagem de erro completa a ser usada na exceção gerada.

Desde:

  • 2.0.0



77
78
79
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 77

def mensagem
  @message
end

#repliesArray<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.

Retorna:

Desde:

  • 2.0.0



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.

Retorna:

  • (string)

    A mensagem de erro retornada pelo servidor analisada a partir da resposta.

Desde:

  • 2.0.0



81
82
83
# File 'build/ruby-driver-v2.19/lib/mongo/error/parser.rb', linha 81

def server_message
  @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.

Desde:

  • 2.0.0



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.

Desde:

  • 2.0.0



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 build_message(código: nada, code_name: nada, Mensagem: nada)
  se code_name && código
    "[#{code}:#{code_name}]: #{message}"
  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}]: #{message}"
  elsif código
    "[#{code}]: #{message}"
  mais
    mensagem
  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.

Retorna:

  • (verdadeiro | falso)

    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.

Desde:

  • 2.10.0



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.

Retorna:

  • (Inteiro | nil)

    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.

Desde:

  • 2.10.0



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.

Retorna:

  • (string | nil)

    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.

Desde:

  • 2.10.0



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.

Retorna:

  • (Hash | nulo)

    Erro de write concern conforme relatado ao servidor.

Desde:

  • 2.0.0



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.

Retorna:

  • (Array<String> | nil)

    As etiquetas de erro associadas a esta

Desde:

  • 2.0.0



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