From b5eb4ce6ca7b102959a91784056b4c95091af91b Mon Sep 17 00:00:00 2001 From: carlad-gl Date: Thu, 2 May 2024 11:59:20 +0200 Subject: [PATCH 1/4] Add imported_from column First step in renaming imported to imported_from Changelog: added --- ...0240502084801_add_imported_from_columns.rb | 21 +++++++++++++++++++ db/structure.sql | 21 ++++++++++++++----- 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 db/migrate/20240502084801_add_imported_from_columns.rb diff --git a/db/migrate/20240502084801_add_imported_from_columns.rb b/db/migrate/20240502084801_add_imported_from_columns.rb new file mode 100644 index 00000000000000..e0b5dc073f2ee0 --- /dev/null +++ b/db/migrate/20240502084801_add_imported_from_columns.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class AddImportedFromColumns < Gitlab::Database::Migration[2.2] + milestone '17.0' + + disable_ddl_transaction! + + def change + add_column :design_management_designs, :imported_from, :integer, default: 0, null: false, limit: 2 + add_column :epics, :imported_from, :integer, default: 0, null: false, limit: 2 + add_column :events, :imported_from, :integer, default: 0, null: false, limit: 2 + add_column :issues, :imported_from, :integer, default: 0, null: false, limit: 2 + add_column :merge_requests, :imported_from, :integer, default: 0, null: false, limit: 2 + add_column :notes, :imported_from, :integer, default: 0, null: false, limit: 2 + add_column :resource_label_events, :imported_from, :integer, default: 0, null: false, limit: 2 + add_column :resource_milestone_events, :imported_from, :integer, default: 0, null: false, limit: 2 + add_column :resource_state_events, :imported_from, :integer, default: 0, null: false, limit: 2 + add_column :snippets, :imported_from, :integer, default: 0, null: false, limit: 2 + add_column :temp_notes_backup, :imported_from, :integer, default: 0, null: false, limit: 2 + end +end diff --git a/db/structure.sql b/db/structure.sql index a17da951ced64b..277c2d694629e8 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -8412,6 +8412,7 @@ CREATE TABLE design_management_designs ( description text, description_html text, imported smallint DEFAULT 0 NOT NULL, + imported_from smallint DEFAULT 0 NOT NULL, CONSTRAINT check_07155e2715 CHECK ((char_length((filename)::text) <= 255)), CONSTRAINT check_aaf9fa6ae5 CHECK ((char_length(description) <= 1000000)), CONSTRAINT check_cfb92df01a CHECK ((iid IS NOT NULL)) @@ -8925,6 +8926,7 @@ CREATE TABLE epics ( total_closed_issue_count integer DEFAULT 0 NOT NULL, issue_id integer, imported smallint DEFAULT 0 NOT NULL, + imported_from smallint DEFAULT 0 NOT NULL, CONSTRAINT check_ca608c40b3 CHECK ((char_length(color) <= 7)), CONSTRAINT check_fcfb4a93ff CHECK ((lock_version IS NOT NULL)) ); @@ -9021,6 +9023,7 @@ CREATE TABLE events ( id bigint NOT NULL, target_id bigint, imported smallint DEFAULT 0 NOT NULL, + imported_from smallint DEFAULT 0 NOT NULL, CONSTRAINT check_97e06e05ad CHECK ((octet_length(fingerprint) <= 128)) ); @@ -10632,6 +10635,7 @@ CREATE TABLE issues ( start_date date, tmp_epic_id bigint, imported smallint DEFAULT 0 NOT NULL, + imported_from smallint DEFAULT 0 NOT NULL, CONSTRAINT check_2addf801cd CHECK ((work_item_type_id IS NOT NULL)), CONSTRAINT check_c33362cd43 CHECK ((namespace_id IS NOT NULL)), CONSTRAINT check_fba63f706d CHECK ((lock_version IS NOT NULL)) @@ -11533,6 +11537,7 @@ CREATE TABLE merge_requests ( override_requested_changes boolean DEFAULT false NOT NULL, head_pipeline_id_convert_to_bigint bigint, imported smallint DEFAULT 0 NOT NULL, + imported_from smallint DEFAULT 0 NOT NULL, CONSTRAINT check_970d272570 CHECK ((lock_version IS NOT NULL)) ); @@ -12222,7 +12227,8 @@ CREATE TABLE notes ( internal boolean DEFAULT false NOT NULL, id bigint NOT NULL, namespace_id bigint, - imported smallint DEFAULT 0 NOT NULL + imported smallint DEFAULT 0 NOT NULL, + imported_from smallint DEFAULT 0 NOT NULL ); CREATE SEQUENCE notes_id_seq @@ -15449,7 +15455,8 @@ CREATE TABLE resource_label_events ( cached_markdown_version integer, reference text, reference_html text, - imported smallint DEFAULT 0 NOT NULL + imported smallint DEFAULT 0 NOT NULL, + imported_from smallint DEFAULT 0 NOT NULL ); CREATE SEQUENCE resource_label_events_id_seq @@ -15489,7 +15496,8 @@ CREATE TABLE resource_milestone_events ( action smallint NOT NULL, state smallint NOT NULL, created_at timestamp with time zone NOT NULL, - imported smallint DEFAULT 0 NOT NULL + imported smallint DEFAULT 0 NOT NULL, + imported_from smallint DEFAULT 0 NOT NULL ); CREATE SEQUENCE resource_milestone_events_id_seq @@ -15514,6 +15522,7 @@ CREATE TABLE resource_state_events ( close_auto_resolve_prometheus_alert boolean DEFAULT false NOT NULL, source_merge_request_id bigint, imported smallint DEFAULT 0 NOT NULL, + imported_from smallint DEFAULT 0 NOT NULL, CONSTRAINT check_f0bcfaa3a2 CHECK ((char_length(source_commit) <= 40)), CONSTRAINT state_events_must_belong_to_issue_or_merge_request_or_epic CHECK ((((issue_id <> NULL::bigint) AND (merge_request_id IS NULL) AND (epic_id IS NULL)) OR ((issue_id IS NULL) AND (merge_request_id <> NULL::bigint) AND (epic_id IS NULL)) OR ((issue_id IS NULL) AND (merge_request_id IS NULL) AND (epic_id <> NULL::integer)))) ); @@ -16340,7 +16349,8 @@ CREATE TABLE snippets ( encrypted_secret_token_iv character varying(255), secret boolean DEFAULT false NOT NULL, repository_read_only boolean DEFAULT false NOT NULL, - imported smallint DEFAULT 0 NOT NULL + imported smallint DEFAULT 0 NOT NULL, + imported_from smallint DEFAULT 0 NOT NULL ); CREATE SEQUENCE snippets_id_seq @@ -16767,7 +16777,8 @@ CREATE TABLE temp_notes_backup ( internal boolean NOT NULL, id bigint NOT NULL, namespace_id bigint, - imported smallint DEFAULT 0 NOT NULL + imported smallint DEFAULT 0 NOT NULL, + imported_from smallint DEFAULT 0 NOT NULL ); CREATE TABLE term_agreements ( -- GitLab From e8bb1eee73c9c856098569211d7ef5489c3c3833 Mon Sep 17 00:00:00 2001 From: carlad-gl Date: Thu, 2 May 2024 12:27:20 +0200 Subject: [PATCH 2/4] Add retry guards --- ...0240502084801_add_imported_from_columns.rb | 113 ++++++++++++++++-- 1 file changed, 101 insertions(+), 12 deletions(-) diff --git a/db/migrate/20240502084801_add_imported_from_columns.rb b/db/migrate/20240502084801_add_imported_from_columns.rb index e0b5dc073f2ee0..ff78e84f82e0a0 100644 --- a/db/migrate/20240502084801_add_imported_from_columns.rb +++ b/db/migrate/20240502084801_add_imported_from_columns.rb @@ -5,17 +5,106 @@ class AddImportedFromColumns < Gitlab::Database::Migration[2.2] disable_ddl_transaction! - def change - add_column :design_management_designs, :imported_from, :integer, default: 0, null: false, limit: 2 - add_column :epics, :imported_from, :integer, default: 0, null: false, limit: 2 - add_column :events, :imported_from, :integer, default: 0, null: false, limit: 2 - add_column :issues, :imported_from, :integer, default: 0, null: false, limit: 2 - add_column :merge_requests, :imported_from, :integer, default: 0, null: false, limit: 2 - add_column :notes, :imported_from, :integer, default: 0, null: false, limit: 2 - add_column :resource_label_events, :imported_from, :integer, default: 0, null: false, limit: 2 - add_column :resource_milestone_events, :imported_from, :integer, default: 0, null: false, limit: 2 - add_column :resource_state_events, :imported_from, :integer, default: 0, null: false, limit: 2 - add_column :snippets, :imported_from, :integer, default: 0, null: false, limit: 2 - add_column :temp_notes_backup, :imported_from, :integer, default: 0, null: false, limit: 2 + def up + with_lock_retries do + add_column :design_management_designs, + :imported_from, :integer, default: 0, null: false, limit: 2, if_not_exists: true + end + + with_lock_retries do + add_column :epics, + :imported_from, :integer, default: 0, null: false, limit: 2, if_not_exists: true + end + + with_lock_retries do + add_column :events, + :imported_from, :integer, default: 0, null: false, limit: 2, if_not_exists: true + end + + with_lock_retries do + add_column :issues, + :imported_from, :integer, default: 0, null: false, limit: 2, if_not_exists: true + end + + with_lock_retries do + add_column :merge_requests, + :imported_from, :integer, default: 0, null: false, limit: 2, if_not_exists: true + end + + with_lock_retries do + add_column :notes, + :imported_from, :integer, default: 0, null: false, limit: 2, if_not_exists: true + end + + with_lock_retries do + add_column :resource_label_events, + :imported_from, :integer, default: 0, null: false, limit: 2, if_not_exists: true + end + + with_lock_retries do + add_column :resource_milestone_events, + :imported_from, :integer, default: 0, null: false, limit: 2, if_not_exists: true + end + + with_lock_retries do + add_column :resource_state_events, + :imported_from, :integer, default: 0, null: false, limit: 2, if_not_exists: true + end + + with_lock_retries do + add_column :snippets, + :imported_from, :integer, default: 0, null: false, limit: 2, if_not_exists: true + end + + with_lock_retries do + add_column :temp_notes_backup, + :imported_from, :integer, default: 0, null: false, limit: 2, if_not_exists: true + end + end + + def down + with_lock_retries do + add_column :design_management_designs, :imported_from, :integer, if_exists: true + end + + with_lock_retries do + add_column :epics, :imported_from, :integer, if_exists: true + end + + with_lock_retries do + add_column :events, :imported_from, :integer, if_exists: true + end + + with_lock_retries do + add_column :issues, :imported_from, :integer, if_exists: true + end + + with_lock_retries do + add_column :merge_requests, :imported_from, :integer, if_exists: true + end + + with_lock_retries do + add_column :notes, :imported_from, :integer, if_exists: true + end + + with_lock_retries do + add_column :resource_label_events, :imported_from, :integer, if_exists: true + end + + with_lock_retries do + add_column :resource_milestone_events, :imported_from, :integer, if_exists: true + end + + with_lock_retries do + add_column :resource_state_events, :imported_from, :integer, if_exists: true + end + + with_lock_retries do + add_column :snippets, :imported_from, :integer, if_exists: true + end + + with_lock_retries do + add_column :temp_notes_backup, :imported_from, :integer, if_exists: true + end end end -- GitLab From eec152f356f18f7728653d506d94c73060150984 Mon Sep 17 00:00:00 2001 From: carlad-gl Date: Thu, 2 May 2024 19:50:54 +0200 Subject: [PATCH 3/4] Correct migration action add schema_migration file --- ...0240502084801_add_imported_from_columns.rb | 22 +++++++++---------- db/schema_migrations/20240502084801 | 1 + 2 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 db/schema_migrations/20240502084801 diff --git a/db/migrate/20240502084801_add_imported_from_columns.rb b/db/migrate/20240502084801_add_imported_from_columns.rb index ff78e84f82e0a0..c2be7e2af94b93 100644 --- a/db/migrate/20240502084801_add_imported_from_columns.rb +++ b/db/migrate/20240502084801_add_imported_from_columns.rb @@ -64,47 +64,47 @@ def up def down with_lock_retries do - add_column :design_management_designs, :imported_from, :integer, if_exists: true + remove_column :design_management_designs, :imported_from, :integer, if_exists: true end with_lock_retries do - add_column :epics, :imported_from, :integer, if_exists: true + remove_column :epics, :imported_from, :integer, if_exists: true end with_lock_retries do - add_column :events, :imported_from, :integer, if_exists: true + remove_column :events, :imported_from, :integer, if_exists: true end with_lock_retries do - add_column :issues, :imported_from, :integer, if_exists: true + remove_column :issues, :imported_from, :integer, if_exists: true end with_lock_retries do - add_column :merge_requests, :imported_from, :integer, if_exists: true + remove_column :merge_requests, :imported_from, :integer, if_exists: true end with_lock_retries do - add_column :notes, :imported_from, :integer, if_exists: true + remove_column :notes, :imported_from, :integer, if_exists: true end with_lock_retries do - add_column :resource_label_events, :imported_from, :integer, if_exists: true + remove_column :resource_label_events, :imported_from, :integer, if_exists: true end with_lock_retries do - add_column :resource_milestone_events, :imported_from, :integer, if_exists: true + remove_column :resource_milestone_events, :imported_from, :integer, if_exists: true end with_lock_retries do - add_column :resource_state_events, :imported_from, :integer, if_exists: true + remove_column :resource_state_events, :imported_from, :integer, if_exists: true end with_lock_retries do - add_column :snippets, :imported_from, :integer, if_exists: true + remove_column :snippets, :imported_from, :integer, if_exists: true end with_lock_retries do - add_column :temp_notes_backup, :imported_from, :integer, if_exists: true + remove_column :temp_notes_backup, :imported_from, :integer, if_exists: true end end end diff --git a/db/schema_migrations/20240502084801 b/db/schema_migrations/20240502084801 new file mode 100644 index 00000000000000..2cb1e2926c8731 --- /dev/null +++ b/db/schema_migrations/20240502084801 @@ -0,0 +1 @@ +ae4ebf4e33ff1b74bc4cb1101579e123a48fd373cde6b35e0dbee10bc516c728 \ No newline at end of file -- GitLab From 02a23e203038ec324f054f0f35e7ee99794dff69 Mon Sep 17 00:00:00 2001 From: carlad-gl Date: Fri, 3 May 2024 12:11:07 +0200 Subject: [PATCH 4/4] Update config files for specs --- .../copy_design_collection_model_attributes.yml | 1 + spec/lib/gitlab/import_export/safe_model_attributes.yml | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/lib/gitlab/design_management/copy_design_collection_model_attributes.yml b/lib/gitlab/design_management/copy_design_collection_model_attributes.yml index bf2626c06a380b..eb0847313322e3 100644 --- a/lib/gitlab/design_management/copy_design_collection_model_attributes.yml +++ b/lib/gitlab/design_management/copy_design_collection_model_attributes.yml @@ -18,6 +18,7 @@ design_attributes: - relative_position - description - imported + - imported_from version_attributes: - author_id diff --git a/spec/lib/gitlab/import_export/safe_model_attributes.yml b/spec/lib/gitlab/import_export/safe_model_attributes.yml index 8c6990e3a34cf3..fa42b4f3a828f0 100644 --- a/spec/lib/gitlab/import_export/safe_model_attributes.yml +++ b/spec/lib/gitlab/import_export/safe_model_attributes.yml @@ -35,6 +35,7 @@ Issue: - issue_type - email_message_id - imported +- imported_from Event: - id - target_type @@ -46,6 +47,7 @@ Event: - author_id - fingerprint - imported +- imported_from WikiPage::Meta: - id - title @@ -90,6 +92,7 @@ Note: - last_edited_at - internal - imported +- imported_from Notes::NoteMetadata: - note_id - email_participant @@ -137,6 +140,7 @@ ProjectSnippet: - type - visibility_level - imported +- imported_from Release: - id - name @@ -222,6 +226,7 @@ MergeRequest: - merge_ref_sha - draft - imported +- imported_from MergeRequestDiff: - id - state @@ -1002,6 +1007,7 @@ Epic: - total_opened_issue_count - total_closed_issue_count - imported + - imported_from EpicIssue: - id - relative_position -- GitLab