Classe: Mongo::Retryable::ReadWorker Privado
- Herda:
-
Baseworker
- Objeto
- Baseworker
- Mongo::Retryable::ReadWorker
- Definido em:
- build/ruby-driver-v2.19/lib/mongo/retryable/read_worker.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.
Implementa a lógica em torno da repetição das operações de leitura.
Resumo do atributo de instância
Atributos herdados do BaseWorker
Recolhimento do Resumo do método de instância
-
#read_with_one_retry(options = nil) { ... } ➤ Resultado
privado
Execute uma operação de leitura com uma única tentativa em erros de rede.
-
#read_with_retry(session = nil, server_selector = nil, &block) ➤ Resultado
privado
Execute uma operação de leitura com novas tentativas.
-
#read_with_retry_cursor(sessão, server_selector, visualização, &block) ➤ Cursor
privado
Execute uma operação de leitura retornando um cursor com novas tentativas.
Métodos herdados do BaseWorker
Detalhes do construtor
Esta classe herda um construtor de Mongo::Retryable::BaseWorker
Detalhes do método de instância
#read_with_one_retry(options = nil) { ... } ➤ Resultado
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.
Isso só repete as operações de leitura em erros de soquete.
Execute uma operação de leitura com uma única tentativa em erros de rede.
Este método é usado pelo condutor para algumas das operações internas de limpeza. As leituras solicitadas pelo aplicativo devem usar read_with_retry em vez desse método.
149 150 151 152 153 154 155 156 157 |
# File 'build/ruby-driver-v2.19/lib/mongo/retryable/read_worker.rb', linha 149 def read_with_one_retry( = nada) rendimento salvar *retryable_exceptions, Erro::PoolError => e aumentar e a menos que e.write_retryable? = && [:retry_message] log_retry(e, Mensagem: ) rendimento end |
#read_with_retry(session = nil, server_selector = nil, &block) ➤ Resultado
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.
Execute uma operação de leitura com novas tentativas.
Esse método executa a seleção de servidor para o seletor de servidor especificado e resulta no bloco fornecido, que deve executar a operação de query inicial e retornar seu resultado. O bloco será passado para o servidor selecionado para a operação. Se o bloco gerar uma exceção, e essa exceção corresponder a um erro de read retryable, e as tentativas de leitura estiverem habilitadas para o cliente, esse método executará a seleção do servidor novamente e gerará o bloco novamente (com potencialmente um servidor diferente). Se o bloco retornar com sucesso, o resultado do bloco será retornado.
Se as novas tentativas de leitura moderna estiverem ativadas (que é o padrão), a operação de leitura inicial será repetida uma vez. Se as novas tentativas de leitura legado estiverem ativadas, a operação de leitura inicial será repetida zero ou mais vezes, dependendo da configuração do cliente :max_read_retries , cujo padrão é 1. Para desabilitar as tentativas de leitura, desative as novas tentativas de leitura definindo retry_reads: false e defina :max_read_retries como 0 no cliente.
113 114 115 116 117 118 119 120 121 122 123 |
# File 'build/ruby-driver-v2.19/lib/mongo/retryable/read_worker.rb', linha 113 def read_with_retry(session = nada, server_selector = nada, &noum: bloco ; verb: bloquear) se session.nada? && server_selector.nada? deprecated_legacy_read_with_retry(&noum: bloco ; verb: bloquear) elsif session&.retry_reads? mod_read_with_retry(session, server_selector, &noum: bloco ; verb: bloquear) elsif Cliente.max_read_retry > 0 legacy_read_with_retry(session, server_selector, &noum: bloco ; verb: bloquear) mais read_without_retry(session, server_selector, &noum: bloco ; verb: bloquear) end end |
#read_with_retry_cursor(sessão, server_selector, visualização, &block) ➤ Cursor
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.
Execute uma operação de leitura retornando um cursor com novas tentativas.
Esse método executa a seleção de servidor para o seletor de servidor especificado e resulta no bloco fornecido, que deve executar a operação de query inicial e retornar seu resultado. O bloco será passado para o servidor selecionado para a operação. Se o bloco gerar uma exceção, e essa exceção corresponder a um erro de read retryable, e as tentativas de leitura estiverem habilitadas para o cliente, esse método executará a seleção do servidor novamente e gerará o bloco novamente (com potencialmente um servidor diferente). Se o bloco retornar com sucesso, o resultado do bloco (que deve ser um Mongo::Operation::Result) será usado para construir um objeto Mongo::Cursor para o conjunto de resultados. O cursor é então retornado.
Se as novas tentativas de leitura moderna estiverem ativadas (que é o padrão), a operação de leitura inicial será repetida uma vez. Se as novas tentativas de leitura legado estiverem ativadas, a operação de leitura inicial será repetida zero ou mais vezes, dependendo da configuração do cliente :max_read_retries , cujo padrão é 1. Para desabilitar as tentativas de leitura, desative as novas tentativas de leitura definindo retry_reads: false e defina :max_read_retries como 0 no cliente.
66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'build/ruby-driver-v2.19/lib/mongo/retryable/read_worker.rb', linha 66 def read_with_retry_cursor(session, server_selector, vista, &noum: bloco ; verb: bloquear) read_with_retry(session, server_selector) fazer |Servidor| Resultado = rendimento Servidor # RUBY-2367: será atualizado para permitir que o cache de query # cursores de cache com resultados de vários lotes. se Cache de consulta.habilitado? && !vista.collection.system_collection? CacheingCursor.Novo(vista, Resultado, Servidor, sessão: session) mais Cursor.Novo(vista, Resultado, Servidor, sessão: session) end end end |