كيفية إصلاح UNKNOWN_EXCEPTION في عمليات نشر Salesforce

أعادت Salesforce خطأ عامًا غير مصنف، يشير عادةً إلى مشكلة في جانب المؤسسة وليس في ميتاداتا النشر نفسها.

يظهر أثناء: أي عملية نشر أو DML، كخطأ جامع عندما لا ينطبق شيء أكثر تحديدًا

المعنى

UNKNOWN_EXCEPTION هو رمز الخطأ الجامع في Salesforce للفشل الذي لا يندرج تحت نوع خطأ محدد وموثّق. غالبًا ما يشير إلى مشكلة على مستوى المؤسسة، أو مشكلة مؤقتة في المنصة، أو استثناء غير معالج في أعماق حزمة مُدارة، أو تعارض ميتاداتا غير معتاد للتصنيف، بدلًا من خطأ في حزمة النشر نفسها.

نظرًا لأن الرمز نفسه لا يحمل أي تفاصيل تشخيصية، تعامل معه كإشارة للنظر إلى الخارج، إلى حالة الـ instance وداخليات الحزمة وعمليات النشر الجزئية السابقة، بدلًا من افتراض أن الحل يكمن في الميتاداتا التي كتبتها للتو.

التشخيص

الأسباب الشائعة

مشكلة عابرة في المنصة
مشكلة مؤقتة في البنية التحتية لـ Salesforce أو انتهاء مهلة أثناء النشر، لا علاقة لها بمحتوى النشر.
استثناء غير معالج داخل حزمة مُدارة
يُطلق المنطق الداخلي لحزمة مُدارة استثناءً لا يُكشف برمز خطأ محدد لمؤسسات المشتركين.
حالة ميتاداتا تالفة أو متعارضة
تحتوي المؤسسة الهدف على ميتاداتا في حالة غير متسقة، غالبًا متبقية من عملية نشر سابقة فاشلة أو جزئية لم يتم تنظيفها.

الحل

  1. أعد محاولة النشر
    العديد من حالات فشل UNKNOWN_EXCEPTION مؤقتة؛ تحلها إعادة محاولة بسيطة دون أي تغيير.
  2. تحقق من حالة Salesforce Trust للـ instance الهدف
    تأكد من عدم وجود حادث نشط أو نافذة صيانة على instance المؤسسة قبل متابعة استكشاف الأخطاء.
    https://status.salesforce.com/instances/<your-instance>
  3. انشر مجموعة فرعية أصغر لعزل السبب
    قسّم عملية النشر إلى أجزاء أصغر لتحديد المكوّن الذي يسبب الاستثناء تحديدًا، لأن الخطأ نفسه لا يقدم تفاصيل.
من واقع الاستخدام

إزاي Serpent بتمنع ده

يحافظ Serpent على سجلات نشر وتاريخ كاملين لكل مهمة، بحيث يمكن تتبع عملية نشر أُعيدت محاولتها بعد UNKNOWN_EXCEPTION إلى المحاولة الدقيقة التي فشلت بدلًا من ضياعها في تشغيل CI لمرة واحدة. اطّلع على مكتبة أخطاء نشر Salesforce.

الـ metadata والبيانات في مسار نشر واحد داخل Serpent

الوقاية

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

UNKNOWN_EXCEPTION: الإجابة

هل يجب أن أفتح حالة دعم Salesforce بخصوص UNKNOWN_EXCEPTION؟
إذا لم تحل إعادة المحاولة وعزل المكوّن المشكلة، فنعم. لأن الخطأ لا يحمل أي تفاصيل، يمكن لدعم Salesforce غالبًا رؤية تتبع المكدس الأساسي الذي لا تكشفه نتيجة النشر.
ما المعلومات التي يجب أن أجمعها قبل التواصل مع الدعم؟
معرف النشر أو المهمة، والطابع الزمني الدقيق للفشل، واسم instance المؤسسة؛ يمكن للدعم البحث عن الخطأ الأساسي بمقابلة معرف النشر حتى عندما تكون الرسالة الموجهة للعميل عامة.
هل يعني UNKNOWN_EXCEPTION أن نفس الفشل سيتكرر دائمًا؟
ليس بالضرورة. جزء كبير من هذه الأعطال هو مشاكل مؤقتة في المنصة تُحل من تلقاء نفسها، ولهذا فإن إعادة المحاولة تكون دائمًا الخطوة الأولى، وليست الملاذ الأخير.

ابدأ مجانًا. بدون بطاقة ائتمان، وبدون تثبيت، وبدون التزام.

يتم الإعداد في أقل من 15 دقيقة. بدون الحاجة لتوظيف DevOps.

هل تريد معرفة كيف يمكنكم الشحن أسرع قبل البدء؟ لنتحدث

بدون التزام.