Exceção: Mongo::Error::OperationFailure

Herda:
Mongo::Erro
  • Objeto
mostrar tudo
Estendido por:
Encaminhável
Inclui:
ReadWriteRetryable, SdamErrorDetection
Definido em:
build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb

Visão geral

Gerado quando uma operação falha por algum motivo.

Desde:

  • 2.0.0

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.

Desde:

  • 2.0.0

[
  {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: 10107},
  {code_name: 'InterruptedAtShutdown', código: 11600},
  {code_name: 'InterruptedDueToReplStateChange', código: 11602},
  {code_name: 'NotPrimaryNoSecondaryOk', código: 13435},
  {code_name: 'NotMasterOrSecondary', código: 13436},

  {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: 13388},
].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 de ReadWriteRetryable

ReadWriteRetryable::RETRY_messages, ReadWriteRetryable::WRITE_RETRY_ERRORS, ReadWriteRetryable::WRITE_RETRY_MSSAGES

Constantes incluídas de SdamErrorDetection

SdamErrorDetection::NODE_RECOVERING_CODES, SdamErrorDetection::NODE_SHUTTING_DOWN_CODES, SdamErrorDetection::NOT_MASTER_CODES

Constantes herdadas de Mongo::Error

BAD_VALUE, CODE, CURSOR_NOT_FOUND, ERR, ERRMSG, ERROR, TransIENT_TRANSACTION_ERROR_LAbel, UNKNOWN_ERROR, UNKNOWN_TRANSACTION_COMMIT_RESULT_LAbel, WRITE_CONCERN_ERROR, WRITE_CONCERN_ERRORS, WRITE_ERRORS

Recolhimento do Resumo do atributo de instância

Atributos incluídos de Notável

#connection_global_id, # generação, #service_id

Recolhimento do Resumo do método de instância

Métodos incluídos do ReadWriteRetryable

#retryable?, #write_retryable?

Métodos incluídos do SdamErrorDetection

#node_recovering?, #node_shutting_down?, #not_master?

Métodos herdados do Mongo::Error

#write_concern_error_label?, #write_concern_error_labels

Métodos incluídos do WriteRetryable

#write_retryable?

Métodos incluídos do Labelable

#add_label, #label?, #labels

Métodos incluídos do Notable

#add_note, #add_notes, #notes, #to_s

Detalhes do construtor

#initialize(message = nil, result = nil, options = {}) ➤ OperationFailure

Crie a falha da operação.

Exemplos:

Criar o objeto de erro

OperationFailure.new(message, result)

Crie o objeto de erro com um código e um nome de código

OperationFailure.new(message, result, :code => code, :code_name => code_name)

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.

Desde:

  • 2.0.0



187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
# File 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', linha 187

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

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
# File 'build/ruby-driver-v2.19/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
# File 'build/ruby-driver-v2.19/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 este é ' documento['errInfo']'. Para WriteErrors este é ' documento[0]'. Para todos os outros erros, isso é nulo.

Retorna:

  • (string | nil)

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

Desde:

  • 2.0.0



151
152
153
# File 'build/ruby-driver-v2.19/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.

Desde:

  • 2.0.0



156
157
158
# File 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', linha 156

def documento
  @document
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.

Desde:

  • 2.0.0



54
55
56
# File 'build/ruby-driver-v2.19/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
# File 'build/ruby-driver-v2.19/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
# File 'build/ruby-driver-v2.19/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.

Desde:

  • 2.0.0



133
134
135
# File 'build/ruby-driver-v2.19/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
# File 'build/ruby-driver-v2.19/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
# File 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', linha 38

def_delegator :@result, :connection_description

#max_time_ms_expired?verdadeiro | false

Se o erro é MaxTimeMSExpired.

Retorna:

  • (verdadeiro | falso)

    Se o erro é MaxTimeMSExpired.

Desde:

  • 2.10.0



218
219
220
# File 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', linha 218

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

#unsupported_retryable_write?verdadeiro | false

Se o erro é causado por uma tentativa de gravações repetíveis em um mecanismo de armazenamento que não oferece suporte a retryable writes.

gravações repetíveis em um mecanismo de armazenamento que não oferece suporte a gravações repetíveis.

Retorna:

  • (verdadeiro | falso)

    Se o erro é causado por uma tentativa

Desde:

  • 2.10.0



229
230
231
232
233
234
# File 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', linha 229

def unsupported_retryable_write?
  # código 20 é IllegalOperation.
  # Observe que se espera que o documento seja um BSON::Documento, portanto
  # tendo chaves de string ou fornecendo acesso indiferente.
  código == 20 && server_message&.start_with?("Números de transação") || false
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
# File 'build/ruby-driver-v2.19/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



209
210
211
# File 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', linha 209

def Wtimeout?
  @wtimeout
end