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