Esta página descreve como investigar perdas de cache no contexto da execução local.
Nesta página, presumimos que você tenha um build e/ou teste que seja criado localmente e configurado para usar o armazenamento em cache remoto. Além disso, você quer garantir que o cache remoto esteja sendo usado de maneira eficaz.
Para 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 Como depurar 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ência em cache
As ocorrências de cache remotas bem-sucedidas vão aparecer na linha de status, semelhante a Taxa de ocorrências de cache com execução remota.
Na saída padrão da execução do Bazel, você verá algo como isto:
INFO: 7 processes: 3 remote cache hit, 4 linux-sandbox.
Isso significa que, de sete ações tentadas, três tiveram uma ocorrência de cache remoto e quatro
não tiveram ocorrências de cache e foram executadas localmente usando a estratégia
linux-sandbox
. As ocorrências de cache local não estão incluídas neste resumo. Se você receber
0 processos (ou um número menor do que o 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 acertos de cache esperada, faça o seguinte:
Garantir a comunicação com o endpoint remoto
Para garantir que seu build se comunique com o cache remoto, siga as etapas desta seção.
Verificar se há avisos na saída
Com a execução remota, uma falha na comunicação com o endpoint remoto faria com que o build falhasse. Por outro lado, um build local endereçável em cache não falharia se não pudesse armazenar em cache. Verifique a saída da invocação do Bazel para conferir 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ê recebeu não tiver informações suficientes, tente adicionar
--verbose_failures
.Siga as etapas em Solução de problemas de acertos de cache para execução remota para garantir que as invocações do Bazel que gravam cache consigam acertos de cache na mesma máquina e em várias máquinas.
Garanta que as invocações do Bazel que leem o cache possam receber hits de cache.
a. Como as invocações do Bazel que leem o cache terão uma configuração de linha de comando diferente, tome cuidado para garantir que elas sejam 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 que leem o cache criam as mesmas metas que as invocações do Bazel que gravam o 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 que grava o cache para a invocação do Bazel que lê o cache.