Classe: Mongo::Retryable::ReadWorker Privado

Herda:
Baseworker mostrar tudo
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.

Desde:

  • 2.19.0

Resumo do atributo de instância

Atributos herdados do BaseWorker

#retryable

Recolhimento do Resumo do método de instância

Métodos herdados do BaseWorker

#initialize

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.

Observação:

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.

Exemplos:

Execute a leitura.

read_with_one_retry do
  ...
end

Parâmetros:

  • opções (Hash | nulo) (padrão para: nil)

    Opções.

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

  • :retry_message (string)

    Mensagem para registrar ao tentar novamente.

Rendimento:

  • Chama o bloco fornecido sem argumentos

Retorna:

  • (Resultado)

    O resultado da operação.

Desde:

  • 2.2.6



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(opções = nada)
  rendimento
salvar *retryable_exceptions, Erro::PoolError => e
  aumentar e a menos que e.write_retryable?

  retry_message = opções && opções[:retry_message]
  log_retry(e, Mensagem: retry_message)
  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.

Exemplos:

Execute a leitura.

read_with_retry(session, server_selector) do |server|
  ...
end

Parâmetros:

  • session (Mongo::Session | nil) (padrão para: nil)

    A sessão em que a operação está sendo executada.

  • server_selector (Mongo::ServerSelector::Selectable | nil) (padrão para: nil)

    Seletor de servidor para a operação.

  • noum: bloco ; verb: bloquear (Proc)

    O bloco a ser executado.

Retorna:

  • (Resultado)

    O resultado da operação.

Desde:

  • 2.19.0



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.

Exemplos:

Execute uma leitura retornando um cursor.

cursor = read_with_retry_cursor(session, server_selector, view) do |server|
  # return a Mongo::Operation::Result
  ...
end

Parâmetros:

  • session (Mongo::Session)

    A sessão em que a operação está sendo executada.

  • server_selector (Mongo::ServerSelector::Selectable)

    Seletor de servidor para a operação.

  • vista (CollectionView)

    O CollectionView definindo a query.

  • noum: bloco ; verb: bloquear (Proc)

    O bloco a ser executado.

Retorna:

  • (Cursor)

    O cursor para o conjunto de resultados.

Desde:

  • 2.19.0



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