summaryrefslogtreecommitdiff
path: root/db/post_migrate/20220329175119_remove_leftover_ci_job_artifact_deletions.rb
diff options
context:
space:
mode:
Diffstat (limited to 'db/post_migrate/20220329175119_remove_leftover_ci_job_artifact_deletions.rb')
-rw-r--r--db/post_migrate/20220329175119_remove_leftover_ci_job_artifact_deletions.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/db/post_migrate/20220329175119_remove_leftover_ci_job_artifact_deletions.rb b/db/post_migrate/20220329175119_remove_leftover_ci_job_artifact_deletions.rb
new file mode 100644
index 00000000000..f0c09598bfb
--- /dev/null
+++ b/db/post_migrate/20220329175119_remove_leftover_ci_job_artifact_deletions.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+class RemoveLeftoverCiJobArtifactDeletions < Gitlab::Database::Migration[1.0]
+ disable_ddl_transaction!
+
+ def up
+ # Delete all pending record deletions in the public.ci_job_artifacts until
+ # there are no more rows left.
+ loop do
+ result = execute <<~SQL
+ DELETE FROM "loose_foreign_keys_deleted_records"
+ WHERE
+ ("loose_foreign_keys_deleted_records"."partition", "loose_foreign_keys_deleted_records"."id") IN (
+ SELECT "loose_foreign_keys_deleted_records"."partition", "loose_foreign_keys_deleted_records"."id"
+ FROM "loose_foreign_keys_deleted_records"
+ WHERE
+ "loose_foreign_keys_deleted_records"."fully_qualified_table_name" = 'public.ci_job_artifacts' AND
+ "loose_foreign_keys_deleted_records"."status" = 1
+ LIMIT 100
+ )
+ SQL
+
+ break if result.cmd_tuples == 0
+ end
+ end
+
+ def down
+ # no-op
+ end
+end