Implementación del cliente o servidor

Informar un problema Ver fuente Por la noche · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

El sistema Bazel se implementa como un proceso de servidor de larga duración. Esto le permite muchas optimizaciones que no son posibles con una implementación por lotes como el almacenamiento en caché de archivos BUILD, gráficos de dependencia y otros metadatos de uno construir para el siguiente. Esto mejora la velocidad de las compilaciones incrementales y permite comandos diferentes, como build y query, para compartir la misma caché de paquetes cargados, lo que hace que las consultas sean muy rápidas.

Cuando ejecutas bazel, ejecutas el cliente. El cliente encuentra el servidor basada en la base de salida, que, de forma predeterminada, se determina por la ruta de acceso de la base y tu userid. Si compilas en varios lugares de trabajo, Tendrá varias bases de salida y, por lo tanto, varios procesos del servidor de Bazel. Varios usuarios en la misma estación de trabajo pueden compilar simultáneamente en la misma ya que sus bases de salida serán diferentes (diferentes ID de usuario). Si el botón el cliente no puede encontrar una instancia de servidor en ejecución, inicia una nueva. El servidor el proceso se detendrá tras un período de inactividad (3 horas, de forma predeterminada, que pueden modificarse con la opción de inicio --max_idle_secs).

En gran parte, el hecho de que haya un servidor en ejecución es invisible para el usuario, pero a veces es útil tener esto en mente. Por ejemplo, si estás ejecutar secuencias de comandos que realizan muchas compilaciones automatizadas en distintos directorios asegúrese de no acumular muchos servidores inactivos. tú puedes hacerlo apágalos explícitamente cuando hayas terminado con ellos especificando un tiempo de espera corto.

El nombre de un proceso del servidor de Bazel aparece en el resultado de ps x o ps -e f. como bazel(dirname), donde dirname es el nombre base del que contiene la raíz del directorio de tu lugar de trabajo. Por ejemplo:

ps -e f
16143 ?        Sl     3:00 bazel(src-johndoe2) -server -Djava.library.path=...

Esto hace que sea más fácil averiguar qué proceso del servidor pertenece a un determinado Workspace. Ten en cuenta que con algunas otras opciones para ps, el servidor Bazel pueden llamarse únicamente java). Los servidores de Bazel pueden dejar de usar el shutdown.

Cuando se ejecuta bazel, el cliente primero verifica que el servidor sea el adecuado versión; De lo contrario, el servidor se detiene y se inicia uno nuevo. Esto garantiza que el uso de un proceso de servidor de larga duración no interfiere en el y el control de versiones.