39 lines
1.1 KiB
Ruby
39 lines
1.1 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
class ScheduleBackfillTraversalIds < ActiveRecord::Migration[6.0]
|
||
|
include Gitlab::Database::MigrationHelpers
|
||
|
|
||
|
ROOTS_MIGRATION = 'BackfillNamespaceTraversalIdsRoots'
|
||
|
CHILDREN_MIGRATION = 'BackfillNamespaceTraversalIdsChildren'
|
||
|
DOWNTIME = false
|
||
|
BATCH_SIZE = 1_000
|
||
|
SUB_BATCH_SIZE = 100
|
||
|
DELAY_INTERVAL = 2.minutes
|
||
|
|
||
|
disable_ddl_transaction!
|
||
|
|
||
|
def up
|
||
|
# Personal namespaces and top-level groups
|
||
|
final_delay = queue_background_migration_jobs_by_range_at_intervals(
|
||
|
::Gitlab::BackgroundMigration::BackfillNamespaceTraversalIdsRoots::Namespace.base_query,
|
||
|
ROOTS_MIGRATION,
|
||
|
DELAY_INTERVAL,
|
||
|
batch_size: BATCH_SIZE,
|
||
|
other_job_arguments: [SUB_BATCH_SIZE],
|
||
|
track_jobs: true
|
||
|
)
|
||
|
final_delay += DELAY_INTERVAL
|
||
|
|
||
|
# Subgroups
|
||
|
queue_background_migration_jobs_by_range_at_intervals(
|
||
|
::Gitlab::BackgroundMigration::BackfillNamespaceTraversalIdsChildren::Namespace.base_query,
|
||
|
CHILDREN_MIGRATION,
|
||
|
DELAY_INTERVAL,
|
||
|
batch_size: BATCH_SIZE,
|
||
|
initial_delay: final_delay,
|
||
|
other_job_arguments: [SUB_BATCH_SIZE],
|
||
|
track_jobs: true
|
||
|
)
|
||
|
end
|
||
|
end
|