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 tampilkanFAILED_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 sebelumstart_date_restrict
. - Gunakan
FAILED_PRECONDITION
jika nilai tidak valid karena status sistem, tetapi bukan nilaiOUT_OF_RANGE
.