summaryrefslogtreecommitdiff
path: root/app/workers/project_export_worker.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/workers/project_export_worker.rb')
-rw-r--r--app/workers/project_export_worker.rb16
1 files changed, 14 insertions, 2 deletions
diff --git a/app/workers/project_export_worker.rb b/app/workers/project_export_worker.rb
index e3f8c4bcd9d..ee892d43313 100644
--- a/app/workers/project_export_worker.rb
+++ b/app/workers/project_export_worker.rb
@@ -8,7 +8,7 @@ class ProjectExportWorker # rubocop:disable Scalability/IdempotentWorker
feature_category :importers
worker_resource_boundary :memory
- urgency :throttled
+ urgency :low
loggable_arguments 2, 3
sidekiq_options retry: false, dead: false
sidekiq_options status_expiration: StuckExportJobsWorker::EXPORT_JOBS_EXPIRATION
@@ -21,7 +21,10 @@ class ProjectExportWorker # rubocop:disable Scalability/IdempotentWorker
export_job&.start
- ::Projects::ImportExport::ExportService.new(project, current_user, params).execute(after_export)
+ export_service = ::Projects::ImportExport::ExportService.new(project, current_user, params)
+ export_service.execute(after_export)
+
+ log_exporters_duration(export_service)
export_job&.finish
rescue ActiveRecord::RecordNotFound => e
@@ -46,4 +49,13 @@ class ProjectExportWorker # rubocop:disable Scalability/IdempotentWorker
def log_failure(project_id, ex)
logger.error("Failed to export project #{project_id}: #{ex.message}")
end
+
+ def log_exporters_duration(export_service)
+ export_service.exporters.each do |exporter|
+ exporter_key = "#{exporter.class.name.demodulize.underscore}_duration_s".to_sym # e.g. uploads_saver_duration_s
+ exporter_duration = exporter.duration_s&.round(6)
+
+ log_extra_metadata_on_done(exporter_key, exporter_duration)
+ end
+ end
end