في اليوم السابق، بدأ موقعي في إرسال إشعارات لمنشورات قديمة فجأة. هذا هو عدد إشعارات “النشر” (notification_type = 9) التي تم إنشاؤها بعد مرور ساعة خلال الأيام القليلة الماضية:
الاستعلام الذي استخدمته لتوليد الجدول
WITH pre AS (
SELECT
p.id as post_id,
to_char(n.created_at,
'YYYY-MM-DD') AS notified_day,
p.topic_id,
round(least(EXTRACT(EPOCH FROM n.created_at - p.created_at)::numeric, EXTRACT(EPOCH FROM n.created_at - p.updated_at)::numeric) / 3600) AS hours_diff,
p.created_at,
p.updated_at,
n.created_at,
u.username
FROM
notifications n
LEFT JOIN posts p ON p.post_number = n.post_number
AND p.topic_id = n.topic_id
left join users u on u.id = n.user_id
WHERE
round(least(EXTRACT(EPOCH FROM n.created_at - p.created_at)::numeric, EXTRACT(EPOCH FROM n.created_at - p.updated_at)::numeric) / 3600) > 0
AND n.notification_type = 9
ORDER BY
n.created_at DESC
LIMIT 400
)
SELECT
count(*),
notified_day
FROM
pre
GROUP BY
notified_day
ORDER BY
notified_day DESC
إليك بعض الأمثلة (من تشغيل CTE في الاستعلام أعلاه):
الصف المظلل الأول تم إنشاؤه في 8 ديسمبر، لكن مستخدمًا يراقب تلك الفئة تلقى إشعارًا في 25 ديسمبر (ومن ما أخبرتني به مستخدمون آخرون، فإنهم يتلقون إشعارات بشأن منشورات سبق لهم رؤيتها).
الصف المظلل الثاني تم إنشاؤه في 29 سبتمبر، وتم تعديله بعد يوم، وتم إرسال إشعار عنه في 25 ديسمبر.
أعدت بناء الحاوية للتو، لذا أعمل الآن على أحدث إصدار من Discourse. حاليًا، قمت بتعطيل إشعارات البريد الإلكتروني.
هل لديك أي أفكار حول كيفية استكشاف هذه المشكلة؟ أفترض أنها إما طابور تعطل لسبب ما أو شيء مشابه. هل هناك طريقة لمعرفة ما يولد هذه الإشعارات؟


