İstemci/sunucu uygulaması

Sorun bildirin Kaynağı göster

Bazel sistemi uzun ömürlü bir sunucu işlemi olarak uygulanmıştı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ıyarak sorguları çok hızlı hale getirir.

bazel çalıştırdığınızda istemciyi çalıştırmış olursunuz. İstemci sunucuyu çıkış tabanına göre bulur. Bu taban, varsayılan olarak temel çalışma alanı dizininin yolu ve kullanıcı kimliğiniz tarafından belirlenir. Dolayısıyla, birden fazla çalışma alanında derleme yaparsanız birden fazla çıkış tabanınız olur ve dolayısıyla birden fazla Bazel sunucusu işleminiz olur. Aynı iş istasyonundaki birden fazla kullanıcı, çıkış tabanları farklılık göstereceğinden (farklı kullanıcı kimlikleri) 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, çı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, çıktı tabanı yoksa istemci arşivin dosyalarını açar ve mtime öğelerini 9 yıl gelecekteki bir tarihe ayarlar. Yüklendikten sonra istemci, yüklemede herhangi bir değişiklik yapılmadığından emin olmak için sıkıştırılmış dosyaların mtime'lerinin en uzak tarihe eşit olduğunu onaylar.

Sunucu işlemi, belirli bir süre (varsayılan olarak 3 saat, --max_idle_secs başlatma seçeneği kullanılarak değiştirilebilir) kullanılmadığında durur. Çoğunlukla, çalışan bir sunucu olduğu gerçeği kullanıcı tarafından görülemez, ancak bazen bunu göz önünde bulundurmak faydalı olur. Ö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.

Bir Bazel sunucu işleminin adı, ps x veya ps -e f çıktısı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. (Diğer bazı ps seçeneklerinde Bazel sunucu işlemlerinin yalnızca java olarak adlandırılabileceğini unutmayın.) 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.