diff options
author | Gabriel Mazetto <brodock@gmail.com> | 2018-08-24 01:52:35 +0300 |
---|---|---|
committer | Gabriel Mazetto <brodock@gmail.com> | 2018-08-26 11:58:43 +0300 |
commit | 2e719bda0aec3970bcda06a21aa1e5eb41db323b (patch) | |
tree | 5fe03b2871724bfb6f80d5147ef914e580656654 /app/services/groups | |
parent | a32a410fb9bfcd378840b61426a54fd56d2ebd33 (diff) |
don't trigger project deletion hooks twice when removing a group
Diffstat (limited to 'app/services/groups')
-rw-r--r-- | app/services/groups/destroy_service.rb | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/app/services/groups/destroy_service.rb b/app/services/groups/destroy_service.rb index 12aeba4af71..93d84bd8a9c 100644 --- a/app/services/groups/destroy_service.rb +++ b/app/services/groups/destroy_service.rb @@ -12,12 +12,15 @@ module Groups def execute group.prepare_for_destroy - group.projects.each do |project| + group.projects.includes(:project_feature).each do |project| # Execute the destruction of the models immediately to ensure atomic cleanup. success = ::Projects::DestroyService.new(project, current_user).execute raise DestroyError, "Project #{project.id} can't be deleted" unless success end + # reload the relation to prevent triggering destroy hooks on the projects again + group.projects.reload + group.children.each do |group| # This needs to be synchronous since the namespace gets destroyed below DestroyService.new(group, current_user).execute |