รหัสสถานะต่อไปนี้สามารถแสดงในการตอบสนอง gRPC วิธีการนี้ใช้กับ gRPC ทุกเวอร์ชันที่ระบุไว้ในเว็บไซต์นี้
รหัส | สถานะ | Notes |
---|---|---|
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 |
ไม่พร้อมให้บริการนี้ในขณะนี้ นี่น่าจะเป็นเงื่อนไขชั่วคราวที่แก้ไขได้หากลองดำเนินการอีกครั้งโดยใช้ Backoff |
15 | DATA_LOSS |
ข้อมูลเสียหายหรือสูญหายโดยกู้คืนไม่ได้ |
16 | UNAUTHENTICATED |
คำขอไม่มีข้อมูลเข้าสู่ระบบการตรวจสอบสิทธิ์ที่ถูกต้องสำหรับการดำเนินการ |
บางครั้งอาจมีรหัสข้อผิดพลาดหลายอย่าง บริการต่างๆ จะแสดงรหัสข้อผิดพลาดที่เจาะจงที่สุดที่เกี่ยวข้อง เช่น ขอให้ OUT_OF_RANGE
มากกว่า FAILED_PRECONDITION
หากทั้งสองรหัสมีผล
ในทำนองเดียวกัน โปรดกำหนด NOT_FOUND
หรือ ALREADY_EXISTS
มากกว่า FAILED_PRECONDITION
FAILED_PRECONDITION เทียบกับ "ล้มเลิก" กับ UNAVAILABLE
ต่อไปนี้คือการทดสอบลิมมัสที่อาจช่วยคุณตัดสินใจระหว่าง FAILED_PRECONDITION
, ABORTED
และ UNAVAILABLE
- ใช้
UNAVAILABLE
หากไคลเอ็นต์ลองสลับการโทรที่ไม่สำเร็จอีกครั้งได้ - ใช้
ABORTED
หากไคลเอ็นต์ควรลองดำเนินการอีกครั้งในระดับที่สูงกว่า เช่น เมื่อไคลเอ็นต์ชุดทดสอบที่ระบุล้มเหลว ซึ่งบ่งชี้ว่าไคลเอ็นต์ควรเริ่มลำดับการเขียนแบบ Read-modify-write ใหม่ - ใช้
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