Bazel sistemi, uzun ömürlü bir sunucu işlemi olarak uygulanır. Bu da DERLEME dosyalarının önbelleğe alınması, bağımlılık grafikleri ve bir derlemeden diğerine diğer meta veriler gibi toplu odaklı bir uygulama ile mümkün olmayan birçok optimizasyonun gerçekleştirilmesine olanak tanır. 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.
Çıkış tabanları farklı olduğu için (farklı kullanıcı kimlikleri) aynı iş istasyonundaki birden fazla kullanıcı aynı çalışma alanında aynı anda derleme yapabilir.
İstemci, çalışan bir sunucu örneği bulamıyorsa yeni bir sunucu örneği başlatır. Bunu, çıkış tabanının zaten mevcut olup olmadığını kontrol ederek yapar. Bu, blaze arşivinin zaten paketten çıkarıldığı anlamına gelir. Aksi takdirde, çıkış tabanı mevcut değilse istemci, arşiv dosyalarının sıkıştırmasını açar ve mtime
değerlerini 9 yıl sonrasına ayarlar. Yüklendikten sonra istemci, yükleme işleminde herhangi bir değişiklik yapılmadığından emin olmak için sıkıştırılmış dosyaların mtime
değerlerinin uzak bir tarihe eşit olduğunu onaylar.
Sunucu işlemi, bir süre işlem yapılmadıktan sonra durur (varsayılan olarak 3 saattir ve --max_idle_secs
başlangıç seçeneği kullanılarak değiştirilebilir). Çoğu durumda, çalışan bir sunucu kullanıcı tarafından görülmez ancak bazen bunu göz önünde bulundurmak faydalı olabilir. Örneğin, farklı dizinlerde çok sayıda otomatik derleme işlemi gerçekleştiren komut dosyaları çalıştırıyorsanız çok fazla boşta sunucu biriktirmemeniz önemlidir. Bunu, işiniz bittiğinde bunları açıkça kapatarak veya kısa bir zaman aşımı süresi belirterek yapabilirsiniz.
Bazel sunucu işleminin adı, ps x
veya ps -e f
'un çıktısı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 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ırken istemci öncelikle sunucunun uygun sürüm olup olmadığını kontrol eder. Aksi takdirde sunucu durdurulur ve yeni bir sürüm başlatılır. Bu, uzun süreli bir sunucu işleminin kullanılmasının doğru sürüm oluşturmayı engellememesini sağlar.