Code

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

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

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

ليس خطأ؛ عند النجاح.

تعيين HTTP: 200 OK

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 إذا كان على العميل إعادة المحاولة على مستوى أعلى. على سبيل المثال، عندما يتعذّر الاختبار والضبط المحدّد من العميل، يعني ذلك أنّ العميل يجب أن يعيد تشغيل تسلسل القراءة والتعديل والكتابة. (ج) استخدِم 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 في الخادم الداخلي