Módulo: OperationFailure::Family

Estendido por:
Encaminhável
Inclui:
Mongo::Error::ReadWriteRetryable, Mongo::Error::SdamErrorDetection
Incluído em:
Mongo::Error::OperationFailure, Mongo::Error::ServerTimeoutError
Definido em:
lib/mongo/error/operation_failure.rb

Visão geral

Implementa o comportamento para um erro OperationFailure. Outros erros (por exemplo ServerTimeoutError) também podem implementar isso, para que possam ser reconhecidos e tratados como erros OperationFailure.

Colapsode resumo constante

CHANGE_STREAM_RESUME_ERRORS =

Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.

Códigos de erro e nomes de código que devem resultar em uma falha no comando getMore em um change stream que NÃO está sendo retomado.

[
  { code_name: 'HostUnreachable', código: 6 },
  { code_name: 'HostNotFound', código: 7 },
  { code_name: 'NetworkTimeout', código: 89 },
  { code_name: 'ShutdownInProgress', código: 91 },
  { code_name: 'PrimarySteppedDown', código: 189 },
  { code_name: 'ExceededTimeLimit', código: 262 },
  { code_name: 'SocketException', código: 9001 },
  { code_name: 'NotMaster', código: 10_107 },
  { code_name: 'InterruptedAtShutdown', código: 11_600 },
  { code_name: 'InterruptedDueToReplStateChange', código: 11_602 },
  { code_name: 'NotPrimaryNoSecondaryOk', código: 13_435 },
  { code_name: 'NotMasterOrSecondary', código: 13_436 },

  { code_name: 'StaleShardVersion', código: 63 },
  { code_name: 'FailedToSatisfyReadPreference', código: 133 },
  { code_name: 'StaleEpoch', código: 150 },
  { code_name: 'RetryChangeStream', código: 234 },
  { code_name: 'StaleConfig', código: 13_388 },
].congelar
Change_stream_resume_messages =

Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.

O change stream pode ser retomado quando essas mensagens de erro são encontradas.

Desde:

  • 2.6.0

ReadWriteRetryable::WRITE_RETRY_MSSAGES

Constantes incluídas do Mongo::Error::ReadWriteRetryable

Mongo::Error::ReadWriteRetryable::RETRY_MSSAGES, Mongo::Error::ReadWriteRetryable::WRITE_RETRY_ERRORS, Mongo::Error::ReadWriteRetryable::WRITE_RETRY_MSSAGES

Constantes incluídas de Mongo::Error::SdamErrorDetection

Mongo::Error::SdamErrorDetection::NODE_RECOVERING_CODES, Mongo::Error::SdamErrorDetection::NODE_SHUTTING_DOWN_CODES, Mongo::Error::SdamErrorDetection::NOT_MASTER_CODES

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Métodos incluídos do Mongo::Error::ReadWriteRetryable

#retryable?, #write_retryable?

Métodos incluídos do Mongo::Error::SdamErrorDetection

#node_recovering?, #node_shutting_down?, #not_master?

Detalhes do atributo da instância

#codeInteiro (somente leitura)

Retorna o código de erro analisado do documento.

Retorna:

  • (Inteiro)

    O código de erro analisado do documento.

Desde:

  • 2.6.0



43
44
45
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 43

def código
  @code
end

#code_name ➤ string (somente leitura)

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



48
49
50
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 48

def code_name
  @code_name
end

#detalhesstring | nil (somente leitura)

Retorna os detalhes do erro. Para WriteConcernErrors, é document['writeConcernError']['errInfo']. Para WriteErrors, isso é document['writeErrors'][0]['errInfo']. Para todos os outros erros, isso é nulo.

Retorna:

  • (string | nil)

    Os detalhes do erro. Para WriteConcernErrors, é document['writeConcernError']['errInfo']. Para WriteErrors, isso é document['writeErrors'][0]['errInfo']. Para todos os outros erros, isso é nulo.



151
152
153
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 151

def Detalhes
  @ detalhes
end

#documentoBSON::Documento | nil (somente leitura)

Retorna o documento de erro retornado pelo servidor.

Retorna:

  • (BSON::Document | nil)

    O documento de erro retornado pelo servidor.



156
157
158
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 156

def documento
  @document
end

#resultOperação::Result (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 objeto de resultado da operação.

Retorna:



161
162
163
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 161

def Resultado
  @result
end

#server_message ➤ string (readonly)

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.



54
55
56
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 54

def server_message
  @server_message
end

#write_concern_error_code ➤ Inteiro | nil (somente leitura)

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



139
140
141
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 139

def write_concern_error_code
  @write_concern_error_code
end

#write_concern_error_code_name ➤ string | nil (somente leitura)

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



