Sistem Bazel diimplementasikan sebagai proses server yang berumur panjang. Hal ini memungkinkan
untuk melakukan banyak pengoptimalan yang tidak mungkin dilakukan
dengan implementasi berorientasi batch,
seperti pembuatan cache file BUILD, grafik dependensi, dan
membuatnya lebih maju. Hal ini meningkatkan kecepatan build inkremental, dan memungkinkan
perintah yang berbeda, seperti build
dan query
untuk berbagi cache yang sama
paket yang dimuat, membuat kueri 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 adalah
ditentukan oleh jalur direktori ruang kerja dasar dan id pengguna Anda, jadi jika
Anda membangun di beberapa ruang kerja, Anda akan memiliki beberapa basis output dan dengan demikian
beberapa proses server Bazel. Beberapa pengguna di
workstation yang sama dapat
dibangun secara serentak di ruang kerja yang sama karena basis {i>output<i} mereka akan berbeda
(ID pengguna berbeda).
Jika klien tidak dapat menemukan instance server yang berjalan, instance server baru akan dimulai. Ini
melakukannya dengan memeriksa apakah basis output sudah ada, yang menyiratkan api
arsip telah dibuka. Sebaliknya jika basis {i>output<i} tidak ada,
klien mengekstrak file arsip dan menyetel mtime
ke tanggal 9 tahun
di masa mendatang. Setelah diinstal, klien mengonfirmasi bahwa mtime
dari
file yang diekstrak sama dengan tanggal yang jauh untuk memastikan tidak ada gangguan instalasi
yang terjadi.
Proses server akan berhenti setelah tidak aktif selama beberapa waktu (secara {i>default<i} 3 jam,
yang dapat diubah menggunakan opsi pengaktifan --max_idle_secs
). Untuk sebagian besar
fakta bahwa ada server yang sedang berjalan
tidak terlihat oleh pengguna, namun
terkadang ada baiknya untuk
diingat hal ini. Misalnya, jika Anda menjalankan skrip
yang menjalankan banyak build otomatis
di berbagai direktori, penting untuk
untuk memastikan bahwa Anda tidak mengumpulkan
banyak server yang tidak ada aktivitas; Anda dapat melakukannya dengan
secara eksplisit mematikannya bila
Anda sudah menyelesaikannya, atau dengan
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
yang mencakup {i>root <i}dari direktori {i>workspace<i} 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 suatu
Workspace. (Ketahuilah bahwa dengan opsi tertentu lainnya untuk ps
, server Bazel
proses dapat diberi nama hanya java
.) Server Bazel dapat dihentikan menggunakan
perintah shutdown.
Saat menjalankan bazel
, klien akan memeriksa terlebih dahulu apakah server tersebut
versi; jika tidak, server dihentikan
dan yang baru dimulai. Hal ini memastikan bahwa
penggunaan proses server yang berjalan
lama tidak mengganggu
pembuatan versi.