Неинициализированная постоянная ошибка с Sidekiq и Rails - PullRequest
0 голосов
/ 07 мая 2020

В последнее время я получаю массу неинициализированных постоянных ошибок, и я не могу понять почему. Ниже приведен конкретный пример c. В этом примере я вызываю задание из рабочего места. Но я получаю такую ​​же неинициализированную постоянную ошибку, что и во многих других моих работах. Все вакансии находятся в приложении / вакансиях. Я что-то упускаю? Sidekiq до недавнего времени работал нормально.

Я очистил свой кеш Heroku и убил все попытки в Sidekiq, но эти проблемы все еще возникают. Здесь есть что-то действительно странное. Из-за другой ошибки, которую я получаю в связи с заданием sidekiq, я получаю «неправильное количество аргументов (дано 2, ожидается 1)». Я обновил рассматриваемую функцию, чтобы получать две недели аргументов go. Возможно ли, что Sidekiq каким-то образом застрял в кэшированной версии базы кода?

Ruby версия: ruby 2.5.3p105 Версия Sidekiq: 6.0.7

app / jobs / process_email_notifications_job .rb

class ProcessEmailNotificationsJob < ApplicationJob
  queue_as :default

  def perform
    user_ids = UserNotification.where(is_read: false).pluck(:user_id).uniq
    user_ids.each do |user_id|
      ProcessIndividualEmailNotificationsJob.perform_later user_id
    end
  end
end

app / jobs / process_individual_email_notifications_job.rb

class ProcessIndividualEmailNotificationsJob < ApplicationJob
queue_as :default
  def perform(user_id)
     ...
  end
end

Сообщение об ошибке:

2020-05-06T20:07:45.720Z pid=56028 tid=owp0sdcm8 DEBUG: enqueued retry: {"retry":true,"queue":"production_default","class":"ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper","wrapped":"ProcessIndividualEmailNotificationsJob","args":[{"job_class":"ProcessIndividualEmailNotificationsJob","job_id":"4b31bc4f-d034-4190-b24f-d0464cf81df0","provider_job_id":null,"queue_name":"production_default","priority":null,"arguments":[988],"executions":0,"locale":"en"}],"jid":"0ecc861f5870a7b9a70f176f","creat
4:07:45 PM sidekiq.1 |  >  ed_at":1588794273.2726498,"enqueued_at":1588795006.4009435,"error_message":"uninitialized constant ProcessIndividualEmailNotificationsJob\nDid you mean?  ProcessEmailNotificationsJob","error_class":"NameError","failed_at":1588794279.9911764,"retry_count":5,"retried_at":1588795006.763224}

Инициализатор:

require 'sidekiq'
require 'sidekiq/web'

Sidekiq.configure_client do |config|
  config.redis = { :size => 5 }
end

Sidekiq.configure_server do |config|
  config.redis = { :size => 25 }
end

Sidekiq::Web.set :sessions, false

sidekiq.yml

:concurrency: 18

development:
  :verbose: true
  :queues:
    - [development_priority, 2]
    - development_default
    - development_mailers

staging:
  :queues:
    - [staging_priority, 2]
    - staging_default
    - staging_mailers

production:
  :queues:
    - [production_priority, 2]
    - production_default
    - production_mailers

1 Ответ

0 голосов
/ 08 мая 2020

ОК. Кажется, я решил проблему, добавив пространство имен в sidekiq в redis согласно предложенному здесь: https://github.com/mperham/sidekiq/issues/2834

...