İstemci/sunucu uygulaması

Sorun bildirme Kaynağı görüntüleme Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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. Çı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 mevcut olup olmadığını kontrol ederek yapar ve blaze arşivinin zaten paketten çıkarılmış olduğunu gösterir. 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 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.

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ı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, uzun süreli bir sunucu işleminin kullanılmasının doğru sürüm oluşturmayı engellememesini sağlar.