ระบบอาจแสดงรหัสสถานะต่อไปนี้ในการตอบกลับ gRPC ซึ่งมีผลกับ gRPC ทุกเวอร์ชันที่อธิบายไว้ในเว็บไซต์นี้
| รหัส | สถานะ | หมายเหตุ |
|---|---|---|
| 0 | OK |
กลับมาในวันที่ Success |
| 1 | CANCELLED |
การดำเนินการถูกยกเลิก โดยปกติแล้วผู้โทรจะเป็นผู้ยกเลิก |
| 2 | UNKNOWN |
ตัวอย่างเช่น ข้อผิดพลาดนี้อาจแสดงขึ้นเมื่อค่าสถานะที่ได้รับจากอีกสเปซที่อยู่หนึ่งๆ เป็นของพื้นที่ข้อผิดพลาดที่ไม่รู้จักในสเปซที่อยู่นี้ นอกจากนี้ ระบบยังอาจแปลงข้อผิดพลาดที่เกิดจาก API ซึ่งแสดงข้อมูลข้อผิดพลาดไม่เพียงพอเป็นข้อผิดพลาดนี้ด้วย |
| 3 | INVALID_ARGUMENT |
ไคลเอ็นต์ระบุอาร์กิวเมนต์ไม่ถูกต้อง |
| 4 | DEADLINE_EXCEEDED |
กำหนดเวลาหมดอายุก่อนที่การดำเนินการจะเสร็จสมบูรณ์ สําหรับการดําเนินการที่เปลี่ยนสถานะของระบบ ระบบอาจแสดงข้อผิดพลาดนี้แม้ว่าการดําเนินการจะเสร็จสมบูรณ์แล้วก็ตาม เช่น การตอบกลับที่สำเร็จจากเซิร์ฟเวอร์ที่ล่าช้านานพอที่เวลาหมดอายุ |
| 5 | NOT_FOUND |
ไม่พบเอนทิตีที่ขอบางรายการ |
| 6 | ALREADY_EXISTS |
มีเอนทิตีที่ไคลเอ็นต์พยายามสร้างอยู่แล้ว |
| 7 | PERMISSION_DENIED |
ผู้โทรไม่มีสิทธิ์ดำเนินการที่ระบุ อย่าใช้ PERMISSION_DENIED สำหรับคำปฏิเสธที่เกิดจากทรัพยากรบางอย่างหมด ให้ใช้ RESOURCE_EXHAUSTED แทนสำหรับข้อผิดพลาดเหล่านั้น อย่าใช้ PERMISSION_DENIED หากไม่สามารถระบุผู้โทรได้ (ใช้ UNAUTHENTICATED แทนสำหรับข้อผิดพลาดเหล่านั้น) การได้รับรหัสข้อผิดพลาด PERMISSION_DENIED ไม่ได้หมายความว่าคำขอถูกต้อง หรือเอนทิตีที่ขอมีอยู่ หรือเป็นไปตามเงื่อนไขเบื้องต้นอื่นๆ |
| 8 | RESOURCE_EXHAUSTED |
ทรัพยากรบางอย่างหมดแล้ว เช่น โควต้าต่อผู้ใช้ หรือระบบไฟล์ทั้งระบบไม่มีพื้นที่ว่าง |
| 9 | FAILED_PRECONDITION |
ระบบปฏิเสธการดำเนินการเนื่องจากระบบไม่อยู่ในสถานะที่จําเป็นสําหรับการดําเนินการ เช่น ไดเรกทอรีที่จะลบไม่ได้ว่างเปล่า หรือมีการใช้การดำเนินการ rmdir กับรายการที่ไม่ใช่ไดเรกทอรี |
| 10 | ABORTED |
ระบบยกเลิกการดำเนินการ ซึ่งมักเกิดจากปัญหาการทำงานพร้อมกัน เช่น การตรวจสอบตัวจัดลำดับไม่สำเร็จหรือการยกเลิกธุรกรรม |
| 11 | OUT_OF_RANGE |
พยายามดำเนินการนอกช่วงที่ถูกต้อง |
| 12 | UNIMPLEMENTED |
การดำเนินการนี้ยังไม่เสร็จสิ้นหรือบริการนี้ไม่รองรับ/เปิดใช้การดำเนินการนี้ |
| 13 | INTERNAL |
ข้อผิดพลาดภายใน ซึ่งหมายความว่าอินตัวแปรคงที่บางอย่างที่ระบบพื้นฐานคาดไว้ใช้งานไม่ได้ รหัสข้อผิดพลาดนี้สงวนไว้สำหรับข้อผิดพลาดร้ายแรง |
| 14 | UNAVAILABLE |
ไม่พร้อมให้บริการนี้ในขณะนี้ ปัญหานี้มักเป็นเงื่อนไขชั่วคราวที่แก้ไขได้หากลองอีกครั้งโดยลดจำนวน |
| 15 | DATA_LOSS |
ข้อมูลสูญหายโดยกู้คืนไม่ได้หรือข้อมูลเสียหาย |
| 16 | UNAUTHENTICATED |
คำขอไม่มีข้อมูลเข้าสู่ระบบการตรวจสอบสิทธิ์ที่ถูกต้องสำหรับการดำเนินการ |
บางครั้งอาจมีรหัสข้อผิดพลาดหลายรหัส บริการควรแสดงรหัสข้อผิดพลาดที่เฉพาะเจาะจงที่สุดซึ่งเกี่ยวข้อง เช่น เลือกใช้ OUT_OF_RANGE แทน FAILED_PRECONDITION หากมีการใช้ทั้ง 2 รหัส
ในทำนองเดียวกัน ให้ใช้ NOT_FOUND หรือ ALREADY_EXISTS แทน FAILED_PRECONDITION
FAILED_PRECONDITION เทียบกับ ABORTED เทียบกับ UNAVAILABLE
ต่อไปนี้เป็นข้อมูลคร่าวๆ ที่ช่วยคุณตัดสินใจระหว่าง FAILED_PRECONDITION, ABORTED และ UNAVAILABLE
- ใช้
UNAVAILABLEหากไคลเอ็นต์สามารถลองโทรอีกครั้งได้ - ใช้
ABORTEDหากไคลเอ็นต์ควรลองอีกครั้งในระดับที่สูงขึ้น เช่น เมื่อการทดสอบและการตั้งค่าที่ไคลเอ็นต์ระบุไม่สําเร็จ ซึ่งบ่งชี้ว่าไคลเอ็นต์ควรเริ่มลําดับการอ่าน แก้ไข และเขียนอีกครั้ง - ใช้
FAILED_PRECONDITIONหากไคลเอ็นต์ไม่ควรลองอีกครั้งจนกว่าระบบจะแก้ไขสถานะอย่างชัดเจน เช่น หาก "rmdir" ดำเนินการไม่สำเร็จเนื่องจากไดเรกทอรีไม่ใช่ "ว่าง" ทางที่ดีควรแสดงผลFAILED_PRECONDITIONเนื่องจากไคลเอ็นต์ไม่ควรลองอีกครั้ง เว้นแต่จะมีการลบไฟล์ออกจากไดเรกทอรี
INVALID_ARGUMENT เทียบกับ FAILED_PRECONDITION เทียบกับ OUT_OF_RANGE
ต่อไปนี้เป็นข้อมูลคร่าวๆ ที่ช่วยคุณตัดสินใจระหว่าง INVALID_ARGUMENT, FAILED_PRECONDITION และ OUT_OF_RANGE
- ใช้
INVALID_ARGUMENTหากอาร์กิวเมนต์มีปัญหา ไม่ว่าระบบจะอยู่ในสถานะใดก็ตาม เช่น URL ผิดรูปแบบ - ใช้
OUT_OF_RANGEหากค่าอยู่นอกช่วงเนื่องจากสถานะของระบบ เช่น start_date อยู่ก่อนstart_date_restrict - ใช้
FAILED_PRECONDITIONหากค่าไม่ถูกต้องเนื่องจากสถานะของระบบ แต่ไม่ใช่ค่าOUT_OF_RANGE