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 prueba que se compila correctamente de forma local y que está configurada para usar el almacenamiento en caché remoto, y que deseas asegurarte de que la caché remota se use de forma efectiva.
Para obtener sugerencias sobre cómo verificar la tasa de aciertos de caché y comparar los registros de ejecución entre dos invocaciones de Bazel, consulta Depura 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.
Verifica la tasa de aciertos de caché
Los aciertos de caché remota correctos se mostrarán en la línea de estado, 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 acción, 3 recibieron un acierto de caché remota y 4 acciones 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 un número menor que el esperado), ejecuta bazel clean
seguido de tu comando de compilación o de prueba.
Soluciona problemas de aciertos de caché
Si no obtienes la tasa de aciertos de caché que esperas, 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 de esta sección.
Verifica el resultado de las advertencias
Con la ejecución remota, si no se puede hablar con el extremo remoto, la compilación fallará. Por otro lado, una compilación local almacenable en caché no fallará si no puede almacenarla en caché. Verifica el resultado de tu invocación de Bazel para ver las advertencias, como las siguientes:
WARNING: Error reading from the remote cache:
o
WARNING: Error writing to the remote cache:
A estas advertencias les seguirá el 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. Busque y solucione esos errores. Si el mensaje de error que ves no te proporciona suficiente información, intenta agregar
--verbose_failures
.Sigue los pasos que se indican en Soluciona problemas de aciertos de caché para la ejecución remota a fin de garantizar que las invocaciones de Bazel de escritura en caché puedan obtener hits de caché en la misma máquina y entre máquinas.
Asegúrate de que las invocaciones de Bazel que lean caché puedan obtener aciertos de caché.
a. Dado que las invocaciones de Bazel que leen en caché tendrán una línea de comandos diferente configurada, ten especial cuidado de que estén configuradas correctamente para comunicarse con la caché remota. Asegúrate de que la marca
--remote_cache
esté configurada y que no haya advertencias en el resultado.b. Asegúrate de que las invocaciones de Bazel con lectura de caché compilen los mismos destinos que las invocaciones de Bazel para escritura en caché.
c. Sigue los mismos pasos que para garantizar el almacenamiento en caché entre las máquinas y garantizar que se almacene en caché de tu invocación de Bazel de escritura en caché a la de Bazel que lee la caché.