ระบบอาจแสดงรหัสสถานะต่อไปนี้ในการตอบกลับ 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