145
146
147
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 145

def write_concern_error_code_name
  @write_concern_error_code_name
end

#write_concern_error_document ➤ Hash | nil (somente leitura)

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.



133
134
135
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 133

def write_concern_error_document
  @write_concern_error_document
end

Detalhes do método de instância

#change_stream_resumable?true, false

O change stream no qual ocorreu esse erro pode ser retomado, desde que a operação que acionou esse erro tenha sido um getMore?

Exemplos:

O erro é retomável para o fluxo de alterações?

error.change_stream_resumable?

Retorna:

  • (verdadeiro, falso)

    Se o erro é retomável.

Desde:

  • 2.6.0



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 96

def change_stream_resumable?
  se @result && @result.is_a?(mongo::(operação)::pegue mais::Resultado)
    # As exceções CursorNotFound são sempre retomáveis porque o servidor
    # não está ciente do ID do cursor e, portanto, não pode determinar se
    # o cursor é um fluxo de alteração e não pode adicionar o
    # Etiqueta ResumableChangeStreamError.
    Método true se código == 43

    # A descrição da conexão não é preenchida para escritas não reconhecidas.
    se connection_description.max_wire_version >= 9
      rótulo?('ResumableChangeStreamError')
    mais
      change_stream_resumable_code?
    end
  mais
    false
  end
end

#connection_descriptionServidor::Description

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 descrição do servidor MongoDB do servidor ao qual a operação a que esta exceção se refere foi executada.

Retorna:

  • (Server::Description)

    Descrição do servidor do servidor no qual a operação a que esta exceção se refere foi executada.



38
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 38

def_delegator :@result, :connection_description

#inicializar(mensagem = nil, resultado = nil, opções = {}) ➤ Objeto

Crie a falha da operação.

Parâmetros:

  • mensagem (string) (padrão para: nil)

    A mensagem de erro.

  • Resultado (Operação::Result) (padrão para: nil)

    O objeto de resultado.

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

    Parâmetros adicionais.

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

  • :code (Inteiro)

    Código de erro.

  • :code_name (string)

    Nome do código de erro.

  • :document (BSON::Document)

    O documento de erro retornado pelo servidor.

  • server_message (string)

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

  • :write_concern_error_document (Hash)

    O documento de erro de preocupação de gravação fornecido pelo servidor , se houver.

  • :write_concern_error_code (Inteiro)

    Código de erro para erro de preocupação de gravação , se houver.

  • :write_concern_error_code_name (string)

    Nome do código de erro para erro de write concern, se houver.

  • :write_concern_error_labels (Array<String>)

    Etiquetas de erro para o erro de preocupação de gravação , se houver.

  • :labels (Array<String>)

    O conjunto de rótulos associados ao erro.

  • :wtimeout (verdadeiro | falso)

    Se o erro é um tempo limite.



186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 186

def inicializar(mensagem = nada, Resultado = nada, opções = {})
  @ detalhes = retrieve_details(opções[:document])
  super(append_strings(mensagem, @ detalhes))

  @result = Resultado
  @code = opções[:code]
  @code_name = opções[:code_name]
  @write_concern_error_document = opções[:write_concern_error_document]
  @write_concern_error_code = opções[:write_concern_error_code]
  @write_concern_error_code_name = opções[:write_concern_error_code_name]
  @write_concern_error_labels = opções[:write_concern_error_labels] || []
  @labels = opções[:labels] || []
  @wtimeout = !!opções[:wtimeout]
  @document = opções[:document]
  @server_message = opções[:server_message]
end

#max_time_ms_expired?verdadeiro | false

Se o erro é MaxTimeMSExpired.

Retorna:

  • (verdadeiro | falso)

    Se o erro é MaxTimeMSExpired.

Desde:

  • 2.10.0



217
218
219
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 217

def max_time_ms_expired?
  código == 50 # MaxTimeMSExpired
end

#write_concern_error?verdadeiro | false

Retorna se a falha inclui um erro de preocupação de gravação . Uma falha pode ter um erro de nível superior e um erro de preocupação de gravação ou qualquer um dos dois.

Retorna:

  • (verdadeiro | falso)

    Se a falha inclui um erro de preocupação de gravação . Uma falha pode ter um erro de nível superior e um erro de preocupação de gravação ou qualquer um dos dois.

Desde:

  • 2.10.0



125
126
127
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 125

def write_concern_error?
  !!@write_concern_error_document
end

#tempo limite?verdadeiro | false

Se o erro é um tempo limite de preocupação de gravação .

Retorna:

  • (verdadeiro | falso)

    Se o erro é um tempo limite de preocupação de gravação .

Desde:

  • 2.7.1



208
209
210
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 208

def Wtimeout?
  @wtimeout
end