Code

رموز الخطأ الأساسية لواجهات برمجة تطبيقات gRPC.

وقد تسري أحيانًا رموز خطأ متعددة. ويجب أن تعرض الخدمات رمز الخطأ الأكثر تحديدًا الذي ينطبق. على سبيل المثال، تفضيل OUT_OF_RANGE على FAILED_PRECONDITION إذا كان كلا الرمزين ينطبق عليهم. أفضّل NOT_FOUND أو ALREADY_EXISTS على FAILED_PRECONDITION.

عمليات التعداد
OK

حدث خطأ، ولم يتم إرجاعها بنجاح.

تعيين HTTP: 200 حسنًا

CANCELLED

تم إلغاء العملية، عادةً من قِبل المتصل.

ربط HTTP: 499 طلب العميل مغلق

UNKNOWN

حدث خطأ غير معروف. على سبيل المثال، قد يتم عرض هذا الخطأ عندما تنتمي قيمة Status تم تلقيها من مساحة عنوان أخرى إلى مساحة خطأ غير معروفة في مساحة العنوان هذه. ويمكن أيضًا تحويل الأخطاء التي أدت إليها واجهات برمجة التطبيقات التي لا تعرض معلومات خطأ كافية إلى هذا الخطأ.

تعيين HTTP: خطأ 500 في الخادم الداخلي

INVALID_ARGUMENT

حدّد العميل وسيطة غير صالحة. لاحظ أن هذا يختلف عن FAILED_PRECONDITION. تشير علامة INVALID_ARGUMENT إلى وسيطات بها مشاكل بغض النظر عن حالة النظام (مثل، اسم ملف مكتوب بشكل غير صحيح).

تعيين HTTP: طلب غير صحيح 400

DEADLINE_EXCEEDED

انتهت صلاحية الموعد النهائي قبل اكتمال العملية. بالنسبة إلى العمليات التي تغيّر حالة النظام، قد يتم عرض هذا الخطأ حتى إذا اكتملت العملية بنجاح. على سبيل المثال، يمكن أن يتأخر الرد الناجح من الخادم لفترة كافية حتى تنتهي الموعد النهائي.

تعيين HTTP: انتهاء مهلة مدخل 504

NOT_FOUND

لم يتم العثور على بعض الكيانات المطلوبة (مثلاً ملف أو دليل).

ملاحظة لمطوّري البرامج: في حال رفض طلب لفئة كاملة من المستخدمين، مثل الطرح التدريجي للميزات أو القائمة المسموح بها غير الموثَّقة، يمكن استخدام NOT_FOUND. إذا تم رفض طلب لبعض المستخدمين ضمن فئة من المستخدمين، مثل التحكُّم في الوصول المستند إلى المستخدم، يجب استخدام PERMISSION_DENIED.

تعيين HTTP: 404 لم يتم العثور على الصفحة

ALREADY_EXISTS

الكيان الذي حاول العميل إنشاؤه (مثل ملف أو دليل) موجود من قبل.

ربط HTTP: تعارض 409

PERMISSION_DENIED

المتصل ليس لديه إذن لتنفيذ العملية المحددة. يجب عدم استخدام PERMISSION_DENIED لحالات الرفض الناتجة عن استنفاد بعض الموارد (استخدِم RESOURCE_EXHAUSTED بدلاً من هذه الأخطاء). يجب عدم استخدام PERMISSION_DENIED إذا تعذّر تحديد المتصل (يمكنك استخدام UNAUTHENTICATED بدلاً من ذلك مع هذه الأخطاء). لا يشير رمز الخطأ هذا إلى أنّ الطلب صالح أو أنّ الكيان المطلوب موجود أو يستوفي شروطًا مسبقة أخرى.

تعيين HTTP: 403 محظور

UNAUTHENTICATED

لا يحتوي الطلب على بيانات اعتماد مصادقة صالحة للعملية.

تعيين HTTP: 401 غير مصرح به

RESOURCE_EXHAUSTED

تم استنفاد بعض الموارد، أو قد تكون الحصة لكل مستخدم، أو نظام التشغيل غير متوفّر.

