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

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

Nesta página, presumimos que você tenha um build e/ou teste criado localmente, configurado para utilizar o armazenamento em cache remoto e que quer 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 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 bem-sucedidas em cache remoto 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 parecido com o seguinte:

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

Isso significa que, das 7 tentativas de ação, 3 tiveram 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. 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 menor do que o 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 ocorrência em cache esperada, faça o seguinte:

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

Para garantir que o build esteja se comunicando com o cache remoto, siga as etapas nesta seção.

  1. Verifique se há avisos na saída

    Com a execução remota, uma falha ao se comunicar com o endpoint remoto causaria uma falha no build. 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 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 por uma mensagem de erro com detalhes do problema de conexão que deve ajudar na depuração. Por exemplo, nome do 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.

  2. Siga as etapas em Como solucionar problemas de ocorrência em cache para execução remota para garantir que as invocações do Bazel de gravação em cache recebam ocorrências de cache na mesma máquina e entre 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, tome ainda mais 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 do Bazel de gravação em 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.