İstemci/sunucu uygulaması

Bazel sistemi uzun ömürlü bir sunucu işlemi olarak uygulanır. Bu, BUILD dosyalarını, bağımlılık grafiklerini ve diğer meta verileri bir derlemeden diğerine önbelleğe alma gibi toplu işleme amaçlı bir uygulama ile mümkün olmayan birçok optimizasyon gerçekleştirmesini sağlar. Bu, artımlı derlemelerin hızını artırır. build ve query gibi farklı komutların aynı yüklenen paket önbelleğini paylaşmasına olanak tanıyarak sorguları çok hızlı hale getirir.

bazel çalıştırdığınızda istemciyi çalıştırıyorsunuz. İstemci, sunucuyu varsayılan olarak temel çalışma alanı dizininin ve kullanıcı kimliğinizin yolu tarafından belirlenen çıkış tabanına göre bulur. Bu nedenle, birden fazla çalışma alanında derleme yaparsanız birden fazla çıktı tabanları ve dolayısıyla birden çok Bazel sunucu işlemi içerir. Çıkış tabanları farklı olacağından (farklı kullanıcı kimlikleri) aynı iş istasyonunda birden fazla kullanıcı aynı çalışma alanında eş zamanlı olarak derleme yapabilir. İstemci çalışan bir sunucu örneği bulamazsa yeni bir örnek başlatır. Sunucu işlemi, belirli bir süre işlem yapılmadığında durur (varsayılan olarak 3 saattir. Bu süre, başlatma seçeneği --max_idle_secs kullanılarak değiştirilebilir).

Çoğunlukla, çalışan bir sunucunun olması kullanıcı tarafından görülemez ancak bazen bunu göz önünde bulundurmaya yardımcı olur. Örneğin, farklı dizinlerde çok sayıda otomatik derleme gerçekleştiren komut dosyaları çalıştırıyorsanız, boşta çok sayıda sunucu biriktirmemek çok önemlidir. İşiniz bittiğinde bu görevleri açıkça devre dışı bırakarak veya kısa bir zaman aşımı süresi belirterek bu işlemi yapabilirsiniz.

Bir Bazel sunucu işleminin adı ps x veya ps -e f çıkışında bazel(dirname) olarak görünür. Burada dirname, kök dizinidir. Örneğin:

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

Bu, hangi sunucu işleminin belirli bir çalışma alanına ait olduğunu öğrenmeyi kolaylaştırır. (ps için belirli diğer seçeneklerle birlikte Bazel sunucu süreçlerinin yalnızca java olarak adlandırılabileceğini unutmayın.) Bazel sunucuları shutdown komutunu kullanarak durdurulabilir.

bazel çalıştırılırken, istemci ilk olarak sunucunun uygun sürüm olup olmadığını kontrol eder; değilse, sunucu durup yeni bir sunucu başlatılmıştır. Bu, uzun süre çalışan bir sunucu işleminin kullanılması uygun sürümü etkilemez.