diff options
Diffstat (limited to 'db/post_migrate')
-rw-r--r-- | db/post_migrate/20201005094331_migrate_compliance_framework_enum_to_database_framework_record.rb | 2 | ||||
-rw-r--r-- | db/post_migrate/20201104124300_ensure_namespace_settings_creation.rb | 40 |
2 files changed, 40 insertions, 2 deletions
diff --git a/db/post_migrate/20201005094331_migrate_compliance_framework_enum_to_database_framework_record.rb b/db/post_migrate/20201005094331_migrate_compliance_framework_enum_to_database_framework_record.rb index 5e261637d46..a5fab8576e4 100644 --- a/db/post_migrate/20201005094331_migrate_compliance_framework_enum_to_database_framework_record.rb +++ b/db/post_migrate/20201005094331_migrate_compliance_framework_enum_to_database_framework_record.rb @@ -52,8 +52,6 @@ class MigrateComplianceFrameworkEnumToDatabaseFrameworkRecord < ActiveRecord::Mi end def up - return unless Gitlab.ee? - TmpComplianceFramework.reset_column_information TmpProjectSettings.reset_column_information 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 |