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 Kembali pada Success
1 CANCELLED Operasi dibatalkan, biasanya oleh pemanggil.
2 UNKNOWN Misalnya, error ini dapat ditampilkan saat nilai Status yang diterima dari ruang alamat lain dimiliki oleh ruang error yang tidak diketahui di ruang alamat ini. Selain itu, error yang dilaporkan oleh API yang tidak menampilkan informasi error yang mencukupi dapat dianggap sebagai 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 mungkin ditampilkan, meskipun operasi tersebut telah selesai. Misalnya, respons berhasil dari server yang tertunda cukup lama hingga tenggat 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; gunakan RESOURCE_EXHAUSTED untuk error tersebut. Jangan gunakan PERMISSION_DENIED jika pemanggil tidak dapat diidentifikasi (gunakan UNAUTHENTICATED untuk error tersebut). Menerima kode error PERMISSION_DENIED tidak menyiratkan bahwa permintaan valid atau entitas yang diminta ada atau memenuhi prakondisi 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 pada non-direktori.
10 ABORTED Operasi dibatalkan, biasanya karena masalah serentak 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 dalam 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 hanya kondisi sementara yang dapat diperbaiki jika dicoba lagi dengan backoff.
15 DATA_LOSS Data hilang atau rusak yang tidak dapat dipulihkan.
16 UNAUTHENTICATED Permintaan tidak memiliki kredensial autentikasi operasi yang valid.

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

FAILED_PRECONDITION vs. ABORTED vs. UNAVAILABLE

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

  • Gunakan UNAVAILABLE jika klien dapat mencoba lagi hanya panggilan yang gagal.
  • Gunakan ABORTED jika klien harus mencoba lagi pada tingkat 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 secara eksplisit telah diperbaiki. Misalnya, jika "rmdir" gagal karena direktori tidak kosong, sebaiknya tampilkan FAILED_PRECONDITION karena klien tidak boleh mencoba lagi kecuali jika file yang ada dihapus dari direktori tersebut.

INVALID_ARGUMENT vs. FAILED_PRECONDITION vs. OUT_OF_RANGE

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

  • Gunakan INVALID_ARGUMENT jika argumen bermasalah, terlepas dari status sistem. Misalnya: URL yang salah formatnya
  • 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 nilai tidak valid karena status sistem, tetapi bukan nilai OUT_OF_RANGE.