लोकल प्रोग्राम चलाने के लिए रिमोट कैश हिट को डीबग करना

इस पेज पर, लोकल एक्ज़ीक्यूशन के संदर्भ में कैश मिस की जांच करने का तरीका बताया गया है.

इस पेज पर यह मान लिया गया है कि आपके पास कोई ऐसा बिल्ड और/या टेस्ट है जो स्थानीय तौर पर अच्छी तरह से काम करता है. साथ ही, यह रिमोट कैशिंग का इस्तेमाल करने के लिए सेट अप है. इसके अलावा, यह भी मान लिया गया है कि आपको यह पक्का करना है कि रिमोट कैश का असरदार तरीके से इस्तेमाल किया जा रहा है.

कैश हिट रेट की जांच करने और Bazel के दो इनवोकेशन के बीच, एक्ज़ीक्यूशन लॉग की तुलना करने के बारे में सलाह पाने के लिए, रिमोट एक्ज़ीक्यूशन के लिए रिमोट कैश हिट को डीबग करना लेख पढ़ें. उस गाइड में दी गई सभी जानकारी, लोकल एक्ज़ीक्यूशन के साथ रिमोट कैशिंग पर भी लागू होती है. हालांकि, लोकल एक्ज़ीक्यूशन में कुछ और समस्याएं भी आ सकती हैं.

कैश हिट रेट की जांच करना

रिमोट कैश हिट, स्टेटस लाइन में दिखेंगे. यह लाइन, रिमोट एक्ज़ीक्यूशन के साथ कैश हिट रेट दिखाने वाली लाइन की तरह ही होती है.

Bazel रन के स्टैंडर्ड आउटपुट में, आपको कुछ ऐसा दिखेगा:

   INFO: 7 processes: 3 remote cache hit, 4 linux-sandbox.

इसका मतलब है कि सात कार्रवाइयों में से तीन को रिमोट कैश हिट मिला. वहीं, चार कार्रवाइयों को कैश हिट नहीं मिला और उन्हें linux-sandbox रणनीति का इस्तेमाल करके, स्थानीय तौर पर एक्ज़ीक्यूट किया गया. इस खास जानकारी में, लोकल कैश हिट शामिल नहीं किए जाते. अगर आपको शून्य प्रोसेस (या उम्मीद से कम संख्या) दिखती है, तो bazel clean कमांड चलाएं. इसके बाद, अपना बिल्ड/टेस्ट कमांड चलाएं.

कैश हिट से जुड़ी समस्याओं को हल करना

अगर आपको उम्मीद के मुताबिक कैश हिट रेट नहीं मिल रहा है, तो यह तरीका अपनाएं:

पक्का करें कि रिमोट एंडपॉइंट के साथ अच्छी तरह से कम्यूनिकेट किया जा रहा हो

यह पक्का करने के लिए कि आपका बिल्ड, रिमोट कैश के साथ अच्छी तरह से कम्यूनिकेट कर रहा है, इस सेक्शन में दिया गया तरीका अपनाएं.

  1. चेतावनी के लिए अपना आउटपुट देखें

    रिमोट एक्ज़ीक्यूशन के दौरान, रिमोट एंडपॉइंट से कम्यूनिकेट न कर पाने की वजह से, आपका बिल्ड फ़ेल हो जाएगा. वहीं, अगर कैश किया जा सकने वाला लोकल बिल्ड, कैश नहीं किया जा सकता, तो वह फ़ेल नहीं होगा. चेतावनी के लिए, Bazel इनवोकेशन का आउटपुट देखें. जैसे:

       WARNING: Error reading from the remote cache:
    

    या

       WARNING: Error writing to the remote cache:
    

    इस तरह की चेतावनियों के बाद, गड़बड़ी का मैसेज दिखेगा. इसमें कनेक्शन की समस्या के बारे में जानकारी दी जाएगी. इससे आपको डीबग करने में मदद मिलेगी. उदाहरण के लिए, एंडपॉइंट का नाम गलत टाइप करना या क्रेडेंशियल गलत तरीके से सेट करना. इस तरह की गड़बड़ियों को ढूंढें और उन्हें ठीक करें. अगर आपको दिखने वाले गड़बड़ी के मैसेज में पूरी जानकारी नहीं मिलती है, तो --verbose_failures जोड़कर देखें.

  2. रिमोट एक्ज़ीक्यूशन के लिए कैश हिट से जुड़ी समस्याओं को हल करना लेख में दिया गया तरीका अपनाएं. इससे यह पक्का किया जा सकेगा कि कैश-राइटिंग Bazel इनवोकेशन, एक ही मशीन और अलग-अलग मशीनों पर कैश हिट पा सकें.

  3. पक्का करें कि कैश-रीडिंग Bazel इनवोकेशन, कैश हिट पा सकें.

    a. कैश-रीडिंग Bazel इनवोकेशन के लिए, कमांड-लाइन सेट अप अलग होगा. इसलिए, यह पक्का करने के लिए ज़्यादा ध्यान दें कि वे रिमोट कैश के साथ कम्यूनिकेट करने के लिए सही तरीके से सेट अप किए गए हों. पक्का करें कि --remote_cache फ़्लैग सेट हो और आउटपुट में कोई चेतावनी न हो.

    b. पक्का करें कि कैश-रीडिंग Bazel इनवोकेशन, कैश-राइटिंग Bazel इनवोकेशन की तरह ही टारगेट बनाते हों.

    c. अलग-अलग मशीनों पर कैशिंग पक्का करने के लिए, वही तरीका अपनाएं. इससे यह पक्का किया जा सकेगा कि कैश-राइटिंग Bazel इनवोकेशन से कैश-रीडिंग Bazel इनवोकेशन तक कैशिंग हो.