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 criado localmente e configurado para utilizar o armazenamento em cache remoto, além de garantir que o cache remoto seja usado de maneira 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 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 em cache local não estão incluídas nesse resumo. Se você não estiver recebendo
processos (ou um número abaixo do esperado), execute bazel clean
seguido pelo
comando de criação/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 armazená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 este:
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. Localize e resolva esses erros. Se a mensagem de erro exibida não fornecer 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 sinalização
--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 todas as máquinas a fim de garantir o armazenamento em cache desde a invocação do Bazel de gravação em cache até a invocação de leitura de cache.