Depuración de hits de caché remota para ejecución local

Informar un problema Ver fuente Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

En esta página, se describe cómo investigar los errores de caché en el contexto de una ejecución local.

En esta página, se supone que tienes una compilación o prueba que se compila de forma local de forma correcta y que está configurada para utilizar el almacenamiento en caché remoto, y que deseas asegurarte de que esta se use de manera eficaz.

Si quieres obtener sugerencias para verificar la tasa de aciertos de caché y comparar los registros de ejecución entre dos invocaciones de Bazel, consulta Cómo depurar los aciertos de caché remotos para la ejecución remota. Todo lo que se presenta en esa guía también se aplica a la caché remota con ejecución local. Sin embargo, la ejecución local presenta algunos desafíos adicionales.

Verifica la tasa de aciertos de caché

Los aciertos de caché remotos correctos aparecerán en la línea de estado, de manera similar a la tasa de aciertos de caché con ejecución remota.

En el resultado estándar de tu ejecución de Bazel, verás algo similar a lo siguiente:

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

Esto significa que, de 7 intentos de acciones, 3 recibieron un acierto de caché remota y 4 no tenían aciertos de caché y se ejecutaron de forma local con la estrategia linux-sandbox. Los aciertos de caché local no se incluyen en este resumen. Si obtienes 0 procesos (o una cantidad inferior a la esperada), ejecuta bazel clean seguido de tu comando de compilación o prueba.

Soluciona problemas de aciertos de caché

Si no obtienes la tasa de aciertos de caché que esperabas, haz lo siguiente:

Garantiza una comunicación exitosa con el extremo remoto

Para asegurarte de que tu compilación se comunique correctamente con la caché remota, sigue los pasos que se indican en esta sección.

  1. Comprueba el resultado en busca de advertencias

    Con la ejecución remota, si no se puede comunicarse con el extremo remoto, fallará la compilación. Por otro lado, una compilación local almacenable en caché no fallará si no puede almacenarla en caché. Comprueba el resultado de la invocación de Bazel en busca de advertencias, como las siguientes:

       WARNING: Error reading from the remote cache:
    

    o

       WARNING: Error writing to the remote cache:
    

    Estas advertencias seguidas de un mensaje de error que detalla el problema de conexión que debería ayudarte a depurar, por ejemplo, el nombre del extremo que está mal escrito o las credenciales establecidas de forma incorrecta. Encuentra y soluciona cualquiera de esos errores. Si el mensaje de error que ves no te proporciona suficiente información, intenta agregar --verbose_failures.

  2. Sigue los pasos de Soluciona problemas de aciertos de caché para la ejecución remota a fin de garantizar que las invocaciones de Bazel para escribir en caché puedan obtener aciertos de caché en la misma máquina y entre máquinas.

  3. Asegúrate de que tus invocaciones de Bazel de lectura de caché puedan obtener aciertos de caché.

    a. Dado que las invocaciones de Bazel que leen la caché tendrán una configuración de línea de comandos diferente, ten cuidado adicional para asegurarte de que estén configuradas correctamente para comunicarse con la caché remota. Asegúrate de que la marca --remote_cache esté configurada y de que no haya advertencias en el resultado.

    b. Asegúrate de que tus invocaciones de Bazel que leen la caché compilen los mismos destinos que las invocaciones de Bazel que escriben en la caché.

    c. Sigue los mismos pasos que para garantizar que se almacene en caché en todas las máquinas y garantizar el almacenamiento en caché desde la invocación de Bazel para escribir en caché hasta la invocación de Bazel de lectura de caché.