İstemci/sunucu uygulaması

Bazel sistemi, uzun ömürlü bir sunucu süreci olarak uygulanır. Bu sayede, toplu iş odaklı bir uygulamayla mümkün olmayan birçok optimizasyon (ör. BUILD dosyalarının, bağımlılık grafiklerinin ve diğer meta verilerin bir derlemeden diğerine önbelleğe alınması) gerçekleştirilebilir. Bu, artımlı derlemelerin hızını artırır ve build ile query gibi farklı komutların, yüklenen paketlerin aynı önbelleğini paylaşmasına olanak tanıyarak sorguları çok hızlı hale getirir.

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

Çoğu zaman, çalışan bir sunucu olduğu kullanıcı tarafından fark edilmez ancak bazen bunu aklınızda bulundurmak faydalı olabilir. Örneğin, farklı dizinlerde çok sayıda otomatik derleme gerçekleştiren komut dosyaları çalıştırıyorsanız çok sayıda boşta sunucu biriktirmediğinizden emin olmanız önemlidir. Bunu, sunucularla işiniz bittiğinde bunları açıkça kapatarak veya kısa bir zaman aşımı süresi belirterek yapabilirsiniz.

Bir Bazel sunucu işleminin adı, ps x veya ps -e f çıkışında bazel(dirname) olarak görünür. Burada dirname, çalışma alanı dizininizin kökünü içeren 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 hangi sunucu işleminin ait olduğunu öğrenmek kolaylaşır. (Bazel sunucu işlemlerinin, ps ile ilgili diğer bazı seçeneklerde yalnızca java olarak adlandırılacağını unutmayın.) 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 sürümde değilse sunucu durdurulur ve yeni bir sunucu başlatılır. Bu, uzun süredir çalışan bir sunucu işleminin doğru sürüm oluşturmayı engellememesini sağlar.