Depuração de ocorrências em cache remoto para execução local

Informar um problema Ver código-fonte

Nesta página, descrevemos como investigar falhas de cache no contexto da execução local.

Nesta página, presumimos que você tenha uma versão e/ou teste que é compilado localmente e configurado para utilizar o armazenamento em cache remoto e que você queira garantir que o cache remoto esteja sendo usado de maneira eficaz.

Para ver dicas de 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 ocorrências do cache remoto para execução remota. Tudo o que é apresentado neste 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 remotas bem-sucedidas serão exibidas na linha de status, semelhante à taxa de ocorrências em cache com a execução remota.

Na saída padrão da execução do Bazel, você verá algo semelhante a isto:

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

Isso significa que de 7 tentativas, 3 receberam uma ocorrência em cache remoto e 4 não tiveram ocorrências em cache e foram executadas localmente usando a estratégia linux-sandbox. Ocorrências em cache local não estão incluídas neste resumo. Se você estiver recebendo 0 processos (ou um número menor que o esperado), execute bazel clean seguido pelo seu comando build/test.

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 uma comunicação bem-sucedida com o endpoint remoto

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

  1. Verifique se há avisos na sua saída

    Com a execução remota, uma falha na comunicação com o endpoint remoto falhará seu build. Por outro lado, um build local armazenável em cache não vai falhar se não for possível fazer isso. Verifique a saída da invocação do Bazel em busca de 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 precisa ajudar a depurar: por exemplo, nome do endpoint digitado incorretamente ou credenciais definidas incorretamente. Encontre e resolva esses erros. Se a mensagem de erro exibida não fornecer informações suficientes, adicione --verbose_failures.

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

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

    a. Como as invocações do Bazel para leitura de cache terão uma linha de comando diferente configurada, tome cuidado para garantir que elas estejam 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 invocações de gravação em cache do Bazel.

    c. Siga as mesmas etapas para garantir o armazenamento em cache nas máquinas e garantir o armazenamento do cache da invocação do Bazel na leitura do cache.