Bazel sistemi uzun ömürlü bir sunucu işlemi olarak uygulanmıştır. Bu sayede, BUILD dosyalarının, bağımlılık graflarının ve bir derlemeden diğerine diğer meta verilerin önbelleğe alınması gibi toplu işleme odaklı bir uygulamayla mümkün olmayan birçok optimizasyon gerçekleştirebilir. Bu, artımlı derlemelerin hızını artırır ve build
ve query
gibi farklı komutların, yüklü paketlerin aynı önbelleğini paylaşmasına olanak tanır. Böylece sorgular çok hızlı bir şekilde yapılır.
bazel
çalıştırdığınızda istemciyi çalıştırmış olursunuz. İstemci, sunucuyu çıkış tabanına göre bulur. Çıkış tabanı varsayılan olarak ana Workspace dizininin yoluna ve kullanıcı kimliğinize göre belirlenir. Bu nedenle, birden fazla Workspace'te derleme yaparsanız birden fazla çıkış tabanı ve dolayısıyla birden fazla Bazel sunucusu işlemi olur.
Aynı iş istasyonundaki birden fazla kullanıcı, çıkış tabanları farklılık göstereceğinden (farklı kullanıcı kimlikleri) aynı çalışma alanında eşzamanlı olarak derleme yapabilir. İstemci, çalışan bir sunucu örneği bulamazsa yeni bir sunucu örneği başlatır. Sunucu işlemi, belirli bir süre (varsayılan olarak 3 saat) etkinlik olmadığında durur. Bu süre --max_idle_secs
başlangıç seçeneği kullanılarak değiştirilebilir.
Çoğu durumda, çalışan bir sunucu olduğu gerçeği kullanıcı tarafından görülmez, ancak bazen bunu göz önünde bulundurmak faydalı olur. Örneğin, farklı dizinlerde çok sayıda otomatik derleme gerçekleştiren komut dosyaları çalıştırıyorsanız çok fazla boş sunucu biriktirmemeniz önemlidir. Bunu, işiniz bittiğinde sunucuları açıkça kapatarak veya kısa bir zaman aşımı süresi belirleyerek yapabilirsiniz.
Bir Bazel sunucu işleminin adı, ps x
veya ps -e f
çıktısında bazel(dirname)
olarak görünür. Burada dirname, çalışma alanı dizininizin kökünü kapsayan dizinin temel adıdır. Örneğin:
ps -e f
16143 ? Sl 3:00 bazel(src-johndoe2) -server -Djava.library.path=...
Bu sayede, belirli bir çalışma alanına ait sunucu sürecini daha kolay bulabilirsiniz. (ps
için belirli diğer seçeneklerde Bazel sunucu işlemlerinin yalnızca java
olarak adlandırılabileceğine dikkat edin.) Bazel sunucuları shutdown komutu kullanılarak durdurulabilir.
bazel
çalıştırıldığında istemci, önce sunucunun uygun sürümde olup olmadığını kontrol eder. Uygun değilse sunucu durdurulur ve yeni bir sunucu başlatılır. Bu sayede, uzun süre çalışan bir sunucu işleminin kullanılması, doğru sürümlendirmeyi etkilemez.