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

Informar un problema Ver fuente

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

En esta página, se da por sentado que tienes una compilación o prueba que se compila de forma local correctamente y que está configurada para utilizar el almacenamiento en caché remoto, y que quieres asegurarte de que la caché remota 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 Depuración de aciertos de caché remota para la ejecución remota. Todo lo que se presenta en esa guía también se aplica al almacenamiento en caché remoto con ejecución local. Sin embargo, la ejecución local presenta algunos desafíos adicionales.

Cómo comprobar la tasa de aciertos de caché

Los aciertos de caché remota se mostrarán en la línea de estado, de forma similar a Tasa de aciertos de caché con Ejecución remota.

En el resultado estándar de la ejecución de Bazel, verás algo como 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 acciones no tuvieron 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 un número inferior al esperado), ejecuta bazel clean seguido del comando de compilación o prueba.

Solución de problemas de aciertos de caché

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

Garantiza la 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. Verifica el resultado para ver las advertencias.

    Con la ejecución remota, si no puedes comunicarte con el extremo remoto, fallará tu compilación. Por otro lado, una compilación local que se puede almacenar en caché no fallará si no puede almacenarse en caché. Verifica el resultado de tu invocación de Bazel para ver advertencias, como las siguientes:

       WARNING: Error reading from the remote cache:
    

    o

       WARNING: Error writing to the remote cache:
    

    A esas advertencias les seguirá el mensaje de error que detalla el problema de conexión que debería ayudarte a depurar, por ejemplo, un nombre de extremo mal escrito o credenciales configuradas incorrectamente. Encuentra y soluciona esos errores. Si el mensaje de error que ves no te brinda suficiente información, intenta agregar --verbose_failures.

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

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

    a. Dado que las invocaciones de Bazel de lectura de caché tendrán configurada una línea de comandos diferente, debes 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 las invocaciones de Bazel de lectura de caché compilen los mismos destinos que las invocaciones de Bazel de escritura en caché.

    c. Sigue los mismos pasos que para garantizar el almacenamiento en caché entre máquinas a fin de garantizar el almacenamiento en caché de tu invocación de Bazel que escribe en caché a tu invocación de Bazel de lectura de caché.