Como depurar hits de cache remoto para execução local

Esta página descreve como investigar ausências no cache no contexto da execução local.

Esta página pressupõe que você tenha um build e/ou teste que seja criado com sucesso localmente e esteja configurado para usar o armazenamento em cache remoto, e que você queira garantir que o cache remoto esteja sendo usado de maneira eficaz.

Para conferir dicas sobre como verificar a taxa de ocorrências no cache e comparar os registros de execução entre duas invocações do Bazel, consulte Depuração de ocorrências no cache remoto para execução remota. Tudo o que é apresentado nesse guia também se aplica ao armazenamento em cache remoto com execução local. No entanto, a execução local apresenta alguns desafios adicionais.

Como verificar a taxa de ocorrências no cache

As ocorrências no cache remoto bem-sucedidas vão aparecer na linha de status, semelhante à taxa de ocorrências no cache com execução.

Na saída padrão da execução do Bazel, você verá algo como o seguinte:

   INFO: 7 processes: 3 remote cache hit, 4 linux-sandbox.

Isso significa que, das sete ações tentadas, três tiveram uma ocorrência no cache remoto e quatro ações não tiveram ocorrências no cache e foram executadas localmente usando linux-sandbox estratégia. As ocorrências no cache local não estão incluídas neste resumo. Se você estiver recebendo 0 processos (ou um número menor do que o esperado), execute bazel clean seguido de seu comando de build/teste.

Solução de problemas de ocorrências no cache

Se você não estiver recebendo a taxa de ocorrências no cache esperada, faça o seguinte:

Garantir a comunicação bem-sucedida com o endpoint remoto

Para garantir que o build esteja se comunicando com o cache remoto, siga as etapas desta seção.

  1. Verificar se há avisos na saída

    Com a execução remota, uma falha na comunicação com o endpoint remoto causaria falha no seu build. Por outro lado, um build local armazenável em cache não falharia se não pudesse ser armazenado em cache. Verifique a saída da invocação do Bazel para avisos, como

       WARNING: Error reading from the remote cache:
    

    ou

       WARNING: Error writing to the remote cache:
    

    Esses avisos serão seguidos pela mensagem de erro que detalha o problema de conexão que deve ajudar você a depurar: por exemplo, nome de endpoint digitado incorretamente ou credenciais definidas incorretamente. Encontre e resolva esses erros. Se a mensagem de erro que você vê não fornecer informações suficientes, tente adicionar --verbose_failures.

  2. Siga as etapas de Solução de problemas de ocorrências no cache para execução remota para garantir que as invocações do Bazel de gravação em cache possam receber ocorrências no cache na mesma máquina e em várias máquinas.

  3. Verifique se as invocações do Bazel de leitura de cache podem receber ocorrências no cache.

    a. Como as invocações do Bazel de leitura de cache têm uma configuração de linha de comando diferente, tome mais cuidado para garantir que elas estejam configuradas corretamente para se comunicar com o cache remoto. Verifique se a flag --remote_cache está definida e se não há avisos na saída.

    b. Verifique se as invocações do Bazel de leitura de cache criam os mesmos destinos que as invocações do Bazel de gravação em cache.

    c. Siga as mesmas etapas para garantir o armazenamento em cache em máquinas, para garantir o armazenamento em cache da invocação do Bazel de gravação em cache para a sua invocação do Bazel de leitura de cache.