Exceção: Mongo::Error::OperationFailure
- Herda:
-
Mongo::Erro
- Objeto
- StandardError
- Mongo::Erro
- Mongo::Error::OperationFailure
- 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.
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: 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.
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
-
#code ➤ inteiro
Somente leitura
O código de erro analisado do documento.
-
#code_name ➤ string
Somente leitura
O nome do código de erro analisado do documento.
-
#detalhes ➤ string | nada
Somente leitura
Os detalhes do erro.
-
#document ⇒ BSON::Document | nil
Somente leitura
O documento de erro retornado pelo servidor.
-
#server_message ➤ string
Somente leitura
A mensagem de erro retornada pelo servidor analisada a partir da resposta.
-
#write_concern_error_code ➤ Inteiro | nada
Somente leitura
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
Somente leitura
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
Somente leitura
Retorna o documento de erro de write concern conforme relatado pelo servidor, se houver.
Atributos incluídos de Notável
#connection_global_id, # generação, #service_id
Recolhimento do Resumo do método de instância
-
#change_stream_resumable? ➤ verdadeiro, falso
O change stream no qual ocorreu esse erro pode ser retomado, desde que a operação que acionou esse erro tenha sido um getMore?.
-
#connection_description ➤ Servidor::Description
privado
Descrição do servidor do servidor no qual a operação a que esta exceção se refere foi executada.
-
#initialize(message = nil, result = nil, options = {}) ➤ OperationFailure
construtor
Crie a falha da operação.
-
#max_time_ms_expired? ➤ verdadeiro | false
Se o erro é MaxTimeMSExpired.
-
#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.
-
#write_concern_error? ➤ verdadeiro | false
Se a falha inclui um erro de write concern.
-
#tempo limite? ➤ verdadeiro | false
Se o erro é um tempo limite de preocupação de gravação .
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
Métodos incluídos do Labelable
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.
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( = nada, Resultado = nada, = {}) @ detalhes = retrieve_details([:document]) super(append_strings(, @ detalhes)) @result = Resultado @code = [:code] @code_name = [:code_name] @write_concern_error_document = [:write_concern_error_document] @write_concern_error_code = [:write_concern_error_code] @write_concern_error_code_name = [:write_concern_error_code_name] @write_concern_error_labels = [:write_concern_error_labels] || [] @labels = [:labels] || [] @wtimeout = !![:wtimeout] @document = [:document] @server_message = [:server_message] end |
Detalhes do atributo da instância
#code ➤ Inteiro (somente leitura)
Retorna o código de erro analisado do documento.
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.
48 49 50 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', linha 48 def code_name @code_name end |
#detalhes ➤ string | nil (somente leitura)
151 152 153 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', linha 151 def Detalhes @ detalhes end |
#documento ➤ BSON::Documento | nil (somente leitura)
Retorna o documento de erro retornado pelo servidor.
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.
54 55 56 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', linha 54 def @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.
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.
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.
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?
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_description ➤ Servidor::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.
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.
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.
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 && &.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.
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 .
209 210 211 |
# File 'build/ruby-driver-v2.19/lib/mongo/error/operation_failure.rb', linha 209 def Wtimeout? @wtimeout end |