ربط HTTP: 429 عدد كبير جدًا من الطلبات

FAILED_PRECONDITION

تم رفض العملية لأن النظام ليس في حالة مطلوبة للتنفيذ. مثلاً، الدليل الذي يتم حذفه غير فارغ، ويتم تطبيق عملية rmdir على دليل غير الدليل، وما إلى ذلك.

يمكن لمنفِّذي الخدمة استخدام الإرشادات التالية لتحديد ما بين FAILED_PRECONDITION وABORTED وUNAVAILABLE: (أ) استخدم UNAVAILABLE إذا كان بإمكان العميل إعادة محاولة الفشل في الطلب فقط. (ب) استخدِم ABORTED إذا كان على العميل إعادة المحاولة على مستوى أعلى. على سبيل المثال، عند تعذّر الاختبار والضبط الذي حدّده العميل، يشير ذلك إلى أنه على العميل إعادة تشغيل تسلسل Read-mod-write. (ج) استخدِم FAILED_PRECONDITION إذا لم يجب إعادة المحاولة حتى يتم إصلاح حالة النظام بشكلٍ صريح. على سبيل المثال، إذا تعذّر تنفيذ &"rmdir" لأن الدليل غير فارغ، يجب عرض FAILED_PRECONDITION لأنه يجب على العميل عدم إعادة المحاولة ما لم يتم حذف الملفات من الدليل.

تعيين HTTP: طلب غير صحيح 400

ABORTED

تم إلغاء العملية، عادةً بسبب مشكلة في المزامنة، مثل تعذّر التحقّق من التسلسل أو إلغاء العملية.

يمكنك الاطّلاع على الإرشادات أعلاه لتحديد ما بين FAILED_PRECONDITION وABORTED وUNAVAILABLE.

ربط HTTP: تعارض 409

OUT_OF_RANGE

تمت محاولة العملية بعد النطاق الصحيح. على سبيل المثال، ترجيع الكتاب أو قراءته قبل نهاية الملف.

وعلى عكس INVALID_ARGUMENT، يشير هذا الخطأ إلى مشكلة قد يتم حلها إذا تغيّرت حالة النظام. على سبيل المثال، سيُنشئ نظام ملفات 32 بت INVALID_ARGUMENT إذا طُلب منه القراءة وفق إزاحة لا تقع ضمن النطاق [0,2^32-1]، ولكن سيتم إنشاء OUT_OF_RANGE إذا طُلب منه القراءة من إزاحة تتجاوز حجم الملف الحالي.

هناك بعض التداخل بين FAILED_PRECONDITION وOUT_OF_RANGE. ننصح باستخدام OUT_OF_RANGE (الخطأ الأكثر تحديدًا) عند تطبيقه، حتى يتمكّن المتصلون الذين يكرّرون مساحة العمل من البحث بسهولة عن خطأ OUT_OF_RANGE لرصد وقت انتهائهم.

تعيين HTTP: طلب غير صحيح 400

UNIMPLEMENTED

العملية غير تنفيذية أو غير متاحة/مفعَّلة في هذه الخدمة.

تعيين HTTP: لم يتم تنفيذ 501

INTERNAL

الأخطاء الداخلية وهذا يعني أن بعض الثوابت التي يتوقعها النظام الأساسي قد تعطّلت. رمز الخطأ هذا محجوز للأخطاء الجسيمة.

تعيين HTTP: خطأ 500 في الخادم الداخلي

UNAVAILABLE

هذه الخدمة غير متاحة حاليًا. هذه الحالة على الأرجح عابرة، ويمكن تصحيحها من خلال إعادة المحاولة باستخدام تراجع. ويُرجى العِلم أنّه من غير الآمن دائمًا إعادة محاولة إجراء عمليات غير سلِسة.

يمكنك الاطّلاع على الإرشادات أعلاه لتحديد ما بين FAILED_PRECONDITION وABORTED وUNAVAILABLE.

تعيين HTTP: خدمة 503 غير متاحة

DATA_LOSS

فقدان البيانات أو تلفها غير قابل للاسترداد.

تعيين HTTP: خطأ 500 في الخادم الداخلي