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

Informar um problema Acessar a origem

Nesta página, descrevemos como investigar ausências no cache no contexto da execução local.

Esta página pressupõe que você tem uma versão e/ou teste que cria com sucesso localmente e está configurado para utilizar o armazenamento em cache remoto e que você quer garantir que o cache remoto esteja sendo utilizado de forma eficaz.

Para dicas sobre como verificar a taxa de ocorrência em cache e comparar os registros de execução entre duas invocações do Bazel, consulte Como depurar hits de cache remoto para execução remota. Tudo 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ência em cache

As ocorrências em cache remoto bem-sucedidas serão exibidas na linha de status, semelhante à Taxa de ocorrências em cache com execução remota.

Na saída padrão da execução do Bazel, você verá algo parecido com este:

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

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

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

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

Garanta uma comunicação bem-sucedida com o endpoint remoto

Para garantir que sua versão se comunique com êxito com o cache remoto, siga as etapas nesta seção.

  1. Verifique se há avisos nas saídas

    Com a execução remota, uma falha na comunicação com o endpoint remoto faria com que a compilação falhasse. Por outro lado, uma compilação local armazenável em cache não falharia se não fosse possível armazená-la em cache. Verifique se há avisos na saída da invocação do Bazel, como:

       WARNING: Error reading from the remote cache:
    

    ou

       WARNING: Error writing to the remote cache:
    

    Esses avisos serão seguidos por uma mensagem de erro detalhando o problema de conexão que ajudará a depurar: por exemplo, nome do endpoint digitado incorretamente ou definição incorreta de credenciais. Encontre e resolva esses erros. Se a mensagem de erro exibida não fornecer informações suficientes, tente adicionar --verbose_failures.

  2. Siga as etapas em Como solucionar problemas de ocorrências em cache para execução remota para garantir que suas invocações de gravação em cache do Bazel recebam hits em 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 em cache.

    a. Como as invocações do Bazel de leitura de cache terão uma linha de comando diferente configurada, verifique também se elas estão configuradas corretamente para se comunicar com o cache remoto. Verifique se a sinalização --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 de gravação em cache do Bazel.

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