Ensure presence of resource_milestone_events.namespace_id and backfill existing records
What does this MR do and why?
Adds a sharding key and makes sure the AR model sets it in a before_validation callback. Schedules backfill for existing records
DB review
Query plans
Update batch for issue related milestone events
https://console.postgres.ai/gitlab/gitlab-production-main/sessions/36685/commands/112661
UPDATE
"resource_milestone_events"
SET
"namespace_id" = "issues"."namespace_id"
FROM
"issues"
WHERE
"resource_milestone_events"."issue_id" = "issues"."id"
AND "resource_milestone_events"."id" IN (
SELECT
"resource_milestone_events"."id"
FROM
"resource_milestone_events"
WHERE
"resource_milestone_events"."id" BETWEEN 1
AND 109
AND "resource_milestone_events"."id" >= 1
AND "resource_milestone_events"."id" < 109
)
Update batch for merge request related milestone events
https://console.postgres.ai/gitlab/gitlab-production-main/sessions/36685/commands/112662
UPDATE
"resource_milestone_events"
SET
"namespace_id" = "projects"."project_namespace_id"
FROM
"merge_requests"
INNER JOIN "projects" ON "merge_requests"."target_project_id" = "projects"."id"
WHERE
"resource_milestone_events"."merge_request_id" = "merge_requests"."id"
AND "resource_milestone_events"."id" IN (
SELECT
"resource_milestone_events"."id"
FROM
"resource_milestone_events"
WHERE
"resource_milestone_events"."id" BETWEEN 1
AND 109
AND "resource_milestone_events"."id" >= 1
AND "resource_milestone_events"."id" < 109
)
Migration output
UP
main: == [advisory_lock_connection] object_id: 131740, pg_backend_pid: 2985
main: == 20250224204225 AddRsourceMilestoneEventsShardingKey: migrating =============
main: -- add_column(:resource_milestone_events, :namespace_id, :bigint, {:null=>false, :default=>0})
main: -> 0.0033s
main: == 20250224204225 AddRsourceMilestoneEventsShardingKey: migrated (0.0068s) ====
main: == [advisory_lock_connection] object_id: 131740, pg_backend_pid: 2985
ci: == [advisory_lock_connection] object_id: 132060, pg_backend_pid: 2987
ci: == 20250224204225 AddRsourceMilestoneEventsShardingKey: migrating =============
ci: -- add_column(:resource_milestone_events, :namespace_id, :bigint, {:null=>false, :default=>0})
ci: -> 0.0029s
ci: == 20250224204225 AddRsourceMilestoneEventsShardingKey: migrated (0.0101s) ====
ci: == [advisory_lock_connection] object_id: 132060, pg_backend_pid: 2987
main: == [advisory_lock_connection] object_id: 132300, pg_backend_pid: 2990
main: == 20250225234245 IndexResourceMilestoneEventsIssueMergeRequestMissing: migrating
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main: -> 0.0070s
main: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :where=>"issue_id IS NULL AND merge_request_id IS NULL", :algorithm=>:concurrently})
main: -> 0.0025s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0003s
main: -- add_index(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :where=>"issue_id IS NULL AND merge_request_id IS NULL", :algorithm=>:concurrently})
main: -> 0.0013s
main: -- execute("RESET statement_timeout")
main: -> 0.0003s
main: == 20250225234245 IndexResourceMilestoneEventsIssueMergeRequestMissing: migrated (0.0220s)
main: == [advisory_lock_connection] object_id: 132300, pg_backend_pid: 2990
ci: == [advisory_lock_connection] object_id: 132460, pg_backend_pid: 2992
ci: == 20250225234245 IndexResourceMilestoneEventsIssueMergeRequestMissing: migrating
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- view_exists?(:postgres_partitions)
ci: -> 0.0004s
ci: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :where=>"issue_id IS NULL AND merge_request_id IS NULL", :algorithm=>:concurrently})
ci: -> 0.0024s
ci: -- execute("SET statement_timeout TO 0")
ci: -> 0.0003s
ci: -- add_index(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :where=>"issue_id IS NULL AND merge_request_id IS NULL", :algorithm=>:concurrently})
ci: -> 0.0011s
ci: -- execute("RESET statement_timeout")
ci: -> 0.0003s
ci: == 20250225234245 IndexResourceMilestoneEventsIssueMergeRequestMissing: migrated (0.0194s)
ci: == [advisory_lock_connection] object_id: 132460, pg_backend_pid: 2992
main: == [advisory_lock_connection] object_id: 132660, pg_backend_pid: 2995
main: == 20250225234322 CleanResourceMilestoneEventsWithoutParent: migrating ========
main: -- transaction_open?(nil)
main: -> 0.0000s
main: == 20250225234322 CleanResourceMilestoneEventsWithoutParent: migrated (0.0107s)
main: == [advisory_lock_connection] object_id: 132660, pg_backend_pid: 2995
ci: == [advisory_lock_connection] object_id: 132800, pg_backend_pid: 2997
ci: == 20250225234322 CleanResourceMilestoneEventsWithoutParent: migrating ========
ci: -- The migration is skipped since it modifies the schemas: [:gitlab_main].
ci: -- This database can only apply migrations in one of the following schemas: [:gitlab_ci, :gitlab_internal, :gitlab_shared].
ci: == 20250225234322 CleanResourceMilestoneEventsWithoutParent: migrated (0.0067s)
ci: == [advisory_lock_connection] object_id: 132800, pg_backend_pid: 2997
main: == [advisory_lock_connection] object_id: 133000, pg_backend_pid: 3001
main: == 20250225235323 IndexResourceMilestoneEventsIssueMergeRequestBothPresent: migrating
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main: -> 0.0004s
main: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :where=>"issue_id IS NOT NULL AND merge_request_id IS NOT NULL", :algorithm=>:concurrently})
main: -> 0.0026s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0003s
main: -- add_index(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :where=>"issue_id IS NOT NULL AND merge_request_id IS NOT NULL", :algorithm=>:concurrently})
main: -> 0.0014s
main: -- execute("RESET statement_timeout")
main: -> 0.0003s
main: == 20250225235323 IndexResourceMilestoneEventsIssueMergeRequestBothPresent: migrated (0.0121s)
main: == [advisory_lock_connection] object_id: 133000, pg_backend_pid: 3001
ci: == [advisory_lock_connection] object_id: 133120, pg_backend_pid: 3003
ci: == 20250225235323 IndexResourceMilestoneEventsIssueMergeRequestBothPresent: migrating
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- view_exists?(:postgres_partitions)
ci: -> 0.0004s
ci: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :where=>"issue_id IS NOT NULL AND merge_request_id IS NOT NULL", :algorithm=>:concurrently})
ci: -> 0.0027s
ci: -- execute("SET statement_timeout TO 0")
ci: -> 0.0003s
ci: -- add_index(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :where=>"issue_id IS NOT NULL AND merge_request_id IS NOT NULL", :algorithm=>:concurrently})
ci: -> 0.0012s
ci: -- execute("RESET statement_timeout")
ci: -> 0.0003s
ci: == 20250225235323 IndexResourceMilestoneEventsIssueMergeRequestBothPresent: migrated (0.0160s)
ci: == [advisory_lock_connection] object_id: 133120, pg_backend_pid: 3003
main: == [advisory_lock_connection] object_id: 133320, pg_backend_pid: 3006
main: == 20250225235324 CleanResourceMilestoneEventsWithTwoParents: migrating =======
main: -- transaction_open?(nil)
main: -> 0.0000s
main: == 20250225235324 CleanResourceMilestoneEventsWithTwoParents: migrated (0.0086s)
main: == [advisory_lock_connection] object_id: 133320, pg_backend_pid: 3006
ci: == [advisory_lock_connection] object_id: 133460, pg_backend_pid: 3008
ci: == 20250225235324 CleanResourceMilestoneEventsWithTwoParents: migrating =======
ci: -- The migration is skipped since it modifies the schemas: [:gitlab_main].
ci: -- This database can only apply migrations in one of the following schemas: [:gitlab_ci, :gitlab_internal, :gitlab_shared].
ci: == 20250225235324 CleanResourceMilestoneEventsWithTwoParents: migrated (0.0063s)
ci: == [advisory_lock_connection] object_id: 133460, pg_backend_pid: 3008
main: == [advisory_lock_connection] object_id: 133660, pg_backend_pid: 3011
main: == 20250225235325 AddResourceMilestoneEventsUniqueParentConstraint: migrating =
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- execute("ALTER TABLE resource_milestone_events\nADD CONSTRAINT check_fa0260b82e\nCHECK ( num_nonnulls(issue_id, merge_request_id) = 1 )\nNOT VALID;\n")
main: -> 0.0020s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0003s
main: -- execute("ALTER TABLE resource_milestone_events VALIDATE CONSTRAINT check_fa0260b82e;")
main: -> 0.0008s
main: -- execute("RESET statement_timeout")
main: -> 0.0003s
main: == 20250225235325 AddResourceMilestoneEventsUniqueParentConstraint: migrated (0.0142s)
main: == [advisory_lock_connection] object_id: 133660, pg_backend_pid: 3011
ci: == [advisory_lock_connection] object_id: 133820, pg_backend_pid: 3017
ci: == 20250225235325 AddResourceMilestoneEventsUniqueParentConstraint: migrating =
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- execute("ALTER TABLE resource_milestone_events\nADD CONSTRAINT check_fa0260b82e\nCHECK ( num_nonnulls(issue_id, merge_request_id) = 1 )\nNOT VALID;\n")
ci: -> 0.0017s
ci: -- execute("SET statement_timeout TO 0")
ci: -> 0.0003s
ci: -- execute("ALTER TABLE resource_milestone_events VALIDATE CONSTRAINT check_fa0260b82e;")
ci: -> 0.0006s
ci: -- execute("RESET statement_timeout")
ci: -> 0.0003s
ci: == 20250225235325 AddResourceMilestoneEventsUniqueParentConstraint: migrated (0.0151s)
ci: == [advisory_lock_connection] object_id: 133820, pg_backend_pid: 3017
main: == [advisory_lock_connection] object_id: 134060, pg_backend_pid: 3020
main: == 20250225235326 DropTempIndexResourceMilestoneEventsParentBothPresent: migrating
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main: -> 0.0004s
main: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :algorithm=>:concurrently})
main: -> 0.0028s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0003s
main: -- remove_index(:resource_milestone_events, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :algorithm=>:concurrently, :column=>:id})
main: -> 0.0034s
main: -- execute("RESET statement_timeout")
main: -> 0.0003s
main: == 20250225235326 DropTempIndexResourceMilestoneEventsParentBothPresent: migrated (0.0145s)
main: == [advisory_lock_connection] object_id: 134060, pg_backend_pid: 3020
ci: == [advisory_lock_connection] object_id: 134180, pg_backend_pid: 3022
ci: == 20250225235326 DropTempIndexResourceMilestoneEventsParentBothPresent: migrating
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- view_exists?(:postgres_partitions)
ci: -> 0.0004s
ci: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :algorithm=>:concurrently})
ci: -> 0.0028s
ci: -- execute("SET statement_timeout TO 0")
ci: -> 0.0003s
ci: -- remove_index(:resource_milestone_events, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :algorithm=>:concurrently, :column=>:id})
ci: -> 0.0029s
ci: -- execute("RESET statement_timeout")
ci: -> 0.0003s
ci: == 20250225235326 DropTempIndexResourceMilestoneEventsParentBothPresent: migrated (0.0219s)
ci: == [advisory_lock_connection] object_id: 134180, pg_backend_pid: 3022
main: == [advisory_lock_connection] object_id: 134380, pg_backend_pid: 3025
main: == 20250225235327 DropTempIndexResourceMilestoneEventsParentBothMissing: migrating
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main: -> 0.0003s
main: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :algorithm=>:concurrently})
main: -> 0.0024s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0003s
main: -- remove_index(:resource_milestone_events, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :algorithm=>:concurrently, :column=>:id})
main: -> 0.0026s
main: -- execute("RESET statement_timeout")
main: -> 0.0003s
main: == 20250225235327 DropTempIndexResourceMilestoneEventsParentBothMissing: migrated (0.0130s)
main: == [advisory_lock_connection] object_id: 134380, pg_backend_pid: 3025
ci: == [advisory_lock_connection] object_id: 134500, pg_backend_pid: 3027
ci: == 20250225235327 DropTempIndexResourceMilestoneEventsParentBothMissing: migrating
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- view_exists?(:postgres_partitions)
ci: -> 0.0004s
ci: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :algorithm=>:concurrently})
ci: -> 0.0026s
ci: -- execute("SET statement_timeout TO 0")
ci: -> 0.0003s
ci: -- remove_index(:resource_milestone_events, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :algorithm=>:concurrently, :column=>:id})
ci: -> 0.0053s
ci: -- execute("RESET statement_timeout")
ci: -> 0.0003s
ci: == 20250225235327 DropTempIndexResourceMilestoneEventsParentBothMissing: migrated (0.0205s)
ci: == [advisory_lock_connection] object_id: 134500, pg_backend_pid: 3027
main: == [advisory_lock_connection] object_id: 134700, pg_backend_pid: 3030
main: == 20250225235328 IndexResourceMilestoneEventsOnNamespaceId: migrating ========
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main: -> 0.0004s
main: -- index_exists?(:resource_milestone_events, :namespace_id, {:name=>"idx_resource_milestone_events_on_namespace_id", :algorithm=>:concurrently})
main: -> 0.0024s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0003s
main: -- add_index(:resource_milestone_events, :namespace_id, {:name=>"idx_resource_milestone_events_on_namespace_id", :algorithm=>:concurrently})
main: -> 0.0017s
main: -- execute("RESET statement_timeout")
main: -> 0.0003s
main: == 20250225235328 IndexResourceMilestoneEventsOnNamespaceId: migrated (0.0125s)
main: == [advisory_lock_connection] object_id: 134700, pg_backend_pid: 3030
ci: == [advisory_lock_connection] object_id: 134820, pg_backend_pid: 3032
ci: == 20250225235328 IndexResourceMilestoneEventsOnNamespaceId: migrating ========
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- view_exists?(:postgres_partitions)
ci: -> 0.0004s
ci: -- index_exists?(:resource_milestone_events, :namespace_id, {:name=>"idx_resource_milestone_events_on_namespace_id", :algorithm=>:concurrently})
ci: -> 0.0025s
ci: -- execute("SET statement_timeout TO 0")
ci: -> 0.0003s
ci: -- add_index(:resource_milestone_events, :namespace_id, {:name=>"idx_resource_milestone_events_on_namespace_id", :algorithm=>:concurrently})
ci: -> 0.0014s
ci: -- execute("RESET statement_timeout")
ci: -> 0.0003s
ci: == 20250225235328 IndexResourceMilestoneEventsOnNamespaceId: migrated (0.0163s)
ci: == [advisory_lock_connection] object_id: 134820, pg_backend_pid: 3032
main: == [advisory_lock_connection] object_id: 135020, pg_backend_pid: 3035
main: == 20250225235329 AddInvalidFkToResourceMilestoneEventsNamespaceId: migrating =
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- execute("LOCK TABLE namespaces, resource_milestone_events IN SHARE ROW EXCLUSIVE MODE")
main: -> 0.0004s
main: -- execute("ALTER TABLE resource_milestone_events ADD CONSTRAINT fk_2867e9284c FOREIGN KEY (namespace_id) REFERENCES namespaces (id) ON DELETE CASCADE NOT VALID;")
main: -> 0.0064s
main: == 20250225235329 AddInvalidFkToResourceMilestoneEventsNamespaceId: migrated (0.0232s)
main: == [advisory_lock_connection] object_id: 135020, pg_backend_pid: 3035
ci: == [advisory_lock_connection] object_id: 135240, pg_backend_pid: 3037
ci: == 20250225235329 AddInvalidFkToResourceMilestoneEventsNamespaceId: migrating =
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- execute("LOCK TABLE namespaces, resource_milestone_events IN SHARE ROW EXCLUSIVE MODE")
ci: -> 0.0004s
ci: -- execute("ALTER TABLE resource_milestone_events ADD CONSTRAINT fk_2867e9284c FOREIGN KEY (namespace_id) REFERENCES namespaces (id) ON DELETE CASCADE NOT VALID;")
ci: -> 0.0035s
ci: == 20250225235329 AddInvalidFkToResourceMilestoneEventsNamespaceId: migrated (0.0237s)
ci: == [advisory_lock_connection] object_id: 135240, pg_backend_pid: 3037
main: == [advisory_lock_connection] object_id: 135520, pg_backend_pid: 3040
main: == 20250225235330 QueueBackfillResourceMilestoneEventsNamespace: migrating ====
main: == 20250225235330 QueueBackfillResourceMilestoneEventsNamespace: migrated (0.0338s)
main: == [advisory_lock_connection] object_id: 135520, pg_backend_pid: 3040
ci: == [advisory_lock_connection] object_id: 135880, pg_backend_pid: 3042
ci: == 20250225235330 QueueBackfillResourceMilestoneEventsNamespace: migrating ====
ci: -- The migration is skipped since it modifies the schemas: [:gitlab_main].
ci: -- This database can only apply migrations in one of the following schemas: [:gitlab_ci, :gitlab_internal, :gitlab_shared].
ci: == 20250225235330 QueueBackfillResourceMilestoneEventsNamespace: migrated (0.0068s)
ci: == [advisory_lock_connection] object_id: 135880, pg_backend_pid: 3042
DOWN
main: == [advisory_lock_connection] object_id: 131440, pg_backend_pid: 2656
main: == 20250225235330 QueueBackfillResourceMilestoneEventsNamespace: reverting ====
main: == 20250225235330 QueueBackfillResourceMilestoneEventsNamespace: reverted (0.0515s)
main: == 20250225235329 AddInvalidFkToResourceMilestoneEventsNamespaceId: reverting =
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- remove_foreign_key(:resource_milestone_events, {:column=>:namespace_id})
main: -> 0.0085s
main: == 20250225235329 AddInvalidFkToResourceMilestoneEventsNamespaceId: reverted (0.0370s)
main: == 20250225235328 IndexResourceMilestoneEventsOnNamespaceId: reverting ========
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main: -> 0.0003s
main: -- index_exists?(:resource_milestone_events, :namespace_id, {:name=>"idx_resource_milestone_events_on_namespace_id", :algorithm=>:concurrently})
main: -> 0.0027s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0003s
main: -- remove_index(:resource_milestone_events, {:name=>"idx_resource_milestone_events_on_namespace_id", :algorithm=>:concurrently, :column=>:namespace_id})
main: -> 0.0033s
main: -- execute("RESET statement_timeout")
main: -> 0.0003s
main: == 20250225235328 IndexResourceMilestoneEventsOnNamespaceId: reverted (0.0171s)
main: == 20250225235327 DropTempIndexResourceMilestoneEventsParentBothMissing: reverting
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main: -> 0.0003s
main: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :where=>"issue_id IS NULL AND merge_request_id IS NULL", :algorithm=>:concurrently})
main: -> 0.0016s
main: -- add_index(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :where=>"issue_id IS NULL AND merge_request_id IS NULL", :algorithm=>:concurrently})
main: -> 0.0038s
main: == 20250225235327 DropTempIndexResourceMilestoneEventsParentBothMissing: reverted (0.0118s)
main: == 20250225235326 DropTempIndexResourceMilestoneEventsParentBothPresent: reverting
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main: -> 0.0003s
main: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :where=>"issue_id IS NOT NULL AND merge_request_id IS NOT NULL", :algorithm=>:concurrently})
main: -> 0.0019s
main: -- add_index(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :where=>"issue_id IS NOT NULL AND merge_request_id IS NOT NULL", :algorithm=>:concurrently})
main: -> 0.0008s
main: == 20250225235326 DropTempIndexResourceMilestoneEventsParentBothPresent: reverted (0.0091s)
main: == 20250225235325 AddResourceMilestoneEventsUniqueParentConstraint: reverting =
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- execute(" ALTER TABLE resource_milestone_events\n DROP CONSTRAINT IF EXISTS check_fa0260b82e\n")
main: -> 0.0004s
main: == 20250225235325 AddResourceMilestoneEventsUniqueParentConstraint: reverted (0.0042s)
main: == 20250225235324 CleanResourceMilestoneEventsWithTwoParents: reverting =======
main: == 20250225235324 CleanResourceMilestoneEventsWithTwoParents: reverted (0.0023s)
main: == 20250225235323 IndexResourceMilestoneEventsIssueMergeRequestBothPresent: reverting
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main: -> 0.0003s
main: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :algorithm=>:concurrently})
main: -> 0.0021s
main: -- remove_index(:resource_milestone_events, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :algorithm=>:concurrently, :column=>:id})
main: -> 0.0025s
main: == 20250225235323 IndexResourceMilestoneEventsIssueMergeRequestBothPresent: reverted (0.0108s)
main: == 20250225234322 CleanResourceMilestoneEventsWithoutParent: reverting ========
main: == 20250225234322 CleanResourceMilestoneEventsWithoutParent: reverted (0.0022s)
main: == 20250225234245 IndexResourceMilestoneEventsIssueMergeRequestMissing: reverting
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main: -> 0.0003s
main: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :algorithm=>:concurrently})
main: -> 0.0017s
main: -- remove_index(:resource_milestone_events, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :algorithm=>:concurrently, :column=>:id})
main: -> 0.0022s
main: == 20250225234245 IndexResourceMilestoneEventsIssueMergeRequestMissing: reverted (0.0101s)
main: == [advisory_lock_connection] object_id: 131440, pg_backend_pid: 2656
ci: == [advisory_lock_connection] object_id: 132240, pg_backend_pid: 2725
ci: == 20250225235330 QueueBackfillResourceMilestoneEventsNamespace: reverting ====
ci: -- The migration is skipped since it modifies the schemas: [:gitlab_main].
ci: -- This database can only apply migrations in one of the following schemas: [:gitlab_ci, :gitlab_internal, :gitlab_shared].
ci: == 20250225235330 QueueBackfillResourceMilestoneEventsNamespace: reverted (0.0077s)
ci: == 20250225235329 AddInvalidFkToResourceMilestoneEventsNamespaceId: reverting =
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- remove_foreign_key(:resource_milestone_events, {:column=>:namespace_id})
ci: -> 0.0032s
ci: == 20250225235329 AddInvalidFkToResourceMilestoneEventsNamespaceId: reverted (0.0269s)
ci: == 20250225235328 IndexResourceMilestoneEventsOnNamespaceId: reverting ========
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- view_exists?(:postgres_partitions)
ci: -> 0.0004s
ci: -- index_exists?(:resource_milestone_events, :namespace_id, {:name=>"idx_resource_milestone_events_on_namespace_id", :algorithm=>:concurrently})
ci: -> 0.0032s
ci: -- execute("SET statement_timeout TO 0")
ci: -> 0.0005s
ci: -- remove_index(:resource_milestone_events, {:name=>"idx_resource_milestone_events_on_namespace_id", :algorithm=>:concurrently, :column=>:namespace_id})
ci: -> 0.0037s
ci: -- execute("RESET statement_timeout")
ci: -> 0.0007s
ci: == 20250225235328 IndexResourceMilestoneEventsOnNamespaceId: reverted (0.0284s)
ci: == 20250225235327 DropTempIndexResourceMilestoneEventsParentBothMissing: reverting
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- view_exists?(:postgres_partitions)
ci: -> 0.0003s
ci: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :where=>"issue_id IS NULL AND merge_request_id IS NULL", :algorithm=>:concurrently})
ci: -> 0.0022s
ci: -- add_index(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :where=>"issue_id IS NULL AND merge_request_id IS NULL", :algorithm=>:concurrently})
ci: -> 0.0036s
ci: == 20250225235327 DropTempIndexResourceMilestoneEventsParentBothMissing: reverted (0.0181s)
ci: == 20250225235326 DropTempIndexResourceMilestoneEventsParentBothPresent: reverting
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- view_exists?(:postgres_partitions)
ci: -> 0.0003s
ci: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :where=>"issue_id IS NOT NULL AND merge_request_id IS NOT NULL", :algorithm=>:concurrently})
ci: -> 0.0027s
ci: -- add_index(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :where=>"issue_id IS NOT NULL AND merge_request_id IS NOT NULL", :algorithm=>:concurrently})
ci: -> 0.0009s
ci: == 20250225235326 DropTempIndexResourceMilestoneEventsParentBothPresent: reverted (0.0157s)
ci: == 20250225235325 AddResourceMilestoneEventsUniqueParentConstraint: reverting =
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- execute(" ALTER TABLE resource_milestone_events\n DROP CONSTRAINT IF EXISTS check_fa0260b82e\n")
ci: -> 0.0073s
ci: == 20250225235325 AddResourceMilestoneEventsUniqueParentConstraint: reverted (0.0168s)
ci: == 20250225235324 CleanResourceMilestoneEventsWithTwoParents: reverting =======
ci: -- The migration is skipped since it modifies the schemas: [:gitlab_main].
ci: -- This database can only apply migrations in one of the following schemas: [:gitlab_ci, :gitlab_internal, :gitlab_shared].
ci: == 20250225235324 CleanResourceMilestoneEventsWithTwoParents: reverted (0.0076s)
ci: == 20250225235323 IndexResourceMilestoneEventsIssueMergeRequestBothPresent: reverting
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- view_exists?(:postgres_partitions)
ci: -> 0.0004s
ci: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :algorithm=>:concurrently})
ci: -> 0.0020s
ci: -- remove_index(:resource_milestone_events, {:name=>"tmp_idx_resource_milestone_events_issue_mr_both_present", :algorithm=>:concurrently, :column=>:id})
ci: -> 0.0032s
ci: == 20250225235323 IndexResourceMilestoneEventsIssueMergeRequestBothPresent: reverted (0.0166s)
ci: == 20250225234322 CleanResourceMilestoneEventsWithoutParent: reverting ========
ci: -- The migration is skipped since it modifies the schemas: [:gitlab_main].
ci: -- This database can only apply migrations in one of the following schemas: [:gitlab_ci, :gitlab_internal, :gitlab_shared].
ci: == 20250225234322 CleanResourceMilestoneEventsWithoutParent: reverted (0.0071s)
ci: == 20250225234245 IndexResourceMilestoneEventsIssueMergeRequestMissing: reverting
ci: -- transaction_open?(nil)
ci: -> 0.0000s
ci: -- view_exists?(:postgres_partitions)
ci: -> 0.0004s
ci: -- index_exists?(:resource_milestone_events, :id, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :algorithm=>:concurrently})
ci: -> 0.0021s
ci: -- remove_index(:resource_milestone_events, {:name=>"tmp_idx_resource_milestone_events_issue_mr_missing", :algorithm=>:concurrently, :column=>:id})
ci: -> 0.0024s
ci: == 20250225234245 IndexResourceMilestoneEventsIssueMergeRequestMissing: reverted (0.0154s)
ci: == [advisory_lock_connection] object_id: 132240, pg_backend_pid: 2725
main: == [advisory_lock_connection] object_id: 131420, pg_backend_pid: 2813
main: == 20250224204225 AddRsourceMilestoneEventsShardingKey: reverting =============
main: -- remove_column(:resource_milestone_events, :namespace_id, :bigint, {:null=>false, :default=>0})
main: -> 0.0018s
main: == 20250224204225 AddRsourceMilestoneEventsShardingKey: reverted (0.0081s) ====
main: == [advisory_lock_connection] object_id: 131420, pg_backend_pid: 2813
ci: == [advisory_lock_connection] object_id: 131980, pg_backend_pid: 2842
ci: == 20250224204225 AddRsourceMilestoneEventsShardingKey: reverting =============
ci: -- remove_column(:resource_milestone_events, :namespace_id, :bigint, {:null=>false, :default=>0})
ci: -> 0.0028s
ci: == 20250224204225 AddRsourceMilestoneEventsShardingKey: reverted (0.0174s) ====
ci: == [advisory_lock_connection] object_id: 131980, pg_backend_pid: 2842
MR acceptance checklist
Please 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 #514593 (closed)
Edited by Mario Celi