İstemci/sunucu uygulaması

Sorun bildir Kaynağı görüntüle Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Bazel sistemi, uzun süreli bir sunucu süreci olarak uygulanır. Bu sayede, toplu iş odaklı bir uygulamayla mümkün olmayan birçok optimizasyon (ör. BUILD dosyalarının, bağımlılık grafiklerinin ve diğer meta verilerin bir derlemeden diğerine önbelleğe alınması) gerçekleştirilebilir. Bu, artımlı derlemelerin hızını artırır ve build ile query gibi farklı komutların aynı yüklü paket önbelleğini paylaşmasına olanak tanıyarak sorguları çok hızlı hale getirir. Her sunucu aynı anda en fazla bir çağrıyı işleyebilir. Diğer eşzamanlı çağrılar engellenir veya hızlıca başarısız olur (bkz. --block_for_lock).

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

İstemci, çalışan bir sunucu örneği bulamazsa yeni bir tane başlatır. Bu işlem, çıkış tabanının zaten mevcut olup olmadığını kontrol ederek yapılır. Bu da Blaze arşivinin zaten açılmış olduğunu gösterir. Aksi takdirde, çıkış 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ükleme dosyalarının mtime değerlerinin uzak bir tarihe eşit olduğunu onaylayarak yükleme işleminde değişiklik yapılmadığından emin olur.

Sunucu işlemi, bir süre işlem yapılmadığında durur (varsayılan olarak 3 saat; bu süre, başlangıç seçeneği --max_idle_secs kullanılarak değiştirilebilir). Çoğu zaman, sunucunun çalışıyor olması kullanıcı tarafından fark edilmez 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 sayıda boşta sunucu biriktirmediğinizden emin olmanız önemlidir. Bunu, işiniz bittiğinde sunucuları açıkça kapatarak veya kısa bir zaman aşımı süresi belirterek yapabilirsiniz.

ps x veya ps -e f komutlarının çıktısında bazel(dirname) olarak bir Bazel sunucu işleminin adı 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 hangi sunucu sürecinin ait olduğunu öğrenmek kolaylaşır. (Bazel sunucusu işlemlerinin ps için diğer bazı seçeneklerde yalnızca java olarak adlandırılacağını unutmayın.) 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 sürümde değilse sunucu durdurulur ve yeni bir sunucu başlatılır. Bu, uzun süredir çalışan bir sunucu işleminin uygun sürüm oluşturma işlemine müdahale etmemesini sağlar.