اختيار رفض سلوك غير متوقع

تمت إضافة ميزة جديدة في مايو Selective dismissal of New and Unread topics. قمنا مؤخرًا بالترقية إلى أحدث إصدار من Discourse، وعند فحص الكود وسجلات قاعدة البيانات لدينا، يبدو أنه عندما يقوم المستخدمون بـ “إخفاء الجديد” دون تحديد (أي إخفاء جماعي فقط)، فإننا نمرر tracked = false ولا شيء آخر في معلمات الطلب لإعادة تعيين الجديد.

image

بعد فحص تغييرات طلب الدمج (PR)، أعتقد أننا ننتهي هنا عندما نحاول تحديد نطاق الموضوع (topic_scope) الخاص بنا FEATURE: Allow selective dismissal of new and unread topics (#12976) · discourse/discourse@7a79bd7 · GitHub

وبسبب عدم تمرير أي معرفات للموضوعات (topic_ids)، نتجاوز جملة الشرط (if statement) وننتقل تلقائيًا إلى السطر 989.

ندير خادم Discourse كبير نسبيًا، وأعتقد أن فكرة وجود جميع الموضوعات ببساطة مكلفة جدًا، حيث أن الاستعلام يولد تقريبًا:

LEFT JOIN topic_users ON topic_users.topic_id = topics.id AND topic_users.user_id = xxx WHERE "topics"."deleted_at" IS NULL AND "topics"."id" IN (1, ... 1000000) AND (topics.created_at >= 'date') AND (topic_users.last_read_post_number IS NULL) AND (topics.archetype <> 'private_message') ORDER BY topics.created_at DESC LIMIT 500

أعتقد أن جملة IN تحتوي على تقريبًا كل موضوع واحد في نطاق المليون+.

هل يمكننا جعل الاختيار الجماعي الافتراضي يمرر معرفات الموضوعات فقط بدلاً من الافتراض بوجود جميع الموضوعات الممكنة؟

3 إعجابات

@مارتين، آسف على الإشعار، يبدو أنك قمت بدفع الالتزام المذكور أعلاه.

هل يمكنك التحقق مما إذا كان هذا يبدو دقيقًا كسبب جذري لما نلاحظه؟ فنحن نرى قوائم تصفية ضخمة في الاستعلامات (حوالي مليون معرف موضوع) في الحالة الافتراضية لـ “إغلاق الكل الجديد”. (يضيف منتدى لدينا آلاف مواضيع Discourse)

يمكننا المساعدة في تقديم طلب سحب (PR) لحل المشكلة إذا لم تكن لدى فريق Discourse أولوية لذلك، لكنني أشك في أننا المتأثرون الوحيدون بهذا، وقد يؤثر أيضًا على أداء قاعدة البيانات لبعض عملائك.

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

شكرًا لك @forkythetoy و @Hooksmith على لفت انتباهي إلى هذا الأمر. لقد تأكدت من أن هذا استعلام ضخم حتى هنا في الميتا. سأكتب إصلاحًا لهذا الأمر اليوم، ويجب أن يكون الأمر بسيطًا مثل استخدام معرفات المواضيع (topic IDs) للمواضيع التي تظهر فقط في قائمة “الجديد” للمستخدم، بدلاً من جميع المواضيع على الإطلاق. سأعود للنشر هنا عندما يكون لدي التصحيح.

إعجابَين (2)

لقد دمجت هذا الإصلاح اليوم:

إعجابَين (2)