لقد قمت مؤخرًا بترقية مثيل Docker الخاص بـ Discourse الذي يعمل على EC2 في Ubuntu. استخدمت أمر launcher rebuild للترقية. كان لدي سابقًا الإصدار 2.4.0 وقمت بالترقية إلى 2.6.0.beta1 (ثم قمت بالترقية مرة أخرى إلى 2.6.0.beta2). أنا أستخدم Elasticache بدلاً من Redis، وكان يعمل دون مشاكل قبل الترقية. مباشرة بعد الترقية، لاحظت أن Sidekiq لم يكن يرسل رسائل البريد الإلكتروني. قمت بإعادة تشغيل التطبيق ومسح الذاكرة المؤقتة، وبدا وكأنه يعمل، لكن ذلك كان نتيجة إيجابية كاذبة.
مؤشرات الخلل الملاحظة
- يقوم Sidekiq بجدولة وتنسيق المهام بوتيرة ثابتة ومعقولة (كما يُظهر لوحة تحكم Sidekiq)، لكنه لا ينفذ أي منها.
- صفحة الإدارة تشكو من عدم تشغيل Sidekiq.
- تُظهر السجلات عدة حالات لرسالة “فشل اختبار نبض Sidekiq، جاري إعادة التشغيل”.
- بطبيعة الحال: لا تصل رسائل البريد الإلكتروني إلى المستخدمين.
الأشياء التي جربتها (بعد قراءة المنشورات هنا ومن Stack Overflow)
- إرسال رسالة بريد إلكتروني تجريبية بنجاح باستخدام أداة
discourse-doctorللتحقق من أن جزءًا من التدفق يعمل. - التحقق من لوحة تحكم Sidekiq للتأكد من أن التذييل يعرض مثيل Elasticache الصحيح .
- التحقق من أن سجلات Docker لا تشير إلى أي خطأ (
ok: run: redis: (pid XX) 0s). - مسح الذاكرة المؤقتة وإعادة تشغيل Discourse (
./launcher restart app). - إيقاف التطبيق، ومسح الذاكرة المؤقتة، ثم تشغيل التطبيق مرة أخرى.
- إعادة بناء التطبيق مرة أخرى.
الخطوات التي لم أجربها
- إنشاء مثيل جديد لـ Elasticache.
- إيقاف هذا التثبيت وإنشاء تثبيت نظيف جديد.
هل واجه أي شخص هذه المشكلة ولديه أي اقتراحات؟
هل هناك أي سجلات قد فاتني؟
هل هناك طريقة يمكنني من خلالها إجبار Sidekiq على معالجة مهامه؟