Rewrite import feature (#21054)
This commit is contained in:
parent
0ad2413b35
commit
32a030dd74
40 changed files with 2059 additions and 113 deletions
13
app/workers/bulk_import_worker.rb
Normal file
13
app/workers/bulk_import_worker.rb
Normal 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
|
|
@ -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
|
||||
|
||||
|
|
33
app/workers/import/row_worker.rb
Normal file
33
app/workers/import/row_worker.rb
Normal 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
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue