Men-debug Hit Cache Jarak Jauh untuk Eksekusi Lokal

Laporkan masalah Lihat sumber

Halaman ini menjelaskan cara menyelidiki cache yang tidak ditemukan dalam konteks eksekusi lokal.

Halaman ini mengasumsikan bahwa Anda memiliki build dan/atau pengujian yang berhasil di-build secara lokal dan disiapkan untuk menggunakan cache jarak jauh, dan bahwa Anda ingin memastikan bahwa cache jarak jauh digunakan secara efektif.

Untuk tips tentang cara memeriksa rasio cache ditemukan dan cara membandingkan log eksekusi antara dua pemanggilan Bazel, lihat Men-debug Hit Cache Jarak Jauh untuk Eksekusi Jarak Jauh. Semua yang disajikan dalam panduan tersebut juga berlaku untuk penyimpanan cache jarak jauh dengan eksekusi lokal. Namun, eksekusi lokal menghadirkan beberapa tantangan tambahan.

Memeriksa rasio cache ditemukan

Hit cache jarak jauh yang berhasil akan muncul di baris status, mirip dengan Rasio Hit Cache dengan Remote Execution.

Dalam output standar Bazel yang dijalankan, Anda akan melihat sesuatu seperti berikut:

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

Ini berarti bahwa dari 7 tindakan yang dicoba, 3 mendapatkan cache ditemukan dari jarak jauh dan 4 tindakan tidak memiliki cache ditemukan serta dieksekusi secara lokal menggunakan strategi linux-sandbox. Hit cache lokal tidak disertakan dalam ringkasan ini. Jika Anda mendapatkan 0 proses (atau angka yang lebih rendah dari yang diharapkan), jalankan bazel clean diikuti dengan perintah build/pengujian.

Memecahkan masalah cache ditemukan

Jika Anda tidak mendapatkan rasio cache ditemukan yang diharapkan, lakukan langkah berikut:

Memastikan komunikasi berhasil dengan endpoint jarak jauh

Untuk memastikan build Anda berhasil berkomunikasi dengan cache jarak jauh, ikuti langkah-langkah di bagian ini.

  1. Memeriksa peringatan pada output Anda

    Dengan eksekusi jarak jauh, kegagalan untuk berkomunikasi dengan endpoint jarak jauh akan menggagalkan build Anda. Di sisi lain, build lokal yang dapat di-cache tidak akan gagal jika tidak dapat di-cache. Periksa output pemanggilan Bazel untuk menemukan peringatan, seperti:

       WARNING: Error reading from the remote cache:
    

    atau

       WARNING: Error writing to the remote cache:
    

    Peringatan tersebut akan diikuti dengan pesan error yang memerinci masalah koneksi yang akan membantu Anda melakukan debug: misalnya, nama endpoint yang salah ketik atau kredensial yang salah ditetapkan. Temukan dan atasi error tersebut. Jika pesan error yang Anda lihat tidak memberikan informasi yang cukup, coba tambahkan --verbose_failures.

  2. Ikuti langkah-langkah dari Memecahkan masalah hit cache untuk eksekusi jarak jauh guna memastikan bahwa pemanggilan Bazel yang menulis cache dapat mendapatkan cache ditemukan di komputer yang sama dan di seluruh komputer.

  3. Pastikan pemanggilan Bazel pembacaan cache Anda bisa mendapatkan hit cache.

    a. Karena pemanggilan Bazel pembacaan cache akan memiliki konfigurasi command line yang berbeda, berhati-hatilah untuk memastikan bahwa pemanggilan sudah disiapkan dengan benar untuk berkomunikasi dengan cache jarak jauh. Pastikan flag --remote_cache disetel dan tidak ada peringatan dalam output.

    b. Pastikan panggilan Bazel pembacaan cache Anda membangun target yang sama dengan pemanggilan Bazel yang menulis cache.

    c. Ikuti langkah yang sama untuk memastikan caching di seluruh komputer, untuk memastikan caching dari pemanggilan Bazel penulisan cache ke pemanggilan Bazel yang membaca cache Anda.