Commit a57f669e authored by Yannis Roussos's avatar Yannis Roussos

Merge branch 'ak/fix-project-transfer-2' into 'master'

Fix project transfer corrupting shared runners state

See merge request gitlab-org/gitlab!48032
parents 9c4f6ecb 443f0215
......@@ -71,7 +71,10 @@ module Projects
Project.transaction do
project.expire_caches_before_rename(@old_path)
# Apply changes to the project
update_namespace_and_visibility(@new_namespace)
update_shared_runners_settings
project.save!
# Notifications
project.send_move_instructions(@old_path)
......@@ -84,10 +87,6 @@ module Projects
# Move uploads
move_project_uploads(project)
# If a project is being transferred to another group it means it can already
# have shared runners enabled but we need to check whether the new group allows that.
project.shared_runners_enabled = false if project.group && project.group.shared_runners_setting == 'disabled_and_unoverridable'
project.old_path_with_namespace = @old_path
update_repository_configuration(@new_path)
......@@ -120,7 +119,6 @@ module Projects
# Apply new namespace id and visibility level
project.namespace = to_namespace
project.visibility_level = to_namespace.visibility_level unless project.visibility_level_allowed_by_group?
project.save!
end
def update_repository_configuration(full_path)
......@@ -208,6 +206,14 @@ module Projects
def new_design_repo_path
"#{new_path}#{::Gitlab::GlRepository::DESIGN.path_suffix}"
end
def update_shared_runners_settings
# If a project is being transferred to another group it means it can already
# have shared runners enabled but we need to check whether the new group allows that.
if project.group && project.group.shared_runners_setting == 'disabled_and_unoverridable'
project.shared_runners_enabled = false
end
end
end
end
......
---
title: Fix project transfer corrupting shared runners state
merge_request: 48032
author:
type: fixed
......@@ -9,7 +9,7 @@ RSpec.describe Projects::TransferService do
let_it_be(:group) { create(:group) }
let(:project) { create(:project, :repository, :legacy_storage, namespace: user.namespace) }
subject(:execute_transfer) { described_class.new(project, user).execute(group) }
subject(:execute_transfer) { described_class.new(project, user).execute(group).tap { project.reload } }
context 'with npm packages' do
before do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment