0
0
Fork 0

Rewrite import feature (#21054)

This commit is contained in:
Claire 2023-05-02 12:08:48 +02:00 committed by GitHub
parent 0ad2413b35
commit 32a030dd74
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
40 changed files with 2059 additions and 113 deletions

View file

@ -0,0 +1,13 @@
# frozen_string_literal: true
class BulkImportWorker
include Sidekiq::Worker
sidekiq_options queue: 'pull', retry: false
def perform(import_id)
import = BulkImport.find(import_id)
import.update!(state: :in_progress)
BulkImportService.new.call(import)
end
end

View file

@ -1,5 +1,8 @@
# frozen_string_literal: true
# NOTE: This is a deprecated worker, only kept to not break ongoing imports
# on upgrade. See `Import::RowWorker` for its replacement.
class Import::RelationshipWorker
include Sidekiq::Worker

View file

@ -0,0 +1,33 @@
# frozen_string_literal: true
class Import::RowWorker
include Sidekiq::Worker
sidekiq_options queue: 'pull', retry: 6, dead: false
sidekiq_retries_exhausted do |msg, _exception|
ActiveRecord::Base.connection_pool.with_connection do
# Increment the total number of processed items, and bump the state of the import if needed
bulk_import_id = BulkImportRow.where(id: msg['args'][0]).pick(:id)
BulkImport.progress!(bulk_import_id) unless bulk_import_id.nil?
end
end
def perform(row_id)
row = BulkImportRow.eager_load(bulk_import: :account).find_by(id: row_id)
return true if row.nil?
imported = BulkImportRowService.new.call(row)
mark_as_processed!(row, imported)
end
private
def mark_as_processed!(row, imported)
bulk_import_id = row.bulk_import_id
row.destroy! if imported
BulkImport.progress!(bulk_import_id, imported: imported)
end
end

View file

@ -1,5 +1,8 @@
# frozen_string_literal: true
# NOTE: This is a deprecated worker, only kept to not break ongoing imports
# on upgrade. See `ImportWorker` for its replacement.
class ImportWorker
include Sidekiq::Worker

View file

@ -23,6 +23,7 @@ class Scheduler::VacuumScheduler
backups_vacuum,
access_tokens_vacuum,
feeds_vacuum,
imports_vacuum,
]
end
@ -50,6 +51,10 @@ class Scheduler::VacuumScheduler
Vacuum::FeedsVacuum.new
end
def imports_vacuum
Vacuum::ImportsVacuum.new
end
def content_retention_policy
ContentRetentionPolicy.current
end