تثبيت Discourse الخاص بنا، وهو تثبيت قياسي يعتمد على المستودع الرسمي ولكنه يستخدم تكامل SSO كنظام تسجيل دخول وحيد، يعمل منذ عدة سنوات ويخدم قاعدة مستخدمين كبيرة، ويعمل على خادم مخصص يعتمد على Ubuntu ويشغل تطبيقات أخرى، دون مشاكل كبيرة يسعدني الإبلاغ عنها.
للأسف، تعرض مؤخرًا لخلل مفاجئ ولم يعد يعمل على الإطلاق.
كانت التقارير الأولية تفيد بأن الموقع كان يعرض الكثير من أخطاء 500 العشوائية على ما يبدو ولم يتم تسليم الإشعارات، ولكن بخلاف ذلك كان لا يزال يعمل. كان السياق هو أن التثبيت تم تحديثه آخر مرة قبل شهر أو شهرين ولم يتم إجراء أي تغييرات عليه أو على بيئة الخادم، لذا كان هذا تطورًا مفاجئًا.
أكدنا حدوث أخطاء 500، وحاولنا أولاً إعادة تشغيل الخادم والحاوية دون جدوى. تم تشغيل “apt-get update” لتحديث جميع الحزم. حاولنا أيضًا تحديث Discourse عبر الواجهة الخلفية، ولكن أثناء تسجيل الدخول باستخدام رابط المسؤول، لم يتم إرسال أي روابط تسجيل دخول عبر البريد الإلكتروني، وبعد إعادة تشغيل الحاوية، أنتجت صفحة تسجيل الدخول للمسؤول خطأ 500 فقط.
كما قمت بفحص بيئة الخادم بحثًا عن أي شذوذ في الأجهزة أو نظام التشغيل أو غير ذلك، ولم يبدو أن هناك أي شيء خاطئ.
بعد ذلك، حاولنا إعادة البناء بالكامل وتحديث “git pull” عبر سطر الأوامر. فشل هذا أثناء عمليات ترحيل قاعدة البيانات الخاصة بالترقية مع الخطأ التالي:
I, [2022-08-09T23:15:21.229857 #1] INFO -- : cd /var/www/discourse & su discourse -c 'LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all'
I, [2022-08-09T23:15:23.938876 #1] INFO -- : docker_manager is already at latest compatible version
I, [2022-08-09T23:15:23.939220 #1] INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
2022-08-09 23:15:28.956 UTC [835] discourse@discourse ERROR: duplicate key value violates unique constraint "idx_bookmarks_user_polymorphic_unique"
2022-08-09 23:15:28.956 UTC [835] discourse@discourse DETAIL: Key (user_id, bookmarkable_type, bookmarkable_id)=(4115, Post, 103355) already exists.
2022-08-09 23:15:28.956 UTC [835] discourse@discourse STATEMENT: UPDATE bookmarks
SET bookmarkable_id = post_id, bookmarkable_type = 'Post'
WHERE NOT bookmarks.for_topic AND bookmarkable_id IS NULL
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
ERROR: duplicate key value violates unique constraint "idx_bookmarks_user_polymorphic_unique"
DETAIL: Key (user_id, bookmarkable_type, bookmarkable_id)=(4115, Post, 103355) already exists.
إذا كان هناك عدم اتساق في قاعدة البيانات، فلا أعرف كيف حدث ذلك… يمكنني تقديم بقية سجل وحدة التحكم إذا لزم الأمر.
اكتمل تشغيل “./discourse-doctor” دون مشاكل واضحة، باستثناء تحذير بشأن تكوين خادم البريد - “فشل التحقق من الشهادة (شهادة موقعة ذاتيًا)” - والذي قد يفسر سبب عدم إرسال رسائل البريد الإلكتروني. في السابق، تم إرسالها بالتكوين الحالي، ويبدو أن خادم البريد يعمل بشكل جيد بخلاف ذلك، لذا لست متأكدًا من هذا.
حاليًا، الموقع معطل تمامًا (يعرض فقط أخطاء 500 بعد فشل التحديث). ليس لدينا أي فكرة عن كيفية المتابعة في هذه المرحلة، بخلاف محاولة طلب الدعم الخارجي. أي توجيه سيكون محل تقدير كبير!