Code

Kode error kanonis untuk gRPC API.

Terkadang beberapa kode error mungkin berlaku. Layanan harus menampilkan kode error paling spesifik yang berlaku. Misalnya, pilih OUT_OF_RANGE daripada FAILED_PRECONDITION jika kedua kode tersebut berlaku. Demikian pula, lebih suka NOT_FOUND atau ALREADY_EXISTS daripada FAILED_PRECONDITION.

Enumerasi
OK

Bukan error; ditampilkan jika berhasil.

Pemetaan HTTP: 200 Oke

CANCELLED

Operasi dibatalkan, biasanya oleh pemanggil.

Pemetaan HTTP: 499 Permintaan Klien yang Ditutup

UNKNOWN

Error tidak diketahui. Misalnya, error ini dapat ditampilkan saat nilai Status yang diterima dari ruang alamat lain berada di ruang error yang tidak diketahui di ruang alamat ini. Selain itu, error yang dilaporkan oleh API yang tidak menampilkan informasi error yang memadai dapat dikonversi menjadi error ini.

Pemetaan HTTP: Error Server Internal 500

INVALID_ARGUMENT

Klien menetapkan argumen yang tidak valid. Perhatikan bahwa ini berbeda dengan FAILED_PRECONDITION. INVALID_ARGUMENT menunjukkan argumen yang bermasalah, terlepas dari status sistemnya (misalnya, nama file yang salah).

Pemetaan HTTP: 400 Permintaan Tidak Valid

DEADLINE_EXCEEDED

Batas waktu berakhir sebelum operasi selesai. Untuk operasi yang mengubah status sistem, error ini dapat ditampilkan bahkan jika operasi telah berhasil dilakukan. Misalnya, respons yang berhasil dari server dapat tertunda untuk waktu yang cukup lama hingga batas waktu berakhir.

Pemetaan HTTP: Waktu Tunggu Gateway 504

NOT_FOUND

Beberapa entitas yang diminta (misalnya, file atau direktori) tidak ditemukan.

Catatan untuk developer server: jika permintaan ditolak untuk seluruh class pengguna, seperti peluncuran fitur secara bertahap atau daftar yang diizinkan tidak terdokumentasi, NOT_FOUND dapat digunakan. Jika sebuah permintaan ditolak untuk beberapa pengguna dalam class pengguna, seperti kontrol akses berbasis pengguna, PERMISSION_DENIED harus digunakan.

Pemetaan HTTP: 404 Tidak Ditemukan

ALREADY_EXISTS

Entity yang dicoba dibuat oleh klien (mis., file atau direktori) sudah ada.

Pemetaan HTTP: Konflik 409

PERMISSION_DENIED

Pemanggil tidak memiliki izin untuk menjalankan operasi yang ditentukan. PERMISSION_DENIED tidak boleh digunakan untuk penolakan yang disebabkan oleh kehabisan beberapa resource (sebagai gantinya, gunakan RESOURCE_EXHAUSTED untuk error tersebut). PERMISSION_DENIED tidak boleh digunakan jika pemanggil tidak dapat diidentifikasi (sebagai gantinya, gunakan UNAUTHENTICATED untuk error tersebut). Kode error ini tidak menyiratkan bahwa permintaan valid atau entitas yang diminta ada atau memenuhi ketentuan awal lainnya.

Pemetaan HTTP: 403 Terlarang

UNAUTHENTICATED

Permintaan tidak memiliki kredensial autentikasi yang valid untuk operasi.

Pemetaan HTTP: 401 Tidak Sah

RESOURCE_EXHAUSTED

Beberapa resource telah habis, mungkin kuota per pengguna, atau mungkin kapasitas keseluruhan sistem file sudah habis.

Pemetaan HTTP: 429 Terlalu Banyak Permintaan

FAILED_PRECONDITION

Operasi tersebut ditolak karena sistem tidak memiliki status yang diperlukan untuk menjalankan operasi. Misalnya, direktori yang akan dihapus tidak kosong, operasi rmdir diterapkan ke non-direktori, dll.

Implementasi layanan dapat menggunakan panduan berikut untuk menentukan antara FAILED_PRECONDITION, ABORTED, dan UNAVAILABLE: (a) Menggunakan UNAVAILABLE jika klien dapat mencoba lagi panggilan yang gagal tersebut. (b) Gunakan ABORTED jika klien harus mencoba lagi di level yang lebih tinggi. Misalnya, jika pengujian dan penetapan yang ditentukan klien gagal, ini menunjukkan bahwa klien harus memulai ulang urutan baca-ubah-tulis. (c) Menggunakan FAILED_PRECONDITION jika klien tidak boleh mencoba lagi hingga status sistem diperbaiki secara eksplisit. Misalnya, jika "rmdir" gagal karena direktori tidak kosong, FAILED_PRECONDITION harus ditampilkan karena klien tidak boleh mencoba lagi kecuali jika file dihapus dari direktori.

Pemetaan HTTP: 400 Permintaan Tidak Valid

ABORTED

Operasi dibatalkan, biasanya karena masalah serentak seperti kegagalan pemeriksaan pengurut atau pembatalan transaksi.

Lihat panduan di atas untuk memutuskan antara FAILED_PRECONDITION, ABORTED, dan UNAVAILABLE.

Pemetaan HTTP: Konflik 409

OUT_OF_RANGE

Operasi dicoba melampaui rentang yang valid. Misalnya, mencari atau membaca histori file.

Tidak seperti INVALID_ARGUMENT, error ini menunjukkan masalah yang dapat diperbaiki jika status sistem berubah. Misalnya, sistem file 32-bit akan menghasilkan INVALID_ARGUMENT jika diminta untuk membaca pada offset yang tidak berada dalam rentang [0,2^32-1], tetapi akan menghasilkan OUT_OF_RANGE jika diminta untuk membaca dari offset setelah ukuran file saat ini.

Sedikit tumpang-tindih antara FAILED_PRECONDITION dan OUT_OF_RANGE. Sebaiknya gunakan OUT_OF_RANGE (error yang lebih spesifik) saat diterapkan sehingga pemanggil yang melakukan iterasi melalui ruang dapat dengan mudah menemukan error OUT_OF_RANGE untuk dideteksi saat mereka selesai.

Pemetaan HTTP: 400 Permintaan Tidak Valid

UNIMPLEMENTED

Operasi tidak diterapkan atau tidak didukung/diaktifkan dalam layanan ini.

Pemetaan HTTP: 501 Tidak Diimplementasikan

INTERNAL

Error internal. Artinya beberapa invarian yang diharapkan oleh sistem pokok telah rusak. Kode error ini disediakan untuk error serius.

Pemetaan HTTP: Error Server Internal 500

UNAVAILABLE

Saat ini layanan tidak tersedia. Kemungkinan besar ini hanya kondisi sementara, yang dapat dikoreksi dengan mencoba kembali dengan backoff. Perhatikan bahwa tidak selalu aman untuk mencoba kembali operasi non-idempoten.

Lihat panduan di atas untuk memutuskan antara FAILED_PRECONDITION, ABORTED, dan UNAVAILABLE.

Pemetaan HTTP: 503 Layanan Tidak Tersedia

DATA_LOSS

Kehilangan atau kerusakan data yang tidak dapat dipulihkan.

Pemetaan HTTP: Error Server Internal 500