Skip to content

Cargo Registry MVC: Database and Schema Changes

What does this MR do and why?

This MR introduces the database tables required to store the cargo metadata. This new table stores the normalized name, normalized version and the manifest required by the cargo.

Related to #33060 (comment 2475213018)

💾 Database Review

Up migration
main: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 58353
main: == 20250715181137 AddCargoMaxFileSizeToPlanLimit: migrating ===================
main: -- add_column(:plan_limits, :cargo_max_file_size, :bigint, {:default=>5368709120, :null=>false})
main:    -> 0.0043s
main: == 20250715181137 AddCargoMaxFileSizeToPlanLimit: migrated (0.0095s) ==========

main: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 58353
ci: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 58470
ci: == 20250715181137 AddCargoMaxFileSizeToPlanLimit: migrating ===================
ci: -- add_column(:plan_limits, :cargo_max_file_size, :bigint, {:default=>5368709120, :null=>false})
ci:    -> 0.0045s
ci: == 20250715181137 AddCargoMaxFileSizeToPlanLimit: migrated (0.0139s) ==========

ci: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 58470
main: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 58553
main: == 20250729100053 AddCargoMetadataTableAndIndex: migrating ====================
main: -- create_table(:packages_cargo_metadata, {:id=>false})
main: -- quote_column_name(:normalized_name)
main:    -> 0.0000s
main: -- quote_column_name(:normalized_version)
main:    -> 0.0000s
main:    -> 0.0137s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main:    -> 0.0284s
main: -- index_exists?(:packages_cargo_metadata, [:project_id, :normalized_name, :normalized_version], {:unique=>true, :name=>"index_cargo_metadata_on_project_normalized_name_version", :algorithm=>:concurrently})
main:    -> 0.0020s
main: -- execute("SET statement_timeout TO 0")
main:    -> 0.0005s
main: -- add_index(:packages_cargo_metadata, [:project_id, :normalized_name, :normalized_version], {:unique=>true, :name=>"index_cargo_metadata_on_project_normalized_name_version", :algorithm=>:concurrently})
main:    -> 0.0016s
main: -- execute("RESET statement_timeout")
main:    -> 0.0004s
main: == 20250729100053 AddCargoMetadataTableAndIndex: migrated (0.0637s) ===========

main: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 58553
ci: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 58632
ci: == 20250729100053 AddCargoMetadataTableAndIndex: migrating ====================
ci: -- create_table(:packages_cargo_metadata, {:id=>false})
ci: -- quote_column_name(:normalized_name)
ci:    -> 0.0000s
ci: -- quote_column_name(:normalized_version)
ci:    -> 0.0000s
ci:    -> 0.0135s
ci: -- transaction_open?(nil)
ci:    -> 0.0000s
ci: -- view_exists?(:postgres_partitions)
ci:    -> 0.0279s
ci: -- index_exists?(:packages_cargo_metadata, [:project_id, :normalized_name, :normalized_version], {:unique=>true, :name=>"index_cargo_metadata_on_project_normalized_name_version", :algorithm=>:concurrently})
ci:    -> 0.0019s
ci: -- execute("SET statement_timeout TO 0")
ci:    -> 0.0005s
ci: -- add_index(:packages_cargo_metadata, [:project_id, :normalized_name, :normalized_version], {:unique=>true, :name=>"index_cargo_metadata_on_project_normalized_name_version", :algorithm=>:concurrently})
ci:    -> 0.0017s
ci: -- execute("RESET statement_timeout")
ci:    -> 0.0004s
I, [2025-08-20T21:11:43.751515 #58575]  INFO -- : Database: 'ci', Table: 'packages_cargo_metadata': Lock Writes
I, [2025-08-20T21:11:43.759053 #58575]  INFO -- : {:method=>"with_lock_retries", :class=>"gitlab:db:lock_writes", :message=>"Lock timeout is set", :current_iteration=>1, :lock_timeout_in_ms=>100}
I, [2025-08-20T21:11:43.760504 #58575]  INFO -- : {:method=>"with_lock_retries", :class=>"gitlab:db:lock_writes", :message=>"Migration finished", :current_iteration=>1, :lock_timeout_in_ms=>100}
ci: == 20250729100053 AddCargoMetadataTableAndIndex: migrated (0.0814s) ===========

ci: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 58632
Down migration
main: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 57843
main: == 20250715181137 AddCargoMaxFileSizeToPlanLimit: reverting ===================
main: -- remove_column(:plan_limits, :cargo_max_file_size, {:if_exists=>true})
main:    -> 0.0351s
main: == 20250715181137 AddCargoMaxFileSizeToPlanLimit: reverted (0.0409s) ==========

main: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 57843
ci: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 57924
ci: == 20250715181137 AddCargoMaxFileSizeToPlanLimit: reverting ===================
ci: -- remove_column(:plan_limits, :cargo_max_file_size, {:if_exists=>true})
ci:    -> 0.0366s
ci: == 20250715181137 AddCargoMaxFileSizeToPlanLimit: reverted (0.0462s) ==========

ci: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 57924
main: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 57990
main: == 20250729100053 AddCargoMetadataTableAndIndex: reverting ====================
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main:    -> 0.0250s
main: -- index_exists?(:packages_cargo_metadata, [:project_id, :normalized_name, :normalized_version], {:name=>"index_cargo_metadata_on_project_normalized_name_version", :algorithm=>:concurrently})
main:    -> 0.0028s
main: -- execute("SET statement_timeout TO 0")
main:    -> 0.0006s
main: -- remove_index(:packages_cargo_metadata, {:name=>"index_cargo_metadata_on_project_normalized_name_version", :algorithm=>:concurrently, :column=>[:project_id, :normalized_name, :normalized_version]})
main:    -> 0.0050s
main: -- execute("RESET statement_timeout")
main:    -> 0.0006s
main: -- drop_table(:packages_cargo_metadata)
main:    -> 0.0052s
main: == 20250729100053 AddCargoMetadataTableAndIndex: reverted (0.0586s) ===========

main: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 57990
ci: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 58069
ci: == 20250729100053 AddCargoMetadataTableAndIndex: reverting ====================
ci: -- transaction_open?(nil)
ci:    -> 0.0000s
ci: -- view_exists?(:postgres_partitions)
ci:    -> 0.0239s
ci: -- index_exists?(:packages_cargo_metadata, [:project_id, :normalized_name, :normalized_version], {:name=>"index_cargo_metadata_on_project_normalized_name_version", :algorithm=>:concurrently})
ci:    -> 0.0029s
ci: -- execute("SET statement_timeout TO 0")
ci:    -> 0.0004s
ci: -- remove_index(:packages_cargo_metadata, {:name=>"index_cargo_metadata_on_project_normalized_name_version", :algorithm=>:concurrently, :column=>[:project_id, :normalized_name, :normalized_version]})
ci:    -> 0.0041s
ci: -- execute("RESET statement_timeout")
ci:    -> 0.0004s
ci: -- drop_table(:packages_cargo_metadata)
ci:    -> 0.0042s
ci: == 20250729100053 AddCargoMetadataTableAndIndex: reverted (0.0578s) ===========

ci: == [advisory_lock_connection] object_id: 147420, pg_backend_pid: 58069
Edited by Radamanthus Batnag

Merge request reports

Loading