From bc8eebf04a32d893d5b536deb2e7ffc205d9fcda Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 4 May 2016 10:59:33 +0200 Subject: [PATCH] add export worker to process project export async --- app/models/project.rb | 10 ++++++++++ app/workers/project_export_worker.rb | 13 +++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 app/workers/project_export_worker.rb diff --git a/app/models/project.rb b/app/models/project.rb index af62e8ecd9..8781a3cf7a 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1034,4 +1034,14 @@ class Project < ActiveRecord::Base def wiki @wiki ||= ProjectWiki.new(self, self.owner) end + + def add_export_job(current_user_id:) + job_id = ProjectExportWorker.perform_async(current_user_id, self.id) + + if job_id + Rails.logger.info "Export job started for project ID #{self.id} with job ID #{job_id}" + else + Rails.logger.error "Export job failed to start for project ID #{self.id}" + end + end end diff --git a/app/workers/project_export_worker.rb b/app/workers/project_export_worker.rb new file mode 100644 index 0000000000..a1add5395b --- /dev/null +++ b/app/workers/project_export_worker.rb @@ -0,0 +1,13 @@ +class ProjectExportWorker + include Sidekiq::Worker + + # TODO: enabled retry - disabled for QA purposes + sidekiq_options queue: :gitlab_shell, retry: false + + def perform(current_user_id, project_id) + current_user = User.find(current_user_id) + project = Project.find(project_id) + ::Projects::ImportExport::ExportService.new(project, current_user).execute + # TODO : Handle errors + end +end