From 44fdf983bd35328dd577d3d3650d14163ef3e2b6 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 15 Apr 2020 15:42:17 +0000 Subject: Add latest changes from gitlab-org/gitlab@12-10-stable-ee --- ...104755_add_push_rules_id_to_project_settings.rb | 19 ++++++++++++ ...d_push_rules_foreign_key_to_project_settings.rb | 18 +++++++++++ ...33_add_push_rules_id_to_application_settings.rb | 19 ++++++++++++ ...sh_rules_foreign_key_to_application_settings.rb | 18 +++++++++++ ..._schedule_backfill_push_rules_id_in_projects.rb | 36 ++++++++++++++++++++++ db/structure.sql | 21 +++++++++++-- 6 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20200325104755_add_push_rules_id_to_project_settings.rb create mode 100644 db/migrate/20200325104756_add_push_rules_foreign_key_to_project_settings.rb create mode 100644 db/migrate/20200325104833_add_push_rules_id_to_application_settings.rb create mode 100644 db/migrate/20200325104834_add_push_rules_foreign_key_to_application_settings.rb create mode 100644 db/post_migrate/20200325162730_schedule_backfill_push_rules_id_in_projects.rb (limited to 'db') diff --git a/db/migrate/20200325104755_add_push_rules_id_to_project_settings.rb b/db/migrate/20200325104755_add_push_rules_id_to_project_settings.rb new file mode 100644 index 00000000000..93de736436b --- /dev/null +++ b/db/migrate/20200325104755_add_push_rules_id_to_project_settings.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddPushRulesIdToProjectSettings < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + with_lock_retries do + add_column :project_settings, :push_rule_id, :bigint + end + end + + def down + with_lock_retries do + remove_column :project_settings, :push_rule_id + end + end +end diff --git a/db/migrate/20200325104756_add_push_rules_foreign_key_to_project_settings.rb b/db/migrate/20200325104756_add_push_rules_foreign_key_to_project_settings.rb new file mode 100644 index 00000000000..41ad8d73b4c --- /dev/null +++ b/db/migrate/20200325104756_add_push_rules_foreign_key_to_project_settings.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddPushRulesForeignKeyToProjectSettings < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + disable_ddl_transaction! + + def up + add_concurrent_index :project_settings, :push_rule_id, unique: true + add_concurrent_foreign_key :project_settings, :push_rules, column: :push_rule_id, on_delete: :cascade + end + + def down + remove_foreign_key_if_exists :project_settings, column: :push_rule_id + remove_concurrent_index :project_settings, :push_rule_id + end +end diff --git a/db/migrate/20200325104833_add_push_rules_id_to_application_settings.rb b/db/migrate/20200325104833_add_push_rules_id_to_application_settings.rb new file mode 100644 index 00000000000..4650f1734c0 --- /dev/null +++ b/db/migrate/20200325104833_add_push_rules_id_to_application_settings.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddPushRulesIdToApplicationSettings < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + with_lock_retries do + add_column :application_settings, :push_rule_id, :bigint + end + end + + def down + with_lock_retries do + remove_column :application_settings, :push_rule_id + end + end +end diff --git a/db/migrate/20200325104834_add_push_rules_foreign_key_to_application_settings.rb b/db/migrate/20200325104834_add_push_rules_foreign_key_to_application_settings.rb new file mode 100644 index 00000000000..5263250833d --- /dev/null +++ b/db/migrate/20200325104834_add_push_rules_foreign_key_to_application_settings.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddPushRulesForeignKeyToApplicationSettings < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + disable_ddl_transaction! + + def up + add_concurrent_index :application_settings, :push_rule_id, unique: true + add_concurrent_foreign_key :application_settings, :push_rules, column: :push_rule_id, on_delete: :nullify + end + + def down + remove_concurrent_index :application_settings, :push_rule_id + remove_foreign_key_if_exists :application_settings, column: :push_rule_id + end +end diff --git a/db/post_migrate/20200325162730_schedule_backfill_push_rules_id_in_projects.rb b/db/post_migrate/20200325162730_schedule_backfill_push_rules_id_in_projects.rb new file mode 100644 index 00000000000..b25b3365e12 --- /dev/null +++ b/db/post_migrate/20200325162730_schedule_backfill_push_rules_id_in_projects.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +class ScheduleBackfillPushRulesIdInProjects < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + MIGRATION = 'BackfillPushRulesIdInProjects'.freeze + BATCH_SIZE = 1_000 + + class PushRules < ActiveRecord::Base + include EachBatch + + self.table_name = 'push_rules' + end + + def up + # Update one record that is connected to the instance + value_to_be_updated_to = ScheduleBackfillPushRulesIdInProjects::PushRules.find_by(is_sample: true)&.id + + execute "UPDATE application_settings SET push_rule_id = #{value_to_be_updated_to}" if value_to_be_updated_to + + ApplicationSetting.expire + + queue_background_migration_jobs_by_range_at_intervals(ScheduleBackfillPushRulesIdInProjects::PushRules, + MIGRATION, + 5.minutes, + batch_size: BATCH_SIZE) + end + + def down + execute "UPDATE application_settings SET push_rule_id = NULL" + + ApplicationSetting.expire + end +end diff --git a/db/structure.sql b/db/structure.sql index 28b0010eb30..78f54a0f603 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -399,7 +399,8 @@ CREATE TABLE public.application_settings ( namespace_storage_size_limit bigint DEFAULT 0 NOT NULL, seat_link_enabled boolean DEFAULT true NOT NULL, container_expiration_policies_enable_historic_entries boolean DEFAULT false NOT NULL, - issues_create_limit integer DEFAULT 300 NOT NULL + issues_create_limit integer DEFAULT 300 NOT NULL, + push_rule_id bigint ); CREATE SEQUENCE public.application_settings_id_seq @@ -5025,7 +5026,8 @@ ALTER SEQUENCE public.project_repository_states_id_seq OWNED BY public.project_r CREATE TABLE public.project_settings ( project_id integer NOT NULL, created_at timestamp with time zone NOT NULL, - updated_at timestamp with time zone NOT NULL + updated_at timestamp with time zone NOT NULL, + push_rule_id bigint ); CREATE TABLE public.project_statistics ( @@ -8677,6 +8679,8 @@ CREATE INDEX index_application_settings_on_file_template_project_id ON public.ap CREATE INDEX index_application_settings_on_instance_administrators_group_id ON public.application_settings USING btree (instance_administrators_group_id); +CREATE UNIQUE INDEX index_application_settings_on_push_rule_id ON public.application_settings USING btree (push_rule_id); + CREATE INDEX index_application_settings_on_usage_stats_set_by_user_id ON public.application_settings USING btree (usage_stats_set_by_user_id); CREATE INDEX index_applicationsettings_on_instance_administration_project_id ON public.application_settings USING btree (instance_administration_project_id); @@ -9891,6 +9895,8 @@ CREATE INDEX index_project_repositories_on_shard_id ON public.project_repositori CREATE UNIQUE INDEX index_project_repository_states_on_project_id ON public.project_repository_states USING btree (project_id); +CREATE UNIQUE INDEX index_project_settings_on_push_rule_id ON public.project_settings USING btree (push_rule_id); + CREATE INDEX index_project_statistics_on_namespace_id ON public.project_statistics USING btree (namespace_id); CREATE UNIQUE INDEX index_project_statistics_on_project_id ON public.project_statistics USING btree (project_id); @@ -10636,6 +10642,9 @@ ALTER TABLE ONLY public.epics ALTER TABLE ONLY public.ci_pipelines ADD CONSTRAINT fk_3d34ab2e06 FOREIGN KEY (pipeline_schedule_id) REFERENCES public.ci_pipeline_schedules(id) ON DELETE SET NULL; +ALTER TABLE ONLY public.project_settings + ADD CONSTRAINT fk_413a953e20 FOREIGN KEY (push_rule_id) REFERENCES public.push_rules(id) ON DELETE CASCADE; + ALTER TABLE ONLY public.ci_pipeline_schedule_variables ADD CONSTRAINT fk_41c35fda51 FOREIGN KEY (pipeline_schedule_id) REFERENCES public.ci_pipeline_schedules(id) ON DELETE CASCADE; @@ -10687,6 +10696,9 @@ ALTER TABLE ONLY public.merge_requests ALTER TABLE ONLY public.ci_builds ADD CONSTRAINT fk_6661f4f0e8 FOREIGN KEY (resource_group_id) REFERENCES public.ci_resource_groups(id) ON DELETE SET NULL; +ALTER TABLE ONLY public.application_settings + ADD CONSTRAINT fk_693b8795e4 FOREIGN KEY (push_rule_id) REFERENCES public.push_rules(id) ON DELETE SET NULL; + ALTER TABLE ONLY public.merge_requests ADD CONSTRAINT fk_6a5165a692 FOREIGN KEY (milestone_id) REFERENCES public.milestones(id) ON DELETE SET NULL; @@ -13113,9 +13125,14 @@ COPY "schema_migrations" (version) FROM STDIN; 20200323134519 20200324093258 20200324115359 +20200325104755 +20200325104756 +20200325104833 +20200325104834 20200325111432 20200325152327 20200325160952 +20200325162730 20200325183636 20200326114443 20200326122700 -- cgit v1.2.3