diff options
author | Gabriel Mazetto <brodock@gmail.com> | 2018-12-22 14:54:33 +0100 |
---|---|---|
committer | Gabriel Mazetto <brodock@gmail.com> | 2019-03-01 15:49:20 +0100 |
commit | ff2ca3569e704bb26c770ba5c28a888789d27230 (patch) | |
tree | e4ec9d67040445700b2265aef0c7a9c047fdfae0 /lib/tasks | |
parent | 4471ab81c8484d9942183bd8114a757b8630b8ec (diff) | |
download | gitlab-ce-ff2ca3569e704bb26c770ba5c28a888789d27230.tar.gz |
Rake task for storage rollback
Diffstat (limited to 'lib/tasks')
-rw-r--r-- | lib/tasks/gitlab/storage.rake | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/tasks/gitlab/storage.rake b/lib/tasks/gitlab/storage.rake index f9ce3e1d338..b759a2dad3a 100644 --- a/lib/tasks/gitlab/storage.rake +++ b/lib/tasks/gitlab/storage.rake @@ -45,6 +45,51 @@ namespace :gitlab do puts ' Done!' end + desc 'GitLab | Storage | Rollback existing projects to Legacy Storage' + task rollback_to_legacy: :environment do + if Gitlab::Database.read_only? + warn 'This task requires database write access. Exiting.' + + next + end + + storage_migrator = Gitlab::HashedStorage::Migrator.new + helper = Gitlab::HashedStorage::RakeHelper + + if helper.range_single_item? + project = Project.with_storage_feature(:repository).find_by(id: helper.range_from) + + unless project + warn "There are no projects that can be rolledback with ID=#{helper.range_from}" + + next + end + + puts "Enqueueing storage rollback of #{project.full_path} (ID=#{project.id})..." + storage_migrator.rollback(project) + + next + end + + hashed_projects_count = Project.with_storage_feature(:repository).count + + if hashed_projects_count == 0 + warn 'There are no projects that can have storage rolledback. Nothing to do!' + + next + end + + print "Enqueuing rollback of #{hashed_projects_count} projects in batches of #{helper.batch_size}" + + helper.project_id_batches do |start, finish| + storage_migrator.bulk_schedule(start: start, finish: finish, operation: :rollback) + + print '.' + end + + puts ' Done!' + end + desc 'Gitlab | Storage | Summary of existing projects using Legacy Storage' task legacy_projects: :environment do helper = Gitlab::HashedStorage::RakeHelper |