Classe: Mongo::Error::Parser Private

Herda:
Objeto
  • Objeto
mostrar tudo
Inclui:
SdamErrorDetection
Definido em:
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.

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.

Desde:

  • 2.0.0



85
86
87
88
89
90
91
92
93
94
# Arquivo 'lib/mongo/error/parser.rb', linha 85

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



62
63
64
# Arquivo 'lib/mongo/error/parser.rb', linha 62

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



66
67
68
# Arquivo 'lib/mongo/error/parser.rb', linha 66

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



47
48
49
# Arquivo 'lib/mongo/error/parser.rb', linha 47

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



70
71
72
# Arquivo 'lib/mongo/error/parser.rb', linha 70

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



51
52
53
# Arquivo 'lib/mongo/error/parser.rb', linha 51

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



58
59
60
# Arquivo 'lib/mongo/error/parser.rb', linha 58

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



55
56
57
# Arquivo 'lib/mongo/error/parser.rb', linha 55

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



73
74
75
# Arquivo 'lib/mongo/error/parser.rb', linha 73

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



140
141
142
143
144
145
146
147
148
149
150
151
152
153
# Arquivo 'lib/mongo/error/parser.rb', linha 140

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



102
103
104
# Arquivo 'lib/mongo/error/parser.rb', linha 102

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



120
121
122
# Arquivo 'lib/mongo/error/parser.rb', linha 120

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



129
130
131
# Arquivo 'lib/mongo/error/parser.rb', linha 129

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



111
112
113
# Arquivo 'lib/mongo/error/parser.rb', linha 111

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



135
136
137
# Arquivo 'lib/mongo/error/parser.rb', linha 135

def write_concern_error_labels
  write_concern_error_document && write_concern_error_document['errorLabels']
end