summaryrefslogtreecommitdiff
path: root/lib/gitlab/hashed_storage/rake_helper.rb
diff options
context:
space:
mode:
authorGabriel Mazetto <brodock@gmail.com>2019-01-23 03:40:05 +0100
committerGabriel Mazetto <brodock@gmail.com>2019-03-01 15:49:20 +0100
commitfc0ff92807620c36d01f23eb0d7d88b02cb141c1 (patch)
tree8241564fc370782be698266bb14d5c1a69a1ded0 /lib/gitlab/hashed_storage/rake_helper.rb
parentd63380fa93dff921c69f7aaa31ff004864e4db13 (diff)
downloadgitlab-ce-fc0ff92807620c36d01f23eb0d7d88b02cb141c1.tar.gz
Added Rollbacker workers and support on the rake task
Rollback is done similar to Migration for the Hashed Storage. It also shares the same ExclusiveLease key to prevent both happening at the same time. All Hashed Storage related workers now share the same queue namespace which allows for assigning dedicated workers easily.
Diffstat (limited to 'lib/gitlab/hashed_storage/rake_helper.rb')
-rw-r--r--lib/gitlab/hashed_storage/rake_helper.rb12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/gitlab/hashed_storage/rake_helper.rb b/lib/gitlab/hashed_storage/rake_helper.rb
index 38f552fab03..87a31a37e3f 100644
--- a/lib/gitlab/hashed_storage/rake_helper.rb
+++ b/lib/gitlab/hashed_storage/rake_helper.rb
@@ -24,7 +24,7 @@ module Gitlab
end
# rubocop: disable CodeReuse/ActiveRecord
- def self.project_id_batches(&block)
+ def self.project_id_batches_migration(&block)
Project.with_unmigrated_storage.in_batches(of: batch_size, start: range_from, finish: range_to) do |relation| # rubocop: disable Cop/InBatches
ids = relation.pluck(:id)
@@ -34,6 +34,16 @@ module Gitlab
# rubocop: enable CodeReuse/ActiveRecord
# rubocop: disable CodeReuse/ActiveRecord
+ def self.project_id_batches_rollback(&block)
+ Project.with_storage_feature(:repository).in_batches(of: batch_size, start: range_from, finish: range_to) do |relation| # rubocop: disable Cop/InBatches
+ ids = relation.pluck(:id)
+
+ yield ids.min, ids.max
+ end
+ end
+ # rubocop: enable CodeReuse/ActiveRecord
+
+ # rubocop: disable CodeReuse/ActiveRecord
def self.legacy_attachments_relation
Upload.joins(<<~SQL).where('projects.storage_version < :version OR projects.storage_version IS NULL', version: Project::HASHED_STORAGE_FEATURES[:attachments])
JOIN projects