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 'db/post_migrate/20221006172302_adjust_task_note_rename_background_migration_values.rb')
-rw-r--r--db/post_migrate/20221006172302_adjust_task_note_rename_background_migration_values.rb72
1 files changed, 72 insertions, 0 deletions
diff --git a/db/post_migrate/20221006172302_adjust_task_note_rename_background_migration_values.rb b/db/post_migrate/20221006172302_adjust_task_note_rename_background_migration_values.rb
new file mode 100644
index 00000000000..2af16fb6d3c
--- /dev/null
+++ b/db/post_migrate/20221006172302_adjust_task_note_rename_background_migration_values.rb
@@ -0,0 +1,72 @@
+# frozen_string_literal: true
+
+class AdjustTaskNoteRenameBackgroundMigrationValues < Gitlab::Database::Migration[2.0]
+ restrict_gitlab_migration gitlab_schema: :gitlab_main
+
+ JOB_CLASS_NAME = 'RenameTaskSystemNoteToChecklistItem'
+ MIGRATION_FAILED_STATUS = 4
+ MIGRATION_FINISHED_STATUS = 3
+ MIGRATION_ACTIVE_STATUS = 1
+ JOB_FAILED_STATUS = 2
+
+ OLD_BATCH_SIZE = 10_000
+ NEW_BATCH_SIZE = 5_000
+
+ OLD_SUB_BATCH_SIZE = 100
+ NEW_SUB_BATCH_SIZE = 10
+
+ class InlineBatchedMigration < MigrationRecord
+ self.table_name = :batched_background_migrations
+
+ scope :for_configuration, ->(job_class_name, table_name, column_name, job_arguments) do
+ where(job_class_name: job_class_name, table_name: table_name, column_name: column_name)
+ .where("job_arguments = ?", job_arguments.to_json) # rubocop:disable Rails/WhereEquals
+ end
+ end
+
+ class InlineBatchedJob < MigrationRecord
+ include EachBatch
+ self.table_name = :batched_background_migration_jobs
+ end
+
+ def up
+ migration = InlineBatchedMigration.for_configuration(
+ JOB_CLASS_NAME,
+ :system_note_metadata,
+ :id,
+ []
+ ).first
+ return if migration.blank? || migration.status == MIGRATION_FINISHED_STATUS
+
+ InlineBatchedJob.where(
+ batched_background_migration_id: migration.id,
+ status: JOB_FAILED_STATUS
+ ).each_batch(of: 100) do |batch|
+ batch.update_all(attempts: 0, sub_batch_size: NEW_SUB_BATCH_SIZE)
+ end
+
+ update_params = { batch_size: NEW_BATCH_SIZE, sub_batch_size: NEW_SUB_BATCH_SIZE }
+
+ if migration.status == MIGRATION_FAILED_STATUS
+ update_params[:status] = MIGRATION_ACTIVE_STATUS
+ update_params[:started_at] = Time.zone.now if migration.respond_to?(:started_at)
+ end
+
+ migration.update!(**update_params)
+ end
+
+ def down
+ migration = InlineBatchedMigration.for_configuration(
+ JOB_CLASS_NAME,
+ :system_note_metadata,
+ :id,
+ []
+ ).first
+ return if migration.blank?
+
+ migration.update!(
+ batch_size: OLD_BATCH_SIZE,
+ sub_batch_size: OLD_SUB_BATCH_SIZE
+ )
+ end
+end