28 lines
779 B
Ruby
28 lines
779 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
namespace :gitlab do
|
||
|
namespace :uploads do
|
||
|
namespace :legacy do
|
||
|
desc "GitLab | Uploads | Migrate all legacy attachments"
|
||
|
task migrate: :environment do
|
||
|
class Upload < ApplicationRecord
|
||
|
self.table_name = 'uploads'
|
||
|
|
||
|
include ::EachBatch
|
||
|
end
|
||
|
|
||
|
migration = 'LegacyUploadsMigrator'.freeze
|
||
|
batch_size = 5000
|
||
|
delay_interval = 5.minutes.to_i
|
||
|
|
||
|
Upload.where(uploader: 'AttachmentUploader').each_batch(of: batch_size) do |relation, index|
|
||
|
start_id, end_id = relation.pluck('MIN(id), MAX(id)').first
|
||
|
delay = index * delay_interval
|
||
|
|
||
|
BackgroundMigrationWorker.perform_in(delay, migration, [start_id, end_id])
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|