Módulo: Mongo::Error::OperationFailure::Family
- Estendido por:
- Encaminhável
- Inclui:
- ReadWriteRetryable, SdamErrorDetection
- Incluído em:
- Mongo::Error::OperationFailure, 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: 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
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.
-
#result ➤ Operação::Result
Somente leitura
privado
O objeto de resultado da operação.
-
#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.
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.
-
#inicializar(mensagem = nil, resultado = nil, opções = {}) ➤ Objeto
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?
Detalhes do atributo da instância
#code ➤ Inteiro (somente leitura)
Retorna o código de erro analisado do documento.
44 45 46 |
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 44 def código @code end |
#code_name ➤ string (somente leitura)
Retorna o nome do código de erro analisado do documento.
49 50 51 |
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 49 def code_name @code_name end |
#detalhes ➤ string | nil (somente leitura)
152 153 154 |
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 152 def Detalhes @ detalhes end |
#documento ➤ BSON::Documento | nil (somente leitura)
Retorna o documento de erro retornado pelo servidor.
157 158 159 |
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 157 def documento @document end |
#result ➤ Operaçã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.
162 163 164 |
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 162 def Resultado @result end |
#server_message ➤ string (readonly)
Retorna A mensagem de erro retornada pelo servidor analisada a partir da resposta.
55 56 57 |
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 55 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.
140 141 142 |
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 140 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.
146 147 148 |
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 146 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.
134 135 136 |
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 134 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?
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 97 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.
39 |
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 39 def_delegator :@result, :connection_description |
#inicializar(mensagem = nil, resultado = nil, opções = {}) ➤ Objeto
Crie a falha da operação.
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# Arquivo '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 |
#max_time_ms_expired? ➤ verdadeiro | false
Se o erro é MaxTimeMSExpired.
218 219 220 |
# Arquivo '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 |
# Arquivo '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.
126 127 128 |
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 126 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 |
# Arquivo 'lib/mongo/error/operation_failure.rb', linha 209 def Wtimeout? @wtimeout end |