diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-11-13 22:27:03 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-11-13 22:27:03 +0300 |
commit | 7f5f940041c8d1ee074be96cc64bdccdd95649b1 (patch) | |
tree | 334342b5d7c1898efcbe345c51838b63aa5106bc /db/post_migrate/20201104124300_ensure_namespace_settings_creation.rb | |
parent | b16db1458f5e0f6b0427cf3e2471302657297427 (diff) |
Add latest changes from gitlab-org/gitlab@13-5-stable-eev13.5.4
Diffstat (limited to 'db/post_migrate/20201104124300_ensure_namespace_settings_creation.rb')
-rw-r--r-- | db/post_migrate/20201104124300_ensure_namespace_settings_creation.rb | 40 |
1 files changed, 40 insertions, 0 deletions
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 |