فشل دمج المستخدم، إدخالات قاعدة بيانات تالفة بسبب إضافة طرف ثالث

العنوان الأصلي: الصفحة الرئيسية للمنتدى غير قابلة للوصول (شاشة فارغة أو 404)

أنا مشرف في منتدى SocialHub على الرابط https://socialhub.activitypub.rocks، وهو المنتدى التقني الخاص ببروتوكول ActivityPub الذي يُشغّل عالم التواصل الاجتماعي في الفيديفيرس.

حاليًا، يُقام مؤتمر ActivityPub الذي يستمر لمدة 4 أيام، وقد زاد النشاط في المنتدى عن المعتاد. هذا الصباح، لاحظت أن الصفحة الرئيسية للمنتدى، عند الوصول إليها مباشرةً عبر الرابط، تعرض شاشة فارغة بالكامل (لا يتم إرجاع أي HTML).

ومع ذلك، فإن الروابط العميقة مثل Spritely Project: The Super Exciting Future Of Fediverse - ActivityPub - SocialHub لا تزال تعمل، وتوفر الوصول إلى وظائف أخرى مثل البحث ولوحة الإدارة. وعند النقر على الشعار في الزاوية العلوية اليسرى، بدلاً من ظهور الشاشة الفارغة، يتم عرض صفحة 404.

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

ملاحظة: يعمل المنتدى بالإصدار v2.6.0.beta1

قد ترغب في النظر في استخدام الموارد. زيادة الزوار تعني استخدام المزيد من الموارد.

زيادة موارد الخادم ستساعد في التعامل مع زيادة الزوار.

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

شكرًا لك! مشرفو الخادم غير متصلين بالإنترنت بعد، لكنني أرسلت لهم هذه الرابطة :slight_smile:

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

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

إليك ما يبدو عليه استدعاء الصفحة الرئيسية من داخل الحاوية:

