Kode Respons Status

Kode status berikut dapat ditampilkan dalam respons gRPC. Hal ini berlaku untuk semua versi gRPC yang didokumentasikan di situs ini.

Kode Status Catatan
0 OK Pengembalian pada Success
1 CANCELLED Operasi dibatalkan, biasanya oleh pemanggil.
2 UNKNOWN Misalnya, error ini dapat ditampilkan jika nilai Status yang diterima dari ruang alamat lain berada dalam 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.
3 INVALID_ARGUMENT Klien menetapkan argumen yang tidak valid.
4 DEADLINE_EXCEEDED Batas waktu berakhir sebelum operasi selesai. Untuk operasi yang mengubah status sistem, error ini dapat ditampilkan sekalipun operasi berhasil diselesaikan. Misalnya, respons yang berhasil dari server yang tertunda cukup lama hingga batas waktu berakhir.
5 NOT_FOUND Beberapa entitas yang diminta tidak ditemukan.
6 ALREADY_EXISTS Entitas yang coba dibuat oleh klien sudah ada.
7 PERMISSION_DENIED Pemanggil tidak memiliki izin untuk menjalankan operasi yang ditentukan. Jangan gunakan PERMISSION_DENIED untuk penolakan yang disebabkan oleh kehabisan beberapa resource; sebagai gantinya, gunakan RESOURCE_EXHAUSTED untuk error tersebut. Jangan menggunakan PERMISSION_DENIED jika pemanggil tidak dapat diidentifikasi (sebagai gantinya, gunakan UNAUTHENTICATED untuk error tersebut). Menerima kode error PERMISSION_DENIED tidak berarti bahwa permintaan valid atau entitas yang diminta ada atau memenuhi kondisi awal lainnya.
8 RESOURCE_EXHAUSTED Beberapa resource telah habis, kemungkinan adalah kuota per pengguna, atau kemungkinan seluruh sistem file kehabisan ruang.
9 FAILED_PRECONDITION Operasi tersebut ditolak karena sistem tidak dalam keadaan dibutuhkan untuk menjalankan operasi. Misalnya, direktori yang akan dihapus tidak kosong atau operasi rmdir diterapkan ke non-direktori.
10 ABORTED Operasi dibatalkan, umumnya karena masalah konkurensi seperti kegagalan pemeriksaan pengurut atau pembatalan transaksi.
11 OUT_OF_RANGE Upaya operasi dilakukan melampaui rentang yang valid.
12 UNIMPLEMENTED Operasi tidak diterapkan atau tidak didukung/diaktifkan di layanan ini.
13 INTERNAL Error internal. Artinya beberapa invarian yang diperlukan oleh sistem pokok telah rusak. Kode error ini disediakan untuk error serius.
14 UNAVAILABLE Saat ini layanan tidak tersedia. Kemungkinan besar ini adalah kondisi sementara yang dapat dikoreksi jika dicoba lagi dengan backoff.
15 DATA_LOSS Data hilang atau rusak yang tidak dapat dipulihkan.
16 UNAUTHENTICATED Permintaan tidak memiliki kredensial autentikasi yang valid untuk operasi.

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

FAILED_PRECONDITION vs. ABORTED vs. UNAVAILABLE

Berikut adalah pengujian lakmus yang dapat membantu Anda memutuskan antara FAILED_PRECONDITION, ABORTED, dan UNAVAILABLE:

  • Gunakan UNAVAILABLE jika klien dapat mencoba kembali panggilan yang gagal saja.
  • Gunakan ABORTED jika klien harus mencoba lagi di level yang lebih tinggi, seperti saat pengujian dan penetapan yang ditentukan klien gagal, yang menunjukkan bahwa klien harus memulai ulang urutan baca-ubah-tulis.
  • Gunakan FAILED_PRECONDITION jika klien tidak boleh mencoba lagi sampai status sistem telah diperbaiki secara eksplisit. Misalnya, jika "rmdir" gagal karena direktori tidak kosong, sebaiknya tampilkan FAILED_PRECONDITION karena klien tidak boleh mencoba lagi kecuali jika file dihapus dari direktori.

INVALID_ARGUMENT vs. FAILED_PRECONDITION vs. OUT_OF_RANGE

Berikut adalah pengujian lakmus yang dapat membantu Anda memutuskan antara INVALID_ARGUMENT, FAILED_PRECONDITION, dan OUT_OF_RANGE:

  • Gunakan INVALID_ARGUMENT jika argumennya bermasalah, terlepas dari status sistemnya. Misalnya: format URL yang salah
  • Gunakan OUT_OF_RANGE jika suatu nilai berada di luar rentang karena status sistem. Misalnya, start_date adalah sebelum start_date_restrict.
  • Gunakan FAILED_PRECONDITION jika nilainya tidak valid karena status sistem, tetapi bukan nilai OUT_OF_RANGE.