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

समस्या की शिकायत करें सोर्स देखें

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

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

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

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

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

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

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