Невозможно отправить сводные письма: уведомление о устаревании Jobs::UserEmail / письма не отправляются после постановки в очередь через Rails

Не удалось отправить дайджест. Задачи дайджеста ставятся в очередь, но фактически не отправляются. Я не вижу никаких записей в логе электронной почты.

  • Я вижу, что задачи дайджеста добавлены в очередь Sidekiq
  • Фактические письма с дайджестом не отправляются
  • Каждая задача логирует:
Уведомление об устаревании: Jobs::UserEmail был добавлен в очередь с аргументами, которые некорректно сериализуются/десериализуются в JSON. Это означает, что задача будет выполнена со значениями, которые немного отличаются от переданных при `enqueue`. Значения аргументов должны быть строками, булевыми значениями, числами или nil (или массивами/хешами этих типов значений). (устарело с версии Discourse 2.9) (удаление в версии Discourse 3.0)
  • Проблем с процессами SMTP или Sidekiq нет
  • Все остальные письма (не дайджесты) и тестовые письма отправляются и доставляются корректно

Вот полный лог ошибки
Информация:

[privateinvestigator] Уведомление об устаревании: Jobs::UserEmail был добавлен в очередь с аргументами, которые некорректно сериализуются/десериализуются в JSON. Это означает, что задача будет выполнена со значениями, которые немного отличаются от переданных при `enqueue`. Значения аргументов должны быть строками, булевыми значениями, числами или nil (или массивами/хешами этих типов значений). (устарело с версии Discourse 2.9) (удаление в версии Discourse 3.0) 
At (discourse):89:in `block (3 levels) in <main>`

Трассировка стека

