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 'lib/gitlab/background_migration/steal_migrate_merge_request_diff_commit_users.rb')
-rw-r--r--lib/gitlab/background_migration/steal_migrate_merge_request_diff_commit_users.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/gitlab/background_migration/steal_migrate_merge_request_diff_commit_users.rb b/lib/gitlab/background_migration/steal_migrate_merge_request_diff_commit_users.rb
new file mode 100644
index 00000000000..43a7032e682
--- /dev/null
+++ b/lib/gitlab/background_migration/steal_migrate_merge_request_diff_commit_users.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module BackgroundMigration
+ # A background migration that finished any pending
+ # MigrateMergeRequestDiffCommitUsers jobs, and schedules new jobs itself.
+ #
+ # This migration exists so we can bypass rescheduling issues (e.g. jobs
+ # getting dropped after too many retries) that may occur when
+ # MigrateMergeRequestDiffCommitUsers jobs take longer than expected.
+ class StealMigrateMergeRequestDiffCommitUsers
+ def perform(start_id, stop_id)
+ MigrateMergeRequestDiffCommitUsers.new.perform(start_id, stop_id)
+ schedule_next_job
+ end
+
+ def schedule_next_job
+ next_job = Database::BackgroundMigrationJob
+ .for_migration_class('MigrateMergeRequestDiffCommitUsers')
+ .pending
+ .first
+
+ return unless next_job
+
+ BackgroundMigrationWorker.perform_in(
+ 5.minutes,
+ 'StealMigrateMergeRequestDiffCommitUsers',
+ next_job.arguments
+ )
+ end
+ end
+ end
+end