Started GET "/" for 37.172.69.223 at 2020-10-04 07:32:15 +0000
Processing by CategoriesController#index as HTML
Completed 404 Not Found in 281ms (ActiveRecord: 0.0ms | Allocations: 67648)
ActiveRecord::RecordNotFound (Couldn't find all Users with 'id': (36, 50) (found 1 results, but was looking for 2).)
lib/plugin/instance.rb:259:in `public_send'
lib/plugin/instance.rb:259:in `block (2 levels) in add_to_class'
(eval):48:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
app/controllers/categories_controller.rb:61:in `block (2 levels) in index'
app/controllers/categories_controller.rb:40:in `index'
app/controllers/application_controller.rb:354:in `block in with_resolved_locale'
app/controllers/application_controller.rb:354:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:336:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
lib/middleware/request_tracker.rb:176:in `call'
إعجاب واحد (1)

إذن، تغيير إعداد الصفحة الرئيسية من الفئات والأحدث إلى الفئات والمُحدّدة يعيد الوصول إلى الصفحة الرئيسية. سيضطر الأمر إلى الانتظار حتى الآن… أشك في أن هناك تفاعلًا بين المكونات بطريقة ما، لكننا سنرى. أي رؤى إضافية موضع ترحيب. يجب أن يستمر العرض :slight_smile:

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

يبدو أن مشكلتك تظهر عند تحميل أحدث المنشورات، مما يؤدي إلى ظهور خطأ 404.

هل قام أي شخص بتغيير التسمية الخاصة بهذا؟

انتقل إلى الإعدادات وابحث عن “الأحدث” ولاحظ ما يحدث.

شكرًا لك @IAmGav على الاقتراح: لا نملك أي تخصيص للنصوص المتعلقة بـ “الأحدث”.

بعض الصفحات لا تزال معطلة بالفعل، بما في ذلك فئة نحتاجها حقًا :frowning:

بالنظر إلى كود مكون الصفحة الرئيسية للجوال القوي، أنا متشوق لمعرفة كيفية التحقق مما إذا كانت هناك أي تغييرات في قاعدة البيانات تتعلق بـ setDefaultHomepage(settings.homepage);. لكنني لا أعتقد أن هذا سيؤثر على فئة. إذن يجب أن يكون هناك شيء آخر.


لقد قمت بمسح السجلات للتو للتأكد من أن الخطأ الحالي غير مسجل فعليًا. يبدو أنه خلل في /latest و /top وفئة #meeting. لست متأكدًا مما يحدث… أفحص السجلات داخل الحاوية أيضًا للحصول على مزيد من المعلومات… ربما يكون مرتبطًا بمنشور معطل في فئة #meeting

أعتقد أن المشكلة تنبع من ActiveRecord::RecordNotFound (لم يتم العثور على جميع المستخدمين بـ 'id': (36, 50) (تم العثور على نتيجة واحدة، لكن كان البحث عن نتيجتين).)

تطابق المعرفات حساب مستخدم تم دمجه، لكن يبدو أن العملية قد تعطلت…

أنا أيضاً أعتقد أن هذه هي المشكلة. لست خبيراً، لكنني أتخيل أن هناك منشوراً يشير إلى الحساب القديم الذي لم يعد موجوداً (ويظهر في الأقسام: الأعلى، الأحدث، وفئة المؤتمر). إذا كانت هذه هي المشكلة، فقد يكون تنفيذ استعلام SQL لحذف المنشور أو تحديث معرف المستخدم فيه خياراً متاحاً؟ ما هي الصيغة المطلوبة؟

فلتر دمج المستخدمين في إجراءات المسؤول لا يُظهر أي سجل. أعتقد أن عملية الدمج فشلت بطريقة ما. @team كيف يمكنني التحقيق في حل دمج مستخدم فاشل؟ يبدو أن النتيجة جيدة على أي حال: حساب المستخدم موجود مع كلا عنواني البريد الإلكتروني. يجب أن تكون هناك بعض المعرفات المعلقة في بعض المنشورات في مكان ما…

حسنًا، قمنا بتضييق نطاق المشكلة إلى موضوع واحد…

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

قد يساعدك هذا

لا، إنها تقول إن المستخدم (المصدر) غير موجود. أعتقد أن الخطوة DiscourseEvent.trigger(:merging_users, @source_user, @target_user) لم تكتمل. أين يمكنني العثور على الكود؟

ها نحن ذا…

[39] pry(main)> PostReplyKey.where(user_id: 36)
=> [#<PostReplyKey:0x0000558954b92d68 id: 9793, user_id: 36, post_id: 3409, reply_key: "00257885-fe73-e76d-09fb-f0f708c2f032", created_at: Sat, 03 Oct 2020 19:37:20 UTC +00:00, updated_at: Sat, 03 Oct 2020 19:37:20 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6e78 id: 9120, user_id: 36, post_id: 3174, reply_key: "b726e441-1c6c-bd60-27ac-8d8d5feef3d7", created_at: Fri, 02 Oct 2020 14:21:48 UTC +00:00, updated_at: Fri, 02 Oct 2020 14:21:48 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6db0 id: 9802, user_id: 36, post_id: 3413, reply_key: "86e179a1-7516-616c-1040-c26c0539f39d", created_at: Sat, 03 Oct 2020 19:41:36 UTC +00:00, updated_at: Sat, 03 Oct 2020 19:41:36 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6ce8 id: 9821, user_id: 36, post_id: 3418, reply_key: "573f48a4-8263-4759-44f0-f6cb26b66f38", created_at: Sat, 03 Oct 2020 20:37:40 UTC +00:00, updated_at: Sat, 03 Oct 2020 20:37:40 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6c20 id: 9822, user_id: 36, post_id: 3419, reply_key: "9371479c-eeb4-1009-176d-761a854a4ddb", created_at: Sat, 03 Oct 2020 20:40:08 UTC +00:00, updated_at: Sat, 03 Oct 2020 20:40:08 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6b58 id: 9400, user_id: 36, post_id: 3245, reply_key: "e1cd57aa-a811-21f9-5e24-84439e184a8e", created_at: Fri, 02 Oct 2020 21:35:12 UTC +00:00, updated_at: Fri, 02 Oct 2020 21:35:12 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6a90 id: 8613, user_id: 36, post_id: 3067, reply_key: "407edb15-e89d-4369-9fee-1e5eab83385d", created_at: Wed, 30 Sep 2020 13:50:17 UTC +00:00, updated_at: Wed, 30 Sep 2020 13:50:17 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd69c8 id: 9517, user_id: 36, post_id: 3288, reply_key: "140a48d2-1a40-d429-f6e2-2bbe37b4865d", created_at: Sat, 03 Oct 2020 09:54:40 UTC +00:00, updated_at: Sat, 03 Oct 2020 09:54:40 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6900 id: 9736, user_id: 36, post_id: 3388, reply_key: "76cacf9b-5353-0653-806d-f3c2df6689eb", created_at: Sat, 03 Oct 2020 18:37:11 UTC +00:00, updated_at: Sat, 03 Oct 2020 18:37:11 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6838 id: 8643, user_id: 36, post_id: 3011, reply_key: "6d384213-98db-652c-89eb-1979731bb311", created_at: Wed, 30 Sep 2020 20:55:31 UTC +00:00, updated_at: Wed, 30 Sep 2020 20:55:31 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6770 id: 9772, user_id: 36, post_id: 3400, reply_key: "1e9e0b2e-ecd6-3654-d0da-6e01982a890f", created_at: Sat, 03 Oct 2020 19:22:38 UTC +00:00, updated_at: Sat, 03 Oct 2020 19:22:38 UTC +00:00>]

لذا حاولت فهم ما يجب فعله… منحها للمستخدم الحالي لا يحل أي شيء. حذفها لا يحل أي شيء.

الخطوة التالية: إعادة بناء المواضيع المعنية من جديد، وتدمير القديمة، لنرى ما سيحدث: ما لم يأتِ أحد بفكرة أفضل…

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

يشير مفتاح PostReplyKey إلى عنوان الرد في رسائل البريد الإلكتروني، ولن يتفاعل مع عرض قائمة المواضيع.

عند فحص تتبع المكدس، يتعطل داخل تسلسل TopicListSerializer، بطريقة ما داخل lib/instance/public.rb.

حاول التحقق من قائمة المستخدمين المميزين للموضوع باستخدام معرف المستخدم القديم (مجموعة الصور الرمزية التي تظهر على الصفحة الرئيسية).

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

مرحبًا @riking، شكرًا لك على الرد… إلى حد علمي، باستثناء PostReplyKey، لا يوجد أي ذكر لهذا معرف المستخدم المفقود. لكنه قد لا يكون معرف المستخدم القديم الفعلي لأنني لا أعرفه. كيف تعتقد أنني يمكن أن أجده — أو: ماذا يجب أن أبحث عنه في السجلات باستخدام grep؟

إذا كان الأمر يتعلق بمستخدمين مميزين في الموضوع، فإن هذا الاستعلام يجب أن يجده:

SELECT id
FROM topics
WHERE featured_user1 = 1234
OR featured_user2 = 1234
OR featured_user3 = 1234
OR featured_user4 = 1234
OR last_post_user_id = 1234

الاستعلام لم يُرجع أي نتيجة مع معرف المستخدم القديم، لكنه أعاد موضوعًا واحدًا مع معرف المستخدم الجديد، وهو الموضوع الذي تم تحديده بالفعل على أنه إشكالي. قمت بنقل الموضوع إلى فئة أخرى، وأصبح الآن رابط الفئة ActivityPub Conference 2020 - SocialHub مرئيًا مرة أخرى.

الآن أعتقد أن هناك مرجعًا لمعرف المستخدم المفقود 36 في مكان ما ضمن البيانات المتعلقة بالموضوع 951، لكنني لم أتمكن من العثور عليه حتى الآن. أم هل هناك اعتماد آخر أغفلته فيما يتعلق بالمستخدم 295؟

هل لديك تتبع للمكدس لتلك الخطأ؟

لا يوجد شيء أكثر مما نشرته في User merge failed, corrupted database entries due to third party plugin - #4 by hellekin وتعليقته بعد ذلك:

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

آه، لقد فاتني تتبع المكدس في User merge failed, corrupted database entries due to third party plugin - #4 by hellekin. إذن، الفشل ناتج عن إضافة. أعتقد أن إحدى الإضافات الخاصة بك خزن نوعًا ما من معلومات المستخدم لم يتم دمجها. هل يمكنك تزويدي بقائمة الإضافات المثبتة من فضلك؟

إعجابَين (2)