โค้ดตอบกลับสถานะ

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