diff options
Diffstat (limited to 'app/workers/bulk_imports/relation_export_worker.rb')
-rw-r--r-- | app/workers/bulk_imports/relation_export_worker.rb | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/app/workers/bulk_imports/relation_export_worker.rb b/app/workers/bulk_imports/relation_export_worker.rb index 531edc6c7a7..168626fee85 100644 --- a/app/workers/bulk_imports/relation_export_worker.rb +++ b/app/workers/bulk_imports/relation_export_worker.rb @@ -10,25 +10,37 @@ module BulkImports loggable_arguments 2, 3 data_consistency :always feature_category :importers - sidekiq_options status_expiration: StuckExportJobsWorker::EXPORT_JOBS_EXPIRATION + sidekiq_options status_expiration: StuckExportJobsWorker::EXPORT_JOBS_EXPIRATION, retry: 3 worker_resource_boundary :memory + sidekiq_retries_exhausted do |job, exception| + _user_id, portable_id, portable_type, relation, batched = job['args'] + portable = portable(portable_id, portable_type) + + export = portable.bulk_import_exports.find_by_relation(relation) + + Gitlab::ErrorTracking.track_exception(exception, portable_id: portable_id, portable_type: portable.class.name) + + export.update!(status_event: 'fail_op', error: exception.message.truncate(255), batched: batched) + end + + def self.portable(portable_id, portable_class) + portable_class.classify.constantize.find(portable_id) + end + def perform(user_id, portable_id, portable_class, relation, batched = false) user = User.find(user_id) - portable = portable(portable_id, portable_class) + portable = self.class.portable(portable_id, portable_class) config = BulkImports::FileTransfer.config_for(portable) + log_extra_metadata_on_done(:relation, relation) if Gitlab::Utils.to_boolean(batched) && config.batchable_relation?(relation) + log_extra_metadata_on_done(:batched, true) BatchedRelationExportService.new(user, portable, relation, jid).execute else + log_extra_metadata_on_done(:batched, false) RelationExportService.new(user, portable, relation, jid).execute end end - - private - - def portable(portable_id, portable_class) - portable_class.classify.constantize.find(portable_id) - end end end |