لم تعد البحث يعمل بعد تحديث 3.1.0.beta1

منذ تحديث 3.1.0 الخاص بنا اليوم، لم تعد وظيفة البحث لدينا تعمل.
حدد فريق مسؤول النظام لدينا مشكلة وقدم لنا هذا السجل الذي يشير إلى أن هذا خطأ في التطبيق.

هل واجه أي شخص آخر هذه المشكلة وما هي الأدلة التي يمكن أن تساعدنا في حل المشكلة بأنفسنا؟ أرى أن البحث يعمل بشكل مثالي في Discourse Meta.

بدأ GET "/search?q=37%20%20realm&page=1" لـ [IP_REDACTED] في 2023-01-13 11:19:36 +0000
معالجة بواسطة SearchController#show بصيغة JSON
المعلمات: {"q"=>"37  realm", "page"=>"1"}
اكتمل خطأ الخادم الداخلي 500 في 4 مللي ثانية (ActiveRecord: 0.0 مللي ثانية | التخصيصات: 1555)
ArgumentError (عدد خاطئ من الوسائط (معطى 1، متوقع 0))
lib/search.rb:285:in `execute'
app/controllers/search_controller.rb:73:in `show'
app/controllers/application_controller.rb:414:in `block in with_resolved_locale'
app/controllers/application_controller.rb:414:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/middleware/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:366:in `call'
config/initializers/008-rack-cors.rb:24:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'
فشل في معالجة الاستثناء في تطبيق الوسيط للاستثناء: ArgumentError: عدد خاطئ من الوسائط (معطى 1، متوقع 0)
لقطات شاشة للمشكلة



لا يمكن أن تكون مشكلة شائعة تمامًا - جهازي يعمل بشكل جيد. نفس الشيء هنا (أعتقد أن Meta على أحدث إصدار).

ماذا يحدث عند محاولة /safe-mode؟

للأسف، لا يعمل في الوضع الآمن أيضًا. لا توجد سمات، ولا وضع إضافات.

نرى أن البحث لا يعمل للمواضيع/المنشورات، ولكنه يعمل للفئات/العلامات والمستخدمين.

هل تستخدم نسخة خارجية من PostgreSQL؟ إذا كان الأمر كذلك، فما هو الإصدار؟

نعم، نحن نستخدم PostgreSQL خارجي. الإصدار هو 14.6-1

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

إن البحث الخاص بنا معطل تمامًا عند تشغيله مقابل PostgreSQL 14، وهذا هو السبب في أننا لا نزال نشحن PostgreSQL 13 لكل من يتبع التثبيت القياسي الخاص بنا.

سنقوم بإصلاحه في النهاية حيث سنقوم بالترقية إلى PostgreSQL 15 (أو 16) يومًا ما، ولكن قد يستغرق الأمر بعض الوقت.

3 إعجابات

شكرا لك. نحن نحقق في كيفية حدوث ذلك إذا كان لدينا إصدار PostgreSQL آخر سابقًا. سنعود إليك بمجرد تحديد المشكلة.

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

سواء كان لديك 14 سابقًا ليس بالأمر المهم حقًا، فإن Discourse غير متوافق مع PostgreSQL 14. هذه هي مشكلتك.

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

لقد اطلعت على وثائق discourse/docs/INSTALL.md at main · discourse/discourse · GitHub بدلاً من ذلك، حيث لا تحتوي وثائق السحابة على متطلبات الخادم على الإطلاق.

نرى متطلب “Postgres 13+” هنا. هل يمكن أن أكون مخطئًا في اقتراح فريقي بإضافة ملاحظة تفيد بأن Discourse يدعم إصدارات 13.X فقط؟ ربما، قد يكون الإشعار الصريح بأن إصدارات 14/15/… غير مدعومة مفيدًا أيضًا في حالات مثل حالتنا.

كما ترى، كان لدينا الإصدار 14 منذ ديسمبر على الأقل، وكان لدينا الإصدار المستقر من Discourse مثبتًا منذ أشهر. مؤخرًا، عدنا إلى إصدار tests-passed، وعمل البحث كما هو متوقع. اليوم، قمنا بالتحديث من 2.9.0.beta14 إلى 3.1.0.beta1 وتعطل الآن.

هل هناك أي فرصة لاستخدام إضافة الردود الخاصة؟

4 إعجابات

لدينا مثبتة، وهي معطلة في إعدادات المسؤول

لقد جربنا أيضًا وقمنا بإعادة إنتاج المشكلة في الوضع الآمن. هل يجب أن يهم على أي حال؟

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

إعجابَين (2)

أوه. يا للأسف. لدي موقع واحد قمت بترقيته عن طريق الخطأ إلى PG14 منذ فترة، واعتقدت أنه سيكون على ما يرام.

لقد أجريت للتو بعض عمليات البحث ولم تكن معطلة بشكل فظيع بشكل واضح. والموقع باللغة الصينية في الغالب، لذلك لن أتمكن من معرفة ذلك على أي حال.

ما مدى تعطله ومدى صعوبة إصلاحه؟

إعجابَين (2)

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

يبدو أن هذا الخطأ مرتبط بعدم توافق المكون الإضافي Ruby 3.1.

4 إعجابات

إذًا أنا واثق تمامًا من أنه execute(readonly_mode) في المكون (وليس لدي أي فكرة عن السبب :sweat_smile: )

3 إعجابات

أنت على حق هنا @Benjamin_D.

هذه الإضافة تسبب خللاً في البحث وستؤدي إلى ظهور الخطأ 500.

ولكن تشغيل PostgreSQL 14+ سيؤدي أيضًا إلى خلل في البحث، ولكن بطريقة خفية حيث لن يتم إرجاع العديد من النتائج التي كانت ستُرجع في pg13 على pg14+.

لذلك يمكن لـ @kinetiksoft إزالة الإضافة وإعادة البناء لجعل البحث لا يظهر خطأ، ولكنه لن يعمل بشكل طبيعي بسبب إصدار pg.

4 إعجابات

يمكنني الآن تأكيد أن البحث يعمل كما هو متوقع الآن بعد أن أزلنا إضافة ردود خاصة لـ Discourse

لم يتم إجراء أي تغييرات من جانب الخادم، لا يزال PostgreSQL 14.6-1، ولكننا سننظر في خيارات الرجوع إلى إصدار أقدم الأسبوع المقبل.

شكراً لكم جميعاً، لقد أنقذتم وظيفة البحث لدينا لعطلة نهاية الأسبوع هذه.

ملاحظة: نطلب بلطف من فريق Discourse @ github إضافة تحذير بشأن إصدار PostgreSQL في الوثائق الرسمية:

3 إعجابات

هل تحققت من الوثائق حول تشغيل PostgreSQL خارجي؟ إنها هنا على Meta، وليس على github. جميع الوثائق مرئية على Documentation - Discourse Meta

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

آسف للجميع! كان المكون الإضافي للردود الخاصة يكسر البحث بالفعل (أو: Ruby 3.1 كان يكسر المكون الإضافي).
إنه يعمل الآن مرة أخرى.

5 إعجابات