أشارك هذه المعلومة في حال كانت مفيدة لأي شخص آخر يرى كلمة “جاري التحديث” في لوحة الإدارة رغم عدم وجود تحديث فعلي جارٍ، ويبدو المنتدى سليمًا من الناحية الأخرى.
رغم أن هذه المشكلة لم تؤثر أبدًا على تحديثات مدير Docker، فقد اضطررت في الإصدارات القليلة الماضية إلى إجراء التحديثات عبر سطر الأوامر (CLI) لأن لوحة الإدارة كانت تشير دائمًا إلى أن Discourse قيد التحديث.
منتداي صغير ولا يحتوي على إضافات مخصصة.
كان حل المشكلة هو تفريغ ذاكرة التخزين المؤقت لـ Redis.
لا يمكنني الكشف عن السبب الجذري، لكن كان الأمر محبطًا للغاية أن أصل إلى حد معرفتي وفهمي لعملية تحديث Discourse (هذا ليس شكوى، بل اعتراف).
حتى الآن، كانت إعادة بناء التطبيق (rebuild app) دائمًا الحل الموثوق تقريبًا لأي مشكلة.
يحتوي Redis أيضًا على جلسات المستخدمين وأكثر من ذلك. تفريغ Redis بالكامل سيتسبب في تسجيل خروج الجميع وحذف جميع مهام Sidekiq المعلقة. ستعود المهام المجدولة فقط بعد إعادة التشغيل التالية.
يجب أن يكون هذا الملاذ الأخير، وحتى في هذه الحالة، أشجعك على تحديد المفاتيح المحددة المسؤولة عن المشكلة بدلاً من استخدام أمر flushall. هذا يشبه إشعال حريق في مبنى كامل فقط للتخلص من فأر.
هل يمكن إعادة تشغيل Redis بدلاً من ذلك؟ أعتقد أنه قاعدة بيانات في الذاكرة، لذا لن يتم الاحتفاظ بأي شيء بعد إعادة تشغيل الخادم، على سبيل المثال. كما أن إعادة تشغيل الخادم ليست مدمرة (وقد تحدث في أي وقت).
أفضّل التحديث عبر سطر الأوامر، لكنني قمت للتو بتحديث Docker و Discourse من الواجهة الرسومية على هاتفي iPhone 15، وقد سارت الأمور بشكل جيد هذه المرة (تثبيت قياسي على DigitalOcean).
عادةً ما أقوم بكل ذلك عبر سطر الأوامر على أحد أجهزتي الحاسوب، لأن التحديث من الواجهة الرسومية فشل معي في المرة الأخيرة التي جربتها (قبل بضعة أشهر، لذا اضطررت إلى الدخول عبر SSH على أي حال).