क्लाइंट/सर्वर को लागू करना

Bezel सिस्टम को लंबे समय तक सर्वर पर चलने वाली प्रोसेस के तौर पर लागू रखा जाता है. इससे साइट को बैच बनाने के लिए कई तरह के ऑप्टिमाइज़ेशन नहीं हो पाते. जैसे कि बिल्ड फ़ाइलें, डिपेंडेंसी ग्राफ़, और दूसरे मेटाडेटा में एक साथ बिल्ड बनाना. इससे, इंक्रीमेंटल (बढ़ने वाले) बिल्ड की रफ़्तार बेहतर होती है. साथ ही, build और query जैसे अलग-अलग निर्देशों का इस्तेमाल करके, लोड किए गए पैकेज की एक ही कैश मेमोरी शेयर हो पाती है. इससे क्वेरी बहुत तेज़ी से बढ़ती है.

जब आप bazel चलाते हैं, तो आप क्लाइंट को चला रहे होते हैं. क्लाइंट को आउटपुट बेस के आधार पर सर्वर मिलता है, जिसे डिफ़ॉल्ट रूप से बेस वर्कस्पेस डायरेक्ट्री और आपके उपयोगकर्ता आईडी के पाथ से तय किया जाता है. इसलिए, अगर आप एक से ज़्यादा फ़ाइल फ़ोल्डर बनाते हैं, तो आपके पास आउटपुट बेस और इस तरह एक से ज़्यादा Bezel सर्वर प्रोसेस होते हैं. एक ही वर्कस्टेशन पर कई उपयोगकर्ता एक साथ एक ही वर्कस्पेस में बना सकते हैं, क्योंकि उनके आउटपुट बेस अलग-अलग होंगे (अलग-अलग उपयोगकर्ता आईडी). अगर क्लाइंट को किसी मौजूदा सर्वर इंस्टेंस का पता नहीं चलता, तो वह नया सर्वर शुरू करता है. सर्वर की प्रक्रिया कुछ समय बाद बंद हो जाएगी (डिफ़ॉल्ट रूप से तीन घंटे, जिसे स्टार्टअप विकल्प --max_idle_secs का इस्तेमाल करके बदला जा सकता है).

ज़्यादातर मामलों में, उपयोगकर्ता के लिए सर्वर न दिखने की समस्या होती है, लेकिन कभी-कभी इस बात का ध्यान रखना चाहिए. उदाहरण के लिए, अगर आप ऐसी स्क्रिप्ट चला रहे हैं जो अलग-अलग डायरेक्ट्री में कई ऑटोमेटेड बिल्ड तैयार करती हैं, तो यह पक्का करना ज़रूरी है कि आप बहुत ज़्यादा समय तक इस्तेमाल नहीं हो रहे सर्वर; आप जब आप उन्हें पढ़ लें, तब उन्हें साफ़ तौर पर बंद कर सकते हैं या एक छोटा समय खत्म होने की अवधि बताकर ऐसा कर सकते हैं.

बेज़ेल सर्वर प्रोसेस का नाम ps x या ps -e f के आउटपुट में bazel(dirname) के रूप में दिखाई देता है, जहां dirname उस निर्देशिका का आधार नाम है जो फ़ाइल फ़ोल्डर को रूट करें. जैसे:

ps -e f
16143 ?        Sl     3:00 bazel(src-johndoe2) -server -Djava.library.path=...

इससे यह पता लगाना आसान हो जाता है कि किसी दिए गए वर्कस्पेस से जुड़ी सर्वर प्रोसेस क्या है. (इस बात का ध्यान रखें कि ps के कुछ दूसरे विकल्पों की वजह से, Bazel सर्वर प्रोसेसों का नाम सिर्फ़ java रखा जा सकता है.) Bazel सर्वर को शटडाउन निर्देश का इस्तेमाल करके रोका जा सकता है.

bazel चलाते समय, क्लाइंट पहले जांचता है कि सर्वर सही वर्शन है या नहीं; अगर ऐसा नहीं होता, तो सर्वर रुक जाता है और एक नया सर्वर शुरू होता है. इससे यह पक्का होता है कि लंबे समय तक चलने वाली सर्वर प्रोसेस के इस्तेमाल से सही वर्शन में रुकावट नहीं आ रही है.