From f36ef30b0a65efc88a2157612e89df587e4bcb36 Mon Sep 17 00:00:00 2001 From: Douglas Barbosa Alexandre <dbalexandre@gmail.com> Date: Mon, 19 Feb 2024 20:09:43 -0300 Subject: [PATCH] Drop project_repository_states table Changelog: removed --- .../project_repository_states.yml | 2 + ...e_foreign_key_project_repository_states.rb | 22 +++++++ ...04_drop_project_repository_states_table.rb | 57 +++++++++++++++++++ db/schema_migrations/20240222000003 | 1 + db/schema_migrations/20240222000004 | 1 + db/structure.sql | 46 --------------- 6 files changed, 83 insertions(+), 46 deletions(-) rename db/docs/{ => deleted_tables}/project_repository_states.yml (81%) create mode 100644 db/post_migrate/20240222000003_remove_foreign_key_project_repository_states.rb create mode 100644 db/post_migrate/20240222000004_drop_project_repository_states_table.rb create mode 100644 db/schema_migrations/20240222000003 create mode 100644 db/schema_migrations/20240222000004 diff --git a/db/docs/project_repository_states.yml b/db/docs/deleted_tables/project_repository_states.yml similarity index 81% rename from db/docs/project_repository_states.yml rename to db/docs/deleted_tables/project_repository_states.yml index 7624d7d6a755a..d48b54402b418 100644 --- a/db/docs/project_repository_states.yml +++ b/db/docs/deleted_tables/project_repository_states.yml @@ -16,3 +16,5 @@ allow_cross_foreign_keys: - gitlab_main_clusterwide sharding_key: project_id: projects +removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/145195 +removed_in_milestone: '16.10' diff --git a/db/post_migrate/20240222000003_remove_foreign_key_project_repository_states.rb b/db/post_migrate/20240222000003_remove_foreign_key_project_repository_states.rb new file mode 100644 index 0000000000000..dd7a0307a905b --- /dev/null +++ b/db/post_migrate/20240222000003_remove_foreign_key_project_repository_states.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class RemoveForeignKeyProjectRepositoryStates < Gitlab::Database::Migration[2.2] + milestone '16.10' + + disable_ddl_transaction! + + FOREIGN_KEY_NAME_PROJECTS = "fk_rails_0f2298ca8a" + + def up + with_lock_retries do + remove_foreign_key_if_exists(:project_repository_states, :projects, + name: FOREIGN_KEY_NAME_PROJECTS, reverse_lock_order: true) + end + end + + def down + add_concurrent_foreign_key(:project_repository_states, :projects, + name: FOREIGN_KEY_NAME_PROJECTS, column: :project_id, + target_column: :id, on_delete: :cascade) + end +end diff --git a/db/post_migrate/20240222000004_drop_project_repository_states_table.rb b/db/post_migrate/20240222000004_drop_project_repository_states_table.rb new file mode 100644 index 0000000000000..f9a140cd8eff4 --- /dev/null +++ b/db/post_migrate/20240222000004_drop_project_repository_states_table.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +class DropProjectRepositoryStatesTable < Gitlab::Database::Migration[2.2] + milestone '16.10' + + disable_ddl_transaction! + + def up + drop_table :project_repository_states, if_exists: true + end + + def down + return if table_exists?(:project_repository_states) + + create_table :project_repository_states, id: :integer do |t| + t.integer :project_id, null: false + t.binary :repository_verification_checksum, using: 'repository_verification_checksum::bytea' + t.binary :wiki_verification_checksum, using: 'wiki_verification_checksum::bytea' + t.string :last_repository_verification_failure + t.string :last_wiki_verification_failure + t.datetime_with_timezone :repository_retry_at + t.datetime_with_timezone :wiki_retry_at + t.integer :repository_retry_count + t.integer :wiki_retry_count + t.datetime_with_timezone :last_repository_verification_ran_at + t.datetime_with_timezone :last_wiki_verification_ran_at + t.datetime_with_timezone :last_repository_updated_at + t.datetime_with_timezone :last_wiki_updated_at + + t.index [:project_id, :last_repository_verification_ran_at], + name: :idx_repository_states_on_last_repository_verification_ran_at, + where: "(repository_verification_checksum IS NOT NULL) AND (last_repository_verification_failure IS NULL)" + + t.index [:project_id, :last_wiki_verification_ran_at], + name: :idx_repository_states_on_last_wiki_verification_ran_at, + where: "(wiki_verification_checksum IS NOT NULL) AND (last_wiki_verification_failure IS NULL)" + + t.index :last_repository_verification_failure, + name: :idx_repository_states_on_repository_failure_partial, + where: "last_repository_verification_failure IS NOT NULL" + + t.index :last_wiki_verification_failure, + name: :idx_repository_states_on_wiki_failure_partial, + where: "last_wiki_verification_failure IS NOT NULL" + + # rubocop:disable Layout/LineLength -- Where clause is just too long. + t.index :project_id, + name: :idx_repository_states_outdated_checksums, + where: "((repository_verification_checksum IS NULL) AND (last_repository_verification_failure IS NULL)) OR ((wiki_verification_checksum IS NULL) AND (last_wiki_verification_failure IS NULL))" + # rubocop:enable Layout/LineLength + + t.index :project_id, + name: :index_project_repository_states_on_project_id, + unique: true + end + end +end diff --git a/db/schema_migrations/20240222000003 b/db/schema_migrations/20240222000003 new file mode 100644 index 0000000000000..38c2465204c24 --- /dev/null +++ b/db/schema_migrations/20240222000003 @@ -0,0 +1 @@ +c8ce22627e708d6e9d1b967adc7ed83827a589069b729ec2a3f3abcd36af5867 \ No newline at end of file diff --git a/db/schema_migrations/20240222000004 b/db/schema_migrations/20240222000004 new file mode 100644 index 0000000000000..9caf000121a37 --- /dev/null +++ b/db/schema_migrations/20240222000004 @@ -0,0 +1 @@ +39f4d9aaf4a2d22f649fe1f0a75ef1fd4cdd9c0066d4e359c8375e8e301400b4 \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 3409e4cdadee0..93a97779afc2f 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -14161,32 +14161,6 @@ CREATE SEQUENCE project_repositories_id_seq ALTER SEQUENCE project_repositories_id_seq OWNED BY project_repositories.id; -CREATE TABLE project_repository_states ( - id integer NOT NULL, - project_id integer NOT NULL, - repository_verification_checksum bytea, - wiki_verification_checksum bytea, - last_repository_verification_failure character varying, - last_wiki_verification_failure character varying, - repository_retry_at timestamp with time zone, - wiki_retry_at timestamp with time zone, - repository_retry_count integer, - wiki_retry_count integer, - last_repository_verification_ran_at timestamp with time zone, - last_wiki_verification_ran_at timestamp with time zone, - last_repository_updated_at timestamp with time zone, - last_wiki_updated_at timestamp with time zone -); - -CREATE SEQUENCE project_repository_states_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - -ALTER SEQUENCE project_repository_states_id_seq OWNED BY project_repository_states.id; - CREATE TABLE project_repository_storage_moves ( id bigint NOT NULL, created_at timestamp with time zone NOT NULL, @@ -19237,8 +19211,6 @@ ALTER TABLE ONLY project_relation_exports ALTER COLUMN id SET DEFAULT nextval('p ALTER TABLE ONLY project_repositories ALTER COLUMN id SET DEFAULT nextval('project_repositories_id_seq'::regclass); -ALTER TABLE ONLY project_repository_states ALTER COLUMN id SET DEFAULT nextval('project_repository_states_id_seq'::regclass); - ALTER TABLE ONLY project_repository_storage_moves ALTER COLUMN id SET DEFAULT nextval('project_repository_storage_moves_id_seq'::regclass); ALTER TABLE ONLY project_security_settings ALTER COLUMN project_id SET DEFAULT nextval('project_security_settings_project_id_seq'::regclass); @@ -21668,9 +21640,6 @@ ALTER TABLE ONLY project_relation_exports ALTER TABLE ONLY project_repositories ADD CONSTRAINT project_repositories_pkey PRIMARY KEY (id); -ALTER TABLE ONLY project_repository_states - ADD CONSTRAINT project_repository_states_pkey PRIMARY KEY (id); - ALTER TABLE ONLY project_repository_storage_moves ADD CONSTRAINT project_repository_storage_moves_pkey PRIMARY KEY (id); @@ -23672,16 +23641,6 @@ CREATE UNIQUE INDEX idx_protected_branch_id_external_approval_rule_id ON externa CREATE INDEX idx_reminder_frequency_on_work_item_progresses ON work_item_progresses USING btree (reminder_frequency); -CREATE INDEX idx_repository_states_on_last_repository_verification_ran_at ON project_repository_states USING btree (project_id, last_repository_verification_ran_at) WHERE ((repository_verification_checksum IS NOT NULL) AND (last_repository_verification_failure IS NULL)); - -CREATE INDEX idx_repository_states_on_last_wiki_verification_ran_at ON project_repository_states USING btree (project_id, last_wiki_verification_ran_at) WHERE ((wiki_verification_checksum IS NOT NULL) AND (last_wiki_verification_failure IS NULL)); - -CREATE INDEX idx_repository_states_on_repository_failure_partial ON project_repository_states USING btree (last_repository_verification_failure) WHERE (last_repository_verification_failure IS NOT NULL); - -CREATE INDEX idx_repository_states_on_wiki_failure_partial ON project_repository_states USING btree (last_wiki_verification_failure) WHERE (last_wiki_verification_failure IS NOT NULL); - -CREATE INDEX idx_repository_states_outdated_checksums ON project_repository_states USING btree (project_id) WHERE (((repository_verification_checksum IS NULL) AND (last_repository_verification_failure IS NULL)) OR ((wiki_verification_checksum IS NULL) AND (last_wiki_verification_failure IS NULL))); - CREATE INDEX idx_sbom_occurr_on_project_component_version_input_file_path ON sbom_occurrences USING btree (project_id, component_version_id, input_file_path); CREATE INDEX idx_sbom_occurrences_on_project_id_and_source_id ON sbom_occurrences USING btree (project_id, source_id); @@ -26272,8 +26231,6 @@ CREATE INDEX index_project_repositories_on_shard_id ON project_repositories USIN CREATE INDEX index_project_repositories_on_shard_id_and_project_id ON project_repositories USING btree (shard_id, project_id); -CREATE UNIQUE INDEX index_project_repository_states_on_project_id ON project_repository_states USING btree (project_id); - CREATE INDEX index_project_repository_storage_moves_on_project_id ON project_repository_storage_moves USING btree (project_id); CREATE INDEX index_project_settings_on_legacy_os_license_project_id ON project_settings USING btree (project_id) WHERE (legacy_open_source_license_available = true); @@ -30546,9 +30503,6 @@ ALTER TABLE ONLY audit_events_google_cloud_logging_configurations ALTER TABLE ONLY geo_node_statuses ADD CONSTRAINT fk_rails_0ecc699c2a FOREIGN KEY (geo_node_id) REFERENCES geo_nodes(id) ON DELETE CASCADE; -ALTER TABLE ONLY project_repository_states - ADD CONSTRAINT fk_rails_0f2298ca8a FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; - ALTER TABLE ONLY user_synced_attributes_metadata ADD CONSTRAINT fk_rails_0f4aa0981f FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; -- GitLab