ما الذي ينكسر فعلاً عند ترقية ERPNext إلى الإصدار ١٥
بعد ست عمليات ترحيل، تتجمّع الأعطال في الأماكن الأربعة نفسها. ولا شيء منها مذكور في ملاحظات الإصدار.
ملاحظات الإصدار ١٥ دقيقة، لكنها ليست نافعة كثيراً. تخبرك بما تغيّر في إطار العمل، ولا تخبرك بما سينكسر في نسخة إنتاج عمرها خمس سنوات وفيها أحد عشر تطبيقاً مخصّصاً — وهذا هو السؤال الوحيد الذي يشغل الجميع فعلاً.
إليك أين تعثّرت آخر ست ترقيات لدينا.
تطبيقات مخصّصة مربوطة بواجهات Frappe قديمة
هذه هي المشكلة الكبرى، وتمثّل نحو سبعين بالمئة من الألم كله. التطبيقات المكتوبة على الإصدار ١٣ أو أوائل ١٤ تميل إلى استدعاء أجزاء داخلية من إطار العمل انتقلت أو اختفت. والأعطال نادراً ما تكون صاخبة — يُثبَّت التطبيق بلا مشكلة، ثم يفشل على نوع مستند بعينه عند الثانية فجراً.
الحل ليس ذكياً، إنه مجرّد عمل: اقرأ كل تطبيق مخصّص، وابحث عن الاستدعاءات المهجورة، وشغّل مجموعة اختبارات التطبيق على bench تجريبي بالإصدار ١٥. وإن لم يكن للتطبيق اختبارات، فتلك أول فاتورة لديك.
صيغ الطباعة المتضمّنة Jinja
صيغ الطباعة المخصّصة التي تُضمّن Jinja مقابل حقول المستند تنكسر حين تتغيّر أسماء الحقول أو حين يتبدّل سلوك جلب حقل رابط. والقسم المالي يلاحظ ذلك فوراً، لأن الفاتورة التي يطبعها صباح الأحد فقدت فجأة تفصيل ضريبة القيمة المضافة.
أحصِ صيغ الطباعة قبل الترقية. عددها دائماً أكبر مما يتذكره أحد.
المجدول
المهام الخلفية التي كانت تفشل بصمت على الإصدار ١٤ تبدأ غالباً بالفشل بصوت عالٍ على ١٥، وهذا تحسّن لا يبدو كذلك في حينه. راجع سجل المجدول للأسبوعين السابقين للترقية — ستجد عادة شيئاً معطوباً منذ شهور.
ترميز قاعدة البيانات في النسخ القديمة
النسخ التي أُنشئت قبل سنوات تحمل أحياناً ترميز مقارنة لا تتعامل معه ترحيلات الإصدار ١٥ بنظافة. ويظهر ذلك كفشل في الترحيل في منتصف الطريق، وعندها تكون تستعيد من نسخة احتياطية.
افحص الترميز أولاً. يستغرق دقيقة ويوفّر ليلة.
المسار الفعلي
ما نفعله الآن، بالترتيب:
- نسخ الإنتاج إلى bench تجريبي.
- تشغيل الترقية على التجريبي والتقاط كل خطأ.
- الإصلاح، وإعادة النسخ، وإعادة التشغيل — حتى تنجح مرتين متتاليتين بلا أخطاء.
- تسليم البيئة التجريبية للعميل لأسبوع من الاستخدام الحقيقي.
- جدولة تحويل الإنتاج مع أخذ نقطة استعادة قبله مباشرة.
جولتان نظيفتان لا واحدة. الجولة النظيفة الأولى تكون حظاً في الغالب.