Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/projects/schedule_bulk_repository_shard_moves_service.rb')
-rw-r--r--app/services/projects/schedule_bulk_repository_shard_moves_service.rb38
1 files changed, 17 insertions, 21 deletions
diff --git a/app/services/projects/schedule_bulk_repository_shard_moves_service.rb b/app/services/projects/schedule_bulk_repository_shard_moves_service.rb
index dd49910207f..53de9abdb59 100644
--- a/app/services/projects/schedule_bulk_repository_shard_moves_service.rb
+++ b/app/services/projects/schedule_bulk_repository_shard_moves_service.rb
@@ -3,33 +3,29 @@
module Projects
# Tries to schedule a move for every project with repositories on the source shard
class ScheduleBulkRepositoryShardMovesService
- include BaseServiceUtility
+ include ScheduleBulkRepositoryShardMovesMethods
+ extend ::Gitlab::Utils::Override
- def execute(source_storage_name, destination_storage_name = nil)
- shard = Shard.find_by_name!(source_storage_name)
+ private
- ProjectRepository.for_shard(shard).each_batch(column: :project_id) do |relation|
- Project.id_in(relation.select(:project_id)).each do |project|
- project.with_lock do
- next if project.repository_storage != source_storage_name
-
- storage_move = project.repository_storage_moves.build(
- source_storage_name: source_storage_name,
- destination_storage_name: destination_storage_name
- )
+ override :repository_klass
+ def repository_klass
+ ProjectRepository
+ end
- unless storage_move.schedule
- log_info("Project #{project.full_path} (#{project.id}) was skipped: #{storage_move.errors.full_messages.to_sentence}")
- end
- end
- end
- end
+ override :container_klass
+ def container_klass
+ Project
+ end
- success
+ override :container_column
+ def container_column
+ :project_id
end
- def self.enqueue(source_storage_name, destination_storage_name = nil)
- ::ProjectScheduleBulkRepositoryShardMovesWorker.perform_async(source_storage_name, destination_storage_name)
+ override :schedule_bulk_worker_klass
+ def self.schedule_bulk_worker_klass
+ ::ProjectScheduleBulkRepositoryShardMovesWorker
end
end
end