summaryrefslogtreecommitdiff
path: root/lib/gitlab/background_migration/job_coordinator.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/background_migration/job_coordinator.rb')
-rw-r--r--lib/gitlab/background_migration/job_coordinator.rb28
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