Create packages_helm_metadata_cache_registry migration
🛠️ What does this MR do and why?
Helm Metadata Cache Geo support is required for GA of the Helm Chart Registry, ensuring that metadata caches are properly replicated and verified across Geo-distributed GitLab instances.
This MR introduces database migrations and schema changes to support Helm Metadata Cache Geo replication and verification.
It creates two new tables:
packages_helm_metadata_cache_statespackages_helm_metadata_cache_registry
This MR is part of the whole Helm metadata cache Geo support. The work is split into the following MRs:
-
Database migration - Create necessary tables and schema
👈🏻 This MR - Model changes - Add Geo models, Registry, Replicator, and feature flags
- Documentation updates - Update API docs and monitoring metrics
- GraphQL API - Add GraphQL mutations/queries for Helm Metadata Cache management
- Batch destroy handling - Implement batch destruction logic for Helm Metadata Caches
🗄️ Database migrations
Main: CreatePackagesHelmMetadataCacheStates
⬆️ : Migration up
$ gdk rails db:migrate:up:main VERSION=20251212161435 1 err | 8s
main: == [advisory_lock_connection] object_id: 132180, pg_backend_pid: 25210
main: == 20251212161435 CreatePackagesHelmMetadataCacheStates: migrating ============
main: -- create_table(:packages_helm_metadata_cache_states)
main: -- quote_column_name(:verification_failure)
main: -> 0.0000s
main: -> 0.0806s
main: == 20251212161435 CreatePackagesHelmMetadataCacheStates: migrated (0.1247s) ===
main: == [advisory_lock_connection] object_id: 132180, pg_backend_pid: 25210
⬇️ Migration down
$ gdk rails db:migrate:down:main VERSION=20251212161435 1 err | 15s
main: == [advisory_lock_connection] object_id: 132160, pg_backend_pid: 21842
main: == 20251212161435 CreatePackagesHelmMetadataCacheStates: reverting ============
main: -- drop_table(:packages_helm_metadata_cache_states)
main: -> 0.0358s
main: == 20251212161435 CreatePackagesHelmMetadataCacheStates: reverted (0.0620s) ===
main: == [advisory_lock_connection] object_id: 132160, pg_backend_pid: 21842
Geo: CreatePackagesHelmMetadataCacheRegistry
⬆️ : Migration up
$ gdk rails db:migrate:down:geo VERSION=20251212135348 ok | 24s
geo: == [advisory_lock_connection] object_id: 132180, pg_backend_pid: 27321
geo: == 20251212135348 CreatePackagesHelmMetadataCacheRegistry: reverting ==========
geo: -- drop_table(:packages_helm_metadata_cache_registry, {:id=>:bigserial, :force=>:cascade})
geo: -> 0.0342s
geo: == 20251212135348 CreatePackagesHelmMetadataCacheRegistry: reverted (0.0617s) =
geo: == [advisory_lock_connection] object_id: 132180, pg_backend_pid: 27321
⬇️ Migration down
$ gdk rails db:migrate:up:geo VERSION=20251212135348 ok | 21s
geo: == [advisory_lock_connection] object_id: 132180, pg_backend_pid: 28950
geo: == 20251212135348 CreatePackagesHelmMetadataCacheRegistry: migrating ==========
geo: -- create_table(:packages_helm_metadata_cache_registry, {:id=>:bigserial, :force=>:cascade})
geo: -- quote_column_name(:verification_failure)
geo: -> 0.0000s
geo: -- quote_column_name(:last_sync_failure)
geo: -> 0.0000s
geo: -> 0.0579s
geo: == 20251212135348 CreatePackagesHelmMetadataCacheRegistry: migrated (0.0822s) =
geo: == [advisory_lock_connection] object_id: 132180, pg_backend_pid: 28950
References
- Promote Helm Chart Registry from Beta to Genera... (#573715 - closed) • Unassigned • 18.11 • At risk
Screenshots or screen recordings
N/A
How to set up and validate locally
- Switch to this branch
582314-helm-metadata-cache-db-migration - Run migration separately
gdk rails db:migrate:up:main VERSION=20251212161435 gdk rails db:migrate:up:geo VERSION=20251212135348
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Related to #582314 (closed)