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

7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

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

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

Bazel सर्वर प्रोसेस का नाम, 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 हो सकता है.) shutdown कमांड का इस्तेमाल करके, Bazel सर्वर बंद किए जा सकते हैं.

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