تباطؤ المنتدى بعد إعادة التشغيل والترقية من لوحة الإدارة - كيف يمكن تسريعه؟

فشل الترقية في منتصف الطريق، مما أدى إلى توقف المنتدى عن العمل. استخدمنا Codex لإصلاح مشكلة الترقية، وعاد المنتدى للعمل مرة أخرى.

مُستضاف على Digital Ocean

بشكل غريب، المشكلة تظهر فقط كبطء من لوحة تحكم المسؤول.

النتائج:

  • إضافة discourse-question-answer قديمة في المصدر. النسخة التي تعمل لديك هي من 2022-08-17.

  • الموقع الحي لم يكن يتعطل بسببها. فقد كانت ملفات categories.json و latest.json والجذر (/) تعمل جميعها بعد التعافي.

  • كانت المشكلة الفعلية أضيق نطاقًا: أثناء عملية إعادة البناء/التمهيد، أدى بذر الفئة لمحادثة Chat لمرة واحدة إلى تفعيل خطاف BasicCategorySerializer للإضافة، والذي قام باستدعاء object.send(key) بشكل مفرط.

    وأدى ذلك إلى ظهور خطأ “Error seeding chat category - #<NoMethodError: undefined method ‘qa_enabled’ for an instance of Category>” في سجل إعادة البناء.

ما قمت بتغييره:

  • قمت بتعديل مُسلسل الإضافة قيد التشغيل لاستخدام بديل آمن بدلاً من استدعاء send بشكل أعمى.

  • أضفت نفس تصحيح التوافق إلى /var/discourse/containers/app.yml بحيث يتم إعادة تطبيقه تلقائيًا في عمليات إعادة البناء المستقبلية.

  • احتفظت بنسخ احتياطية في /var/discourse/containers/app.yml.bak-2026-04-08 و /var/discourse/containers/app.yml.bak-2026-04-08-qa.

التحقق:

تحذير واحد:

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

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

هذه الإضافة قديمة، يجب عليك إزالتها.