İstemci/sunucu uygulaması

Sorun bildir Kaynağı göster

Bazel sistemi uzun ömürlü bir sunucu işlemi olarak uygulanır. Böylece DERLEME dosyalarının, bağımlılık grafiklerinin ve diğer meta verilerin bir derlemeden diğerine önbelleğe alınması gibi, toplu uygulama tabanlı bir uygulamada 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üklenen paketlerin aynı önbelleğini paylaşmasına olanak tanıyarak sorguların çok hızlı olmasını sağlar. Her sunucu aynı anda en fazla bir çağrıyı işleyebilir. Sonraki eşzamanlı çağrılar engellenir veya hızlı başarısız olur (bkz. --block_for_lock).

bazel komutunu çalıştırdığınızda istemciyi çalıştırmış olursunuz. İstemci, sunucuyu çıktı tabanına göre bulur. Bu, varsayılan olarak temel çalışma alanı dizininin yolu ve kullanıcı kimliğinize göre belirlenir. Bu nedenle, birden fazla çalışma alanında derleme yapıyorsanız birden fazla çıkış tabanınız ve dolayısıyla birden fazla Bazel sunucu işlemi olur. Aynı iş istasyonundaki birden çok kullanıcı, çıktı tabanları farklı olacağından (kullanıcı kimlikleri farklı) aynı çalışma alanında eşzamanlı olarak derleme yapabilir.

İstemci çalışan bir sunucu örneği bulamazsa yeni bir örnek başlatır. Bunu, çıktı tabanının zaten mevcut olup olmadığını kontrol ederek yapar. Böylece, Blaze arşivinin paket açılmış olduğunu gösterir. Aksi takdirde, çıktı tabanı yoksa istemci arşivin dosyalarını açar ve mtime değerlerini 9 yıl sonraki bir tarihe ayarlar. Yüklendikten sonra, istemci, yüklemede herhangi bir değişiklik yaşanmadığından emin olmak için sıkıştırılmış dosyalardaki mtime değerlerinin çok uzak bir tarihe eşit olduğunu onaylar.

Sunucu işlemi belli bir süre işlem yapılmadığında durur (varsayılan olarak 3 saattir, bu durum --max_idle_secs başlangıç seçeneği kullanılarak değiştirilebilir). Çoğunlukla, çalışan bir sunucu olduğu gerçeği kullanıcı tarafından görülmez, ancak zaman zaman bunu göz önünde bulundurmak yararlı olur. Örneğin, farklı dizinlerde çok sayıda otomatik derleme gerçekleştiren komut dosyaları çalıştırıyorsanız çok fazla boşta sunucu biriktirmemeniz önemlidir. Bunu, sunucuyla işiniz bittiğinde sunucuları açık bir şekilde kapatarak veya kısa bir zaman aşımı süresi belirleyerek yapabilirsiniz.

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ü kapsayan dizinin temel adıdır. Ö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 bulmayı kolaylaştırır. (ps için diğer bazı seçeneklerde Bazel sunucu işlemleri yalnızca java olarak adlandırılabilir.) Bazel sunucuları shutdown komutu kullanılarak durdurulabilir.

bazel çalıştırılırken istemci, önce sunucunun uygun sürüm olup olmadığını kontrol eder. Uygun sürüm yoksa sunucu durdurulur ve yeni bir sürüm başlatılır. Böylece uzun süreli sunucu işlemi kullanımının uygun sürüm oluşturmayı etkilememesi sağlanır.