فشل رسائل التعليق مع 'undefined method 'topic'، الرسائل الأخرى تعمل بشكل جيد

3.1.0.beta3

عند تعليق المستخدم، لا يتم إرسال البريد الإلكتروني إليه، ويتم تسجيل الخطأ أدناه. يتم تسليم جميع رسائل البريد الإلكتروني الأخرى بشكل طبيعي.

Job exception: undefined method 'topic' for nil:NilClass

Backtrace

/var/www/discourse/app/jobs/regular/user_email.rb:116:in `message_for_email' 
/var/www/discourse/app/jobs/regular/user_email.rb:76:in `send_user_email' 
/var/www/discourse/app/jobs/regular/user_email.rb:39:in `execute' 
/var/www/discourse/plugins/chat/lib/chat/user_email_extension.rb:6:in `execute' 
/var/www/discourse/app/jobs/regular/critical_user_email.rb:12:in `execute' 
/var/www/discourse/app/jobs/base.rb:249:in `block (2 levels) in perform' 
rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/app/jobs/base.rb:236:in `block in perform' 
/var/www/discourse/app/jobs/base.rb:232:in `each' 
/var/www/discourse/app/jobs/base.rb:232:in `perform' 
sidekiq-6.5.8/lib/sidekiq/processor.rb:202:in `execute_job' 
sidekiq-6.5.8/lib/sidekiq/processor.rb:170:in `block (2 levels) in process' 
sidekiq-6.5.8/lib/sidekiq/middleware/chain.rb:177:in `block in invoke' 
/var/www/discourse/lib/sidekiq/pausable.rb:134:in `call' 
sidekiq-6.5.8/lib/sidekiq/middleware/chain.rb:179:in `block in invoke' 
sidekiq-6.5.8/lib/sidekiq/middleware/chain.rb:182:in `invoke' 
sidekiq-6.5.8/lib/sidekiq/processor.rb:169:in `block in process' 
sidekiq-6.5.8/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch' 
sidekiq-6.5.8/lib/sidekiq/job_retry.rb:113:in `local' 
sidekiq-6.5.8/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch' 
sidekiq-6.5.8/lib/sidekiq.rb:44:in `block in <module:Sidekiq>' 
sidekiq-6.5.8/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch' 
sidekiq-6.5.8/lib/sidekiq/processor.rb:263:in `stats' 
sidekiq-6.5.8/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch' 
sidekiq-6.5.8/lib/sidekiq/job_logger.rb:13:in `call' 
sidekiq-6.5.8/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch' 
sidekiq-6.5.8/lib/sidekiq/job_retry.rb:80:in `global' 
sidekiq-6.5.8/lib/sidekiq/processor.rb:124:in `block in dispatch' 
sidekiq-6.5.8/lib/sidekiq/job_logger.rb:39:in `prepare' 
sidekiq-6.5.8/lib/sidekiq/processor.rb:123:in `dispatch' 
sidekiq-6.5.8/lib/sidekiq/processor.rb:168:in `process' 
sidekiq-6.5.8/lib/sidekiq/processor.rb:78:in `process_one' 
sidekiq-6.5.8/lib/sidekiq/processor.rb:68:in `run' 
sidekiq-6.5.8/lib/sidekiq/component.rb:8:in `watchdog' 
sidekiq-6.5.8/lib/sidekiq/component.rb:17:in `block in safe_thread'

Env

hostname gaoa-discourse-app
process_id 11140
application_version ea4f7fb660cb4cb5cba3763e9a28352123d39591
current_db default
current_hostname forum.[xxx].com
job Jobs::CriticalUserEmail
problem_db default
time 8:54 am
opts type account_suspended
--- --- --- ---
--- ---
user_id 3919
user_history_id 41800
current_site_id default

تعديل لإضافة حالة sidekiq:

مرحباً @omarfilip،

ليس لدي حل لك، لكنني أردت التأكيد على أنني تمكنت من تكرار هذه التجربة على تثبيت Discourse لا يحتوي على العديد من الإضافات.

الخطوات المتخذة للتكرار:

  1. حدد مستخدمًا من /admin/users/list/active وعلقه يدويًا باستخدام زر التعليق.

image

  1. أضف نصًا في حقل “رسالة البريد الإلكتروني”.

  1. انقر فوق زر التعليق وتأكد من أن المستخدم معلق الآن.

image

النتيجة: لا يتم إرسال بريد إلكتروني، وهناك استثناء في المهمة في سجلات الأخطاء.

الرسالة (تم الإبلاغ عن 3 نسخ)

استثناء المهمة: طريقة غير معرفة `topic` لـ nil:NilClass

التتبع

/var/www/discourse/app/jobs/regular/user_email.rb:116:in message_for_email' /var/www/discourse/app/jobs/regular/user_email.rb:76:in send_user_email’
/var/www/discourse/app/jobs/regular/user_email.rb:39:in execute' /var/www/discourse/plugins/chat/lib/chat/user_email_extension.rb:6:in execute’
/var/www/discourse/app/jobs/regular/critical_user_email.rb:12:in execute' /var/www/discourse/app/jobs/base.rb:249:in block (2 levels) in perform’
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:80:in with_connection' /var/www/discourse/app/jobs/base.rb:236:in block in perform’
/var/www/discourse/app/jobs/base.rb:232:in each' /var/www/discourse/app/jobs/base.rb:232:in perform’

5 إعجابات

مرحباً @omarfilip،

هل تم إرسال أي من رسائل البريد الإلكتروني الخاصة بالتعليق الخاصة بك؟

تم إرسال رسائل البريد الإلكتروني المتعلقة بتعليقات الاختبار الخاصة بي في 2023-04-09T10:10:00Z، دون أي إجراءات إضافية مني، ولكن التعليقات الجديدة لا تزال تفشل بنفس الخطأ.

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

شكراً على التقرير وعلى إعادة الإنتاج @omarfilip و @southpaw :+1:

تم تعيين شخص للتحقيق في الأمر ويجب أن يكون لديه بعض الإجابات قريباً. :crossed_fingers: :slight_smile:

إعجابَين (2)

نفس المشكلة مع الإيقافات الجديدة - إنها تتكدس ببساطة في قائمة الفشل.

ملاحظة، تم تعيين هذا داخليًا، ونأمل في العمل على إصلاح في الأيام القليلة القادمة.

إعجابَين (2)

يجب إصلاح هذا بواسطة: :+1:

إعجابَين (2)

شكرا. لقد أدى ذلك إلى مسح الوظائف العالقة في Sidekiq على الفور. :+1:

إعجابَين (2)