Merge branch 'fix-more-orphans-remove-undeleted-groups' into 'master'
Remove more orphans when removing stray namespaces Closes #25146 See merge request !7841
This commit is contained in:
commit
6688d695ca
2 changed files with 76 additions and 24 deletions
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
title: Remove extra orphaned rows when removing stray namespaces
|
||||||
|
merge_request: 7841
|
||||||
|
author:
|
|
@ -5,47 +5,87 @@ class RemoveUndeletedGroups < ActiveRecord::Migration
|
||||||
DOWNTIME = false
|
DOWNTIME = false
|
||||||
|
|
||||||
def up
|
def up
|
||||||
|
is_ee = defined?(Gitlab::License)
|
||||||
|
|
||||||
|
if is_ee
|
||||||
execute <<-EOF.strip_heredoc
|
execute <<-EOF.strip_heredoc
|
||||||
DELETE FROM projects
|
DELETE FROM path_locks
|
||||||
WHERE namespace_id IN (
|
WHERE project_id IN (
|
||||||
SELECT id FROM (
|
SELECT project_id
|
||||||
SELECT id
|
FROM projects
|
||||||
FROM namespaces
|
WHERE namespace_id IN (#{namespaces_pending_removal})
|
||||||
WHERE deleted_at IS NOT NULL
|
|
||||||
) namespace_ids
|
|
||||||
);
|
);
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if defined?(Gitlab::License)
|
execute <<-EOF.strip_heredoc
|
||||||
|
DELETE FROM remote_mirrors
|
||||||
|
WHERE project_id IN (
|
||||||
|
SELECT project_id
|
||||||
|
FROM projects
|
||||||
|
WHERE namespace_id IN (#{namespaces_pending_removal})
|
||||||
|
);
|
||||||
|
EOF
|
||||||
|
end
|
||||||
|
|
||||||
|
execute <<-EOF.strip_heredoc
|
||||||
|
DELETE FROM lists
|
||||||
|
WHERE label_id IN (
|
||||||
|
SELECT id
|
||||||
|
FROM labels
|
||||||
|
WHERE group_id IN (#{namespaces_pending_removal})
|
||||||
|
);
|
||||||
|
EOF
|
||||||
|
|
||||||
|
execute <<-EOF.strip_heredoc
|
||||||
|
DELETE FROM lists
|
||||||
|
WHERE board_id IN (
|
||||||
|
SELECT id
|
||||||
|
FROM boards
|
||||||
|
WHERE project_id IN (
|
||||||
|
SELECT project_id
|
||||||
|
FROM projects
|
||||||
|
WHERE namespace_id IN (#{namespaces_pending_removal})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
EOF
|
||||||
|
|
||||||
|
execute <<-EOF.strip_heredoc
|
||||||
|
DELETE FROM labels
|
||||||
|
WHERE group_id IN (#{namespaces_pending_removal});
|
||||||
|
EOF
|
||||||
|
|
||||||
|
execute <<-EOF.strip_heredoc
|
||||||
|
DELETE FROM boards
|
||||||
|
WHERE project_id IN (
|
||||||
|
SELECT project_id
|
||||||
|
FROM projects
|
||||||
|
WHERE namespace_id IN (#{namespaces_pending_removal})
|
||||||
|
)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
execute <<-EOF.strip_heredoc
|
||||||
|
DELETE FROM projects
|
||||||
|
WHERE namespace_id IN (#{namespaces_pending_removal});
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if is_ee
|
||||||
# EE adds these columns but we have to make sure this data is cleaned up
|
# EE adds these columns but we have to make sure this data is cleaned up
|
||||||
# here before we run the DELETE below. An alternative would be patching
|
# here before we run the DELETE below. An alternative would be patching
|
||||||
# this migration in EE but this will only result in a mess and confusing
|
# this migration in EE but this will only result in a mess and confusing
|
||||||
# migrations.
|
# migrations.
|
||||||
execute <<-EOF.strip_heredoc
|
execute <<-EOF.strip_heredoc
|
||||||
DELETE FROM protected_branch_push_access_levels
|
DELETE FROM protected_branch_push_access_levels
|
||||||
WHERE group_id IN (
|
WHERE group_id IN (#{namespaces_pending_removal});
|
||||||
SELECT id FROM (
|
|
||||||
SELECT id
|
|
||||||
FROM namespaces
|
|
||||||
WHERE deleted_at IS NOT NULL
|
|
||||||
) namespace_ids
|
|
||||||
);
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
execute <<-EOF.strip_heredoc
|
execute <<-EOF.strip_heredoc
|
||||||
DELETE FROM protected_branch_merge_access_levels
|
DELETE FROM protected_branch_merge_access_levels
|
||||||
WHERE group_id IN (
|
WHERE group_id IN (#{namespaces_pending_removal});
|
||||||
SELECT id FROM (
|
|
||||||
SELECT id
|
|
||||||
FROM namespaces
|
|
||||||
WHERE deleted_at IS NOT NULL
|
|
||||||
) namespace_ids
|
|
||||||
);
|
|
||||||
EOF
|
EOF
|
||||||
end
|
end
|
||||||
|
|
||||||
# This removes namespaces that were supposed to be soft deleted but still
|
# This removes namespaces that were supposed to be deleted but still reside
|
||||||
# reside in the database.
|
# in the database.
|
||||||
execute "DELETE FROM namespaces WHERE deleted_at IS NOT NULL;"
|
execute "DELETE FROM namespaces WHERE deleted_at IS NOT NULL;"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -54,4 +94,12 @@ class RemoveUndeletedGroups < ActiveRecord::Migration
|
||||||
# If someone is trying to rollback for other reasons, we should not throw an Exception.
|
# If someone is trying to rollback for other reasons, we should not throw an Exception.
|
||||||
# raise ActiveRecord::IrreversibleMigration
|
# raise ActiveRecord::IrreversibleMigration
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def namespaces_pending_removal
|
||||||
|
"SELECT id FROM (
|
||||||
|
SELECT id
|
||||||
|
FROM namespaces
|
||||||
|
WHERE deleted_at IS NOT NULL
|
||||||
|
) namespace_ids"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue