From 7f5f940041c8d1ee074be96cc64bdccdd95649b1 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 13 Nov 2020 19:27:03 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-5-stable-ee --- ...104124300_ensure_namespace_settings_creation.rb | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 db/post_migrate/20201104124300_ensure_namespace_settings_creation.rb (limited to 'db/post_migrate/20201104124300_ensure_namespace_settings_creation.rb') diff --git a/db/post_migrate/20201104124300_ensure_namespace_settings_creation.rb b/db/post_migrate/20201104124300_ensure_namespace_settings_creation.rb new file mode 100644 index 00000000000..08f92d21f44 --- /dev/null +++ b/db/post_migrate/20201104124300_ensure_namespace_settings_creation.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +class EnsureNamespaceSettingsCreation < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + BATCH_SIZE = 10000 + MIGRATION = 'BackfillNamespaceSettings' + DELAY_INTERVAL = 2.minutes.to_i + + disable_ddl_transaction! + + class Namespace < ActiveRecord::Base + include EachBatch + + self.table_name = 'namespaces' + end + + def up + ensure_data_migration + end + + def down + # no-op + end + + private + + def ensure_data_migration + Namespace.each_batch(of: BATCH_SIZE) do |query, index| + missing_count = query.where("NOT EXISTS (SELECT 1 FROM namespace_settings WHERE namespace_settings.namespace_id=namespaces.id)").limit(1).size + + if missing_count > 0 + ids_range = query.pluck("MIN(id), MAX(id)").flatten + + migrate_in(index * DELAY_INTERVAL, MIGRATION, ids_range) + end + end + end +end -- cgit v1.2.3