Sistem Bazel diimplementasikan sebagai proses server yang berumur panjang. Hal ini memungkinkan
aplikasi 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, dan memungkinkan
perintah yang berbeda, seperti build
dan query
untuk berbagi cache yang sama
dari paket yang dimuat, sehingga membuat kueri menjadi sangat cepat. Setiap server dapat menangani maksimal satu pemanggilan pada satu waktu; pemanggilan serentak lebih lanjut akan memblokir atau gagal cepat (lihat --block_for_lock
).
Saat menjalankan bazel
, Anda sedang menjalankan klien. Klien menemukan server berdasarkan basis output, yang secara default ditentukan oleh jalur direktori ruang kerja dasar dan userid, sehingga jika Anda membangun di beberapa ruang kerja, Anda akan memiliki beberapa basis output dan beberapa proses server Bazel. Beberapa pengguna di workstation yang sama dapat
melakukan proses build secara serentak di ruang kerja yang sama karena basis output mereka akan berbeda
(ID pengguna yang berbeda).
Jika klien tidak dapat menemukan instance server yang berjalan, instance server baru akan dimulai. Hal ini
dilakukan dengan memeriksa apakah basis output sudah ada, yang menunjukkan bahwa arsip
blaze telah dibuka paketnya. Atau, jika basis output tidak ada,
klien akan mengekstrak file arsip dan menetapkan mtime
-nya ke tanggal 9 tahun
di masa mendatang. Setelah diinstal, klien akan mengonfirmasi bahwa mtime
dari file yang telah diekstrak sama dengan tanggal yang masih jauh untuk memastikan tidak terjadi gangguan penginstalan.
Proses server akan berhenti setelah tidak aktif selama beberapa waktu (secara default, 3 jam,
yang dapat diubah menggunakan opsi pengaktifan --max_idle_secs
). Sebagian
besar, fakta bahwa ada server yang sedang berjalan tidak terlihat oleh pengguna, tetapi
terkadang perlu untuk diingat hal ini. Misalnya, jika Anda menjalankan skrip yang menjalankan banyak build otomatis di direktori yang berbeda, sebaiknya pastikan bahwa Anda tidak mengumpulkan banyak server yang tidak ada aktivitas. Anda dapat melakukannya dengan menonaktifkannya secara eksplisit setelah selesai menggunakannya, 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 untuk mengetahui proses server mana yang termasuk dalam ruang kerja
tertentu. (Harap diingat bahwa dengan opsi tertentu lainnya untuk ps
, proses server Bazel
dapat diberi nama hanya java
.) Server Bazel dapat dihentikan menggunakan
perintah shutdown.
Saat menjalankan bazel
, klien akan memeriksa terlebih dahulu apakah server tersebut adalah versi yang sesuai. Jika tidak, server akan dihentikan dan server baru akan dimulai. Hal ini memastikan bahwa penggunaan proses server yang berjalan lama tidak mengganggu pembuatan versi yang tepat.