25 lines
829 B
Ruby
25 lines
829 B
Ruby
# frozen_string_literal: true
|
|
|
|
module ProjectExportOptions
|
|
extend ActiveSupport::Concern
|
|
|
|
EXPORT_RETRY_COUNT = 3
|
|
|
|
included do
|
|
sidekiq_options retry: EXPORT_RETRY_COUNT, status_expiration: StuckExportJobsWorker::EXPORT_JOBS_EXPIRATION
|
|
|
|
# We mark the project export as failed once we have exhausted all retries
|
|
sidekiq_retries_exhausted do |job|
|
|
project = Project.find(job['args'][1])
|
|
# rubocop: disable CodeReuse/ActiveRecord
|
|
job = project.export_jobs.find_by(jid: job["jid"])
|
|
# rubocop: enable CodeReuse/ActiveRecord
|
|
|
|
if job&.fail_op
|
|
Sidekiq.logger.info "Job #{job['jid']} for project #{project.id} has been set to failed state"
|
|
else
|
|
Sidekiq.logger.error "Failed to set Job #{job['jid']} for project #{project.id} to failed state"
|
|
end
|
|
end
|
|
end
|
|
end
|