أخطاء 502 خاصة بالمستخدم بعد تسجيل الدخول - تم تتبعها إلى DiscourseUpdates.has_unseen_features؟

مرحباً،

أواجه مشكلة غريبة في منصة Discourse حيث تحدث أخطاء 502 فقط لحساب مستخدم واحد محدد (المسؤول) بعد تسجيل الدخول، بينما:

  • يمكن للمستخدمين المجهولين الوصول إلى الموقع بشكل طبيعي

  • يمكن لحسابات المستخدمين الأخرى تسجيل الدخول واستخدام الموقع بشكل طبيعي

  • المشكلة تظهر فقط لـ حساب واحد محدد (حساب المسؤول)


:puzzle_piece: البيئة (Environment)

  • تم تثبيت Discourse عبر إعداد Docker الرسمي

  • وكيل عكسي / شبكة توصيل المحتوى (CDN): ArvanCloud (مشابه لـ Cloudflare)

  • الوصول إلى الإنترنت الدولي مقيد / غير مستقر (GitHub وبعض الخدمات الخارجية غير قابلة للوصول)

  • لم يتم تحديث Discourse منذ حوالي شهر


:red_exclamation_mark: الأعراض

عند الوصول إلى الموقع:

  • إذا فتحت الموقع في وضع التصفح الخاص/المتخفي ← يتم تحميل الموقع بشكل جيد

  • إذا قمت بتسجيل الدخول باستخدام حسابي الرئيسي ← أحصل فوراً على 502 Bad Gateway

  • إذا قمت بتسجيل الدخول باستخدام حساب آخر ← كل شيء يعمل بشكل جيد

لذا، المشكلة واضحة أنها خاصة بالمستخدم ويتم تشغيلها بعد المصادقة.


:page_facing_up: سجلات أخطاء شبكة توصيل المحتوى (ArvanCloud)

يظهر خطآن رئيسيان:

1. مهلة الاتصال بالمنبع أثناء القراءة (Upstream timeout while reading upstream)

upstream timed out (110: Connection timed out) while reading upstream

عناوين URL المتأثرة هي في الغالب أصول (assets)، على سبيل المثال:

  • /assets/browser-detect-*.js

  • /assets/plugins/automation-*.js

  • /assets/plugins/discourse-gamification-*.js

  • /assets/plugins/discourse-lazy-videos-*.js

2. إغلاق الاتصال بالمنبع قبل الأوان (Upstream prematurely closed connection)

upstream prematurely closed connection while reading response header from upstream

على سبيل المثال:

  • /stylesheets/common_theme_rtl_*.css

  • /theme-javascripts/*.js

لذا، تنتظر شبكة توصيل المحتوى (CDN) استجابة من Discourse ولكن الواجهة الخلفية تنتهي مهلتها أو تغلق الاتصال.


:magnifying_glass_tilted_left: ما وجدته في الواجهة الخلفية (Backend)

في تتبعات مكدس Rails، يشير مسار الخطأ إلى:

  • current_user_serializer.rb

  • discourse_updates.rb

  • الدالة: DiscourseUpdates.has_unseen_features?

مما يشير إلى أن الانهيار/انتهاء المهلة يحدث أثناء التحقق من إعلانات الميزات الجديدة للمستخدمين الذين قاموا بتسجيل الدخول.

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


أقدر أي توجيه.
شكراً جزيلاً.

هل جربت على متصفحات/أجهزة أخرى؟ هل جربت تعطيل إضافات المتصفح لديك؟

تعديل: ربما أسأت الفهم. هل يعمل الموقع في وضع التصفح المتخفي وأنت مسجل الدخول كمستخدم؟

نعم، لقد اختبرت على أجهزة ومتصفحات متعددة، ولا يتعلق الأمر بإضافات المتصفح.

ما أراه خاص بالمستخدم، وليس خاصًا بالجهاز:

  • على أي جهاز تم فيه تسجيل الدخول إلى حساب المسؤول بالفعل، يؤدي فتح الموقع فورًا إلى ظهور 502 Bad Gateway.

  • في الوضع المتخفي/الخاص، يتم تحميل الموقع بشكل طبيعي ويمكنني الوصول إلى صفحة تسجيل الدخول.

  • من هناك، يمكنني تسجيل الدخول بنجاح باستخدام حساب آخر (غير مسؤول) ويعمل الموقع بشكل جيد.

  • ولكن عندما أحاول تسجيل الدخول باستخدام حساب المسؤول، مباشرة بعد إرسال البريد الإلكتروني وكلمة المرور، أحصل باستمرار على 502، ولا يتم تحميل الصفحة أبدًا.

إعجاب واحد (1)