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

Informar um problema Ver código-fonte Nightly · 7.4 . 7,3 · 7.2 · 7,1 · 7,0 · 6,5

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

Esta página presume que você tem um build e/ou teste que cria corretamente local e configurado para utilizar o armazenamento em cache remoto, e que você quer garantir que o cache remoto está sendo utilizado.

Para dicas sobre como verificar a taxa de ocorrência em cache e comparar a execução entre duas invocações do Bazel, consulte Como depurar hits de cache remoto para execução remota. Tudo o que é apresentado neste guia também se aplica ao armazenamento em cache remoto com execução. 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ê 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 em cache

Se você não estiver recebendo a taxa de ocorrência em 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.

  1. Verifique 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, uma compilação local armazenável em cache não falharia se não é possível armazenar em cache. Verifique a saída da invocação do Bazel em busca de avisos, como: 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.

  2. 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.

  3. Garanta que as invocações do Bazel que leem o cache possam receber hits de cache.

    a. Como as invocações do Bazel na leitura de cache terão um conjunto de linha de comando diferente tome cuidado adicional para garantir que eles estejam se comunicar com o cache remoto. Verifique se a sinalização --remote_cache está definida e 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.