summaryrefslogtreecommitdiff
path: root/lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-05-19 07:33:21 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-05-19 07:33:21 +0000
commit36a59d088eca61b834191dacea009677a96c052f (patch)
treee4f33972dab5d8ef79e3944a9f403035fceea43f /lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports.rb
parenta1761f15ec2cae7c7f7bbda39a75494add0dfd6f (diff)
downloadgitlab-ce-5faf98c9110547177000515f4a8282635f6edb41.tar.gz
Add latest changes from gitlab-org/gitlab@15-0-stable-eev15.0.0-rc42
Diffstat (limited to 'lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports.rb')
-rw-r--r--lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports.rb45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports.rb b/lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports.rb
new file mode 100644
index 00000000000..83a7eb0b4cc
--- /dev/null
+++ b/lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports.rb
@@ -0,0 +1,45 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module BackgroundMigration
+ # A job to reset container_repositories that were skipped in the phase 2 registry
+ # migration due to too many tags.
+ class ResetTooManyTagsSkippedRegistryImports # rubocop:disable Migration/BackgroundMigrationBaseClass
+ class ContainerRepository < ::ApplicationRecord # rubocop:disable Style/Documentation
+ include EachBatch
+
+ self.table_name = 'container_repositories'
+
+ scope :base_query, -> { where(migration_state: 'import_skipped', migration_skipped_reason: 2) }
+ end
+
+ def perform(start_id, end_id)
+ ContainerRepository.base_query.where(id: start_id..end_id).each_batch(of: 100) do |sub_batch|
+ sub_batch.update_all(
+ migration_pre_import_started_at: nil,
+ migration_pre_import_done_at: nil,
+ migration_import_started_at: nil,
+ migration_import_done_at: nil,
+ migration_aborted_at: nil,
+ migration_skipped_at: nil,
+ migration_retries_count: 0,
+ migration_skipped_reason: nil,
+ migration_state: 'default',
+ migration_aborted_in_state: nil
+ )
+ end
+
+ mark_job_as_succeeded(start_id, end_id)
+ end
+
+ private
+
+ def mark_job_as_succeeded(*arguments)
+ ::Gitlab::Database::BackgroundMigrationJob.mark_all_as_succeeded(
+ self.class.name.demodulize,
+ arguments
+ )
+ end
+ end
+ end
+end