diff options
Diffstat (limited to 'lib/gitlab/background_migration/job_coordinator.rb')
-rw-r--r-- | lib/gitlab/background_migration/job_coordinator.rb | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/lib/gitlab/background_migration/job_coordinator.rb b/lib/gitlab/background_migration/job_coordinator.rb index 5dc77f935e3..b7d47c389df 100644 --- a/lib/gitlab/background_migration/job_coordinator.rb +++ b/lib/gitlab/background_migration/job_coordinator.rb @@ -10,28 +10,32 @@ module Gitlab # Also provides a database connection to the correct tracking database. class JobCoordinator # rubocop:disable Metrics/ClassLength class << self + def for_tracking_database(tracking_database) + worker_class = worker_for_tracking_database[tracking_database] + + if worker_class.nil? + raise ArgumentError, "tracking_database must be one of [#{worker_for_tracking_database.keys.join(', ')}]" + end + + new(worker_class) + end + + private + def worker_classes @worker_classes ||= [ - BackgroundMigrationWorker + ::BackgroundMigrationWorker, + ::BackgroundMigration::CiDatabaseWorker ].freeze end def worker_for_tracking_database @worker_for_tracking_database ||= worker_classes + .select { |worker_class| Gitlab::Database.has_config?(worker_class.tracking_database) } .index_by(&:tracking_database) .with_indifferent_access .freeze end - - def for_tracking_database(tracking_database) - worker_class = worker_for_tracking_database[tracking_database] - - if worker_class.nil? - raise ArgumentError, "tracking_database must be one of [#{worker_for_tracking_database.keys.join(', ')}]" - end - - new(worker_class) - end end attr_reader :worker_class @@ -146,7 +150,7 @@ module Gitlab def connection @connection ||= Gitlab::Database .database_base_models - .fetch(worker_class.tracking_database, Gitlab::Database::PRIMARY_DATABASE_NAME) + .fetch(worker_class.tracking_database) .connection end end |