Implementasi klien/server

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.
Laporkan masalah Lihat sumber

Sistem Bazel diimplementasikan sebagai proses server yang tahan lama. Hal ini memungkinkan untuk melakukan banyak pengoptimalan yang tidak mungkin dilakukan dengan implementasi berorientasi batch, seperti menyimpan cache file BUILD, grafik dependensi, dan metadata lainnya dari satu build ke build berikutnya. Hal ini meningkatkan kecepatan build inkremental, serta memungkinkan perintah yang berbeda, seperti build dan query berbagi cache paket yang sama, sehingga membuat kueri menjadi sangat cepat.

Saat menjalankan bazel, Anda menjalankan klien. Klien akan menemukan server berdasarkan basis output, yang secara default ditentukan oleh jalur direktori ruang kerja dasar dan userid Anda, sehingga jika mem-build di beberapa ruang kerja, Anda akan memiliki beberapa basis output dan dengan demikian beberapa proses server Bazel. Beberapa pengguna di workstation yang sama dapat di-build secara bersamaan di ruang kerja yang sama karena basis output mereka akan berbeda (ID pengguna yang berbeda). Jika tidak dapat menemukan instance server yang berjalan, klien akan memulai instance baru. Proses server akan berhenti setelah periode tidak aktif (secara default, 3 jam, yang dapat dimodifikasi menggunakan opsi startup --max_idle_secs).

Untuk sebagian besar kasus, fakta bahwa ada server yang berjalan tidak terlihat oleh pengguna, tetapi terkadang ada baiknya untuk mengingat hal ini. Misalnya, jika Anda menjalankan skrip yang menjalankan banyak build otomatis di direktori yang berbeda, Anda harus memastikan bahwa Anda tidak mengakumulasi banyak server yang tidak ada aktivitas. Anda dapat melakukannya dengan menghentikannya secara eksplisit setelah selesai, atau dengan menentukan periode waktu tunggu yang singkat.

Nama proses server Bazel muncul dalam output ps x atau ps -e f sebagai bazel(dirname), dengan dirname adalah nama dasar direktori yang menyertakan root direktori ruang kerja Anda. Contoh:

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

Hal ini memudahkan Anda mengetahui proses server mana yang termasuk dalam ruang kerja tertentu. (Perhatikan bahwa dengan opsi lain tertentu untuk ps, proses server Bazel dapat diberi nama hanya java.) Server Bazel dapat dihentikan menggunakan perintah shutdown.

Saat menjalankan bazel, klien akan terlebih dahulu memeriksa apakah server adalah versi yang sesuai; jika tidak, server akan dihentikan dan versi baru akan dimulai. Ini memastikan penggunaan proses server yang berjalan lama tidak mengganggu pembuatan versi yang tepat.