diff options
author | Shinya Maeda <shinya@gitlab.com> | 2018-05-01 14:13:12 +0900 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2018-05-01 14:13:12 +0900 |
commit | 54695563ca3b37f09b625c4c6798e41a0e629c0b (patch) | |
tree | e47a628dcc5bcd969a4e1680ab96e8bb49efd4d3 /app/workers | |
parent | d5344617a8b57e4d6d15f22ad3d09d5af82100fe (diff) | |
parent | 8b3db0d64beb204dfa722b81cfc32843e19a8eae (diff) | |
download | gitlab-ce-54695563ca3b37f09b625c4c6798e41a0e629c0b.tar.gz |
Merge branch 'master' into live-trace-v2
Diffstat (limited to 'app/workers')
-rw-r--r-- | app/workers/all_queues.yml | 1 | ||||
-rw-r--r-- | app/workers/concerns/mail_scheduler_queue.rb | 4 | ||||
-rw-r--r-- | app/workers/mail_scheduler/issue_due_worker.rb | 2 | ||||
-rw-r--r-- | app/workers/mail_scheduler/notification_service_worker.rb | 19 |
4 files changed, 24 insertions, 2 deletions
diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml index e02de6a0830..44388e7ca0f 100644 --- a/app/workers/all_queues.yml +++ b/app/workers/all_queues.yml @@ -41,6 +41,7 @@ - github_importer:github_import_stage_import_repository - mail_scheduler:mail_scheduler_issue_due +- mail_scheduler:mail_scheduler_notification_service - object_storage_upload - object_storage:object_storage_background_move diff --git a/app/workers/concerns/mail_scheduler_queue.rb b/app/workers/concerns/mail_scheduler_queue.rb index 9df55ad9522..f3e9680d756 100644 --- a/app/workers/concerns/mail_scheduler_queue.rb +++ b/app/workers/concerns/mail_scheduler_queue.rb @@ -4,4 +4,8 @@ module MailSchedulerQueue included do queue_namespace :mail_scheduler end + + def notification_service + @notification_service ||= NotificationService.new + end end diff --git a/app/workers/mail_scheduler/issue_due_worker.rb b/app/workers/mail_scheduler/issue_due_worker.rb index b06079d68ca..54285884a52 100644 --- a/app/workers/mail_scheduler/issue_due_worker.rb +++ b/app/workers/mail_scheduler/issue_due_worker.rb @@ -4,8 +4,6 @@ module MailScheduler include MailSchedulerQueue def perform(project_id) - notification_service = NotificationService.new - Issue.opened.due_tomorrow.in_projects(project_id).preload(:project).find_each do |issue| notification_service.issue_due(issue) end diff --git a/app/workers/mail_scheduler/notification_service_worker.rb b/app/workers/mail_scheduler/notification_service_worker.rb new file mode 100644 index 00000000000..7cfe0aa0df1 --- /dev/null +++ b/app/workers/mail_scheduler/notification_service_worker.rb @@ -0,0 +1,19 @@ +require 'active_job/arguments' + +module MailScheduler + class NotificationServiceWorker + include ApplicationWorker + include MailSchedulerQueue + + def perform(meth, *args) + deserialized_args = ActiveJob::Arguments.deserialize(args) + + notification_service.public_send(meth, *deserialized_args) # rubocop:disable GitlabSecurity/PublicSend + rescue ActiveJob::DeserializationError + end + + def self.perform_async(*args) + super(*ActiveJob::Arguments.serialize(args)) + end + end +end |