activesupport-8.0.3/lib/active_support/broadcast_logger.rb:218:in `block in dispatch' 
activesupport-8.0.3/lib/active_support/broadcast_logger.rb:217:in `map' 
activesupport-8.0.3/lib/active_support/broadcast_logger.rb:217:in `dispatch' 
activesupport-8.0.3/lib/active_support/broadcast_logger.rb:129:in `warn' 
/var/www/discourse/lib/discourse.rb:1053:in `deprecate' 
/var/www/discourse/app/jobs/base.rb:407:in `enqueue' 
(discourse):89:in `block (3 levels) in <main>'
activerecord-8.0.3/lib/active_record/relation/batches.rb:88:in `each' 
activerecord-8.0.3/lib/active_record/relation/batches.rb:88:in `block in find_each' 
activerecord-8.0.3/lib/active_record/relation/batches.rb:172:in `block in find_in_batches' 
activerecord-8.0.3/lib/active_record/relation/batches.rb:461:in `block in batch_on_unloaded_relation' 
<internal:kernel>:187:in `loop'
activerecord-8.0.3/lib/active_record/relation/batches.rb:434:in `batch_on_unloaded_relation' 
activerecord-8.0.3/lib/active_record/relation/batches.rb:289:in `in_batches' 
activerecord-8.0.3/lib/active_record/relation/batches.rb:171:in `find_in_batches' 
activerecord-8.0.3/lib/active_record/relation/batches.rb:87:in `find_each' 
(discourse):86:in `with_index'
(discourse):86:in `block (2 levels) in <main>'
rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:203:in `with_connection'
rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:17:in `with_connection'
(discourse):55:in `block in <main>'
(discourse):54:in `each'
(discourse):54:in `<main>'
irb-1.15.2/lib/irb/workspace.rb:101:in `eval' 
irb-1.15.2/lib/irb/workspace.rb:101:in `evaluate' 
irb-1.15.2/lib/irb/context.rb:591:in `evaluate_expression' 
irb-1.15.2/lib/irb/context.rb:557:in `evaluate' 
irb-1.15.2/lib/irb.rb:201:in `block (2 levels) in eval_input' 
irb-1.15.2/lib/irb.rb:512:in `signal_status' 
irb-1.15.2/lib/irb.rb:193:in `block in eval_input' 
irb-1.15.2/lib/irb.rb:272:in `block in each_top_level_statement' 
<internal:kernel>:187:in `loop'
irb-1.15.2/lib/irb.rb:269:in `each_top_level_statement' 
irb-1.15.2/lib/irb.rb:192:in `eval_input' 
irb-1.15.2/lib/irb.rb:173:in `block in run' 
irb-1.15.2/lib/irb.rb:172:in `catch' 
irb-1.15.2/lib/irb.rb:172:in `run' 
railties-8.0.3/lib/rails/commands/console/irb_console.rb:113:in `start' 
railties-8.0.3/lib/rails/commands/console/console_command.rb:59:in `start' 
railties-8.0.3/lib/rails/commands/console/console_command.rb:8:in `start' 
railties-8.0.3/lib/rails/commands/console/console_command.rb:87:in `perform' 
thor-1.4.0/lib/thor/command.rb:28:in `run' 
thor-1.4.0/lib/thor/invocation.rb:127:in `invoke_command' 
railties-8.0.3/lib/rails/command/base.rb:178:in `invoke_command' 
thor-1.4.0/lib/thor.rb:538:in `dispatch' 
railties-8.0.3/lib/rails/command/base.rb:73:in `perform' 
railties-8.0.3/lib/rails/command.rb:65:in `block in invoke' 
railties-8.0.3/lib/rails/command.rb:143:in `with_argv' 
railties-8.0.3/lib/rails/command.rb:63:in `invoke' 
railties-8.0.3/lib/rails/commands.rb:18:in `<main>' 
/usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
/usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require' 
script/rails:8:in `<top (required)>'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in `load'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in `kernel_load'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:452:in `exec'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `run'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor.rb:538:in `dispatch'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:35:in `dispatch'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `start'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:29:in `start'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/exe/bundle:28:in `block in <top (required)>'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/exe/bundle:20:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'

Сталкивался ли кто-то ещё с этой проблемой?
Как это исправить?

@emonunix Похоже, что никто из сообщества не смог помочь ответить на ваш вопрос. Приносим извинения за это! Удалось ли вам решить вашу проблему?

Если нет, можете ли вы рассказать нам что-нибудь о вашей настройке? Вы используете самодостаточный сайт, созданный по официальным инструкциям по установке? Актуальна ли версия вашего сайта?

Привет, @tobiaseigen, спасибо за уточнение.
Мы по-прежнему сталкиваемся с этой проблемой при отправке дайджестов.
Мы используем среду Discourse с несколькими сайтами, и, что интересно, некоторые сайты корректно отправляют дайджесты подходящим пользователям, в то время как другие ставят задания на отправку дайджестов в очередь, но никогда не отправляют их.

При ручном запуске доставки дайджестов из Rails наблюдается та же ситуация:

  • Задания появляются в Sidekiq → Очередь,
  • Но реальные письма не отправляются,
  • И в журналах электронной почты нет записей.

Все обычные (не дайджестные) письма, такие как активация пользователя, сброс пароля и тестовые письма, отправляются без проблем.

Мы уже следуем официальным инструкциям по настройке Discourse, и наша установка полностью обновлена.
Хост-машина работает под управлением Ubuntu 20.04 LTS.

Не могли бы вы подсказать, какие конкретные детали или логи мы можем предоставить, чтобы помочь в дальнейшем диагностике?

Вы изменили какие-либо настройки, связанные с дайджестом? Например, «Отключать рассылку дайджеста по электронной почте через … дней»

Да, @moin, я пробовал менять значение параметра Suppress digest email after days (увеличивая и уменьшая его), но это ничего не изменило.

Это тоже связано с Digest/Activity Summary emails not sending for users even though all conditions are met (Discourse 3.6)? Я закрою эту тему, чтобы вы и @Jacob_Peebles могли получить там необходимую помощь для решения проблемы с отправкой дайджестов. Если я ошибаюсь, напишите мне в личные сообщения, и я снова открою эту тему.