İstemci/sunucu uygulaması

Sorun bildirin Kaynağı göster

Bazel sistemi, uzun ömürlü bir sunucu işlemi olarak uygulanır. Bu, toplu derleme uygulamasıyla mümkün olmayan pek çok optimizasyon gerçekleştirmesine (ör. DERLEME dosyaları önbelleğe alma, bağımlı grafikler ve bir derlemeden diğerine meta veriler) olanak tanır. 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ını sağlayarak sorguları çok hızlı hale getirir.

bazel uygulamasını çalıştırdığınızda istemciyi çalıştırırsınız. İstemci, çıkış tabanına göre sunucuyu bulur. Bu, varsayılan olarak temel çalışma alanı dizininin ve kullanıcı kimliğinizin yolu tarafından belirlenir. Bu nedenle, birden fazla çalışma alanı derlerseniz birden fazla çıkış tabanınız ve dolayısıyla birden fazla Bazel sunucu işleminiz olur. Çıkış tabanları farklı olacağı için (aynı kullanıcı çalışma alanında) birden fazla kullanıcı aynı çalışma alanında eşzamanlı olarak derlenebilir.

İstemci çalışan bir sunucu örneği bulamazsa yeni bir örnek başlatır. Bunu, çıkış tabanının zaten mevcut olup olmadığını kontrol ederek alev arşivinin paketten çıkarılmış olduğunu ima ederek yapar. Aksi takdirde, çıkış tabanı yoksa istemci istemcinin arşiv dosyalarını açar ve mtime dosyalarını 9 yıl sonrasına ayarlar. Yükleme işleminden sonra istemci, sıkıştırılmamış dosyaların mtime'lerinin tarihlerinde herhangi bir yükleme değişikliği olmaması için en uzun tarihe eşit olduğunu onaylar.

Sunucu işlemi bir süre işlem yapılmadığında durur (varsayılan olarak 3 saat; başlangıç seçeneği --max_idle_secs kullanılarak değiştirilebilir). Çoğu durumda, çalışan bir sunucu olduğu kullanıcı tarafından görülemez ancak bazen bunu göz önünde bulundurmaya yardımcı olur. Örneğin, farklı dizinlerde çok sayıda otomatik derleme yapan komut dosyaları çalıştırıyorsanız, çok sayıda aktif olmayan sunucu biriktirmemeniz önemlidir. Bu işlemi tamamladığınızda işlemi açıkça kapatarak veya kısa bir zaman aşımı süresi belirterek yapabilirsiniz.

Bazel sunucusu 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ü çevreleyen 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 ürününün diğer seçeneklerinde Bazel sunucu işlemlerinin yalnızca java olarak adlandırılabileceğini unutmayın. Bazel sunucuları shoutdown komutu kullanılarak durdurulabilir.

bazel çalışırken istemci öncelikle sunucunun uygun sürüm olduğundan emin olur. Aksi takdirde sunucu durdurulur ve yeni bir sunucu başlatılır. Bu, uzun süre çalışan bir sunucu işleminin kullanılmasının uygun sürüm işlemini engellememesini sağlar.