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 supone que tienes una compilación o una prueba que se compila correctamente de forma local y que está configurada para utilizar el almacenamiento en caché remoto, y que deseas asegurarte de que la caché remota se utilice de manera eficaz.
Para obtener sugerencias sobre cómo verificar la tasa de aciertos de caché y cómo comparar los registros de ejecución entre dos invocaciones de Bazel, consulta Cómo depurar los 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 verificar la tasa de aciertos de caché
Los aciertos de caché remota correctos aparecerán en la línea de estado, de forma similar a la tasa de aciertos de caché con la 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 las 7 acciones intentadas, 3 obtuvieron 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 de
tu 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:
Asegúrate de que la comunicación con el extremo remoto sea exitosa
Para asegurarte de que tu compilación se comunique correctamente con la caché remota, sigue los pasos de esta sección.
Comprueba el resultado en busca de advertencias
Con la ejecución remota, si no se puede comunicar con el extremo remoto, la compilación fallará. Por otro lado, una compilación local que se pueda almacenar en caché no fallará si no se puede almacenar en caché. Consulta 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 irán seguidas del mensaje de error que detalla el problema de conexión que debería ayudarte a depurar: por ejemplo, el nombre del extremo mal escrito o las credenciales configuradas de forma incorrecta. Busca y soluciona esos errores. Si el error mensaje que ves no te brinda suficiente información, intenta agregar
--verbose_failures.Sigue los pasos de Solución de problemas de aciertos de caché para la ejecución remota para asegurarte de que las invocaciones de Bazel que escriben en la caché puedan obtener aciertos de caché en la misma máquina y en diferentes máquinas.
Asegúrate de que las invocaciones de Bazel que leen de la caché puedan obtener aciertos de caché.
a. Dado que las invocaciones de Bazel que leen de la caché tendrán una configuración de línea de comandos diferente, ten más cuidado para asegurarte de que estén configuradas correctamente para comunicarse con la caché remota. Asegúrate de que la marca
--remote_cacheesté configurada y de que no haya advertencias en el resultado.b. Asegúrate de que las invocaciones de Bazel que leen de la caché compilen los mismos destinos que las invocaciones de Bazel que escriben en la caché.
c. Sigue los mismos pasos para garantizar el almacenamiento en caché en diferentes máquinas, para garantizar el almacenamiento en caché desde la invocación de Bazel que escribe en la caché hasta la invocación de Bazel que lee de la caché.