summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Speicher <robert@gitlab.com>2018-03-19 15:22:06 +0000
committerRobert Speicher <rspeicher@gmail.com>2018-03-19 12:40:53 -0500
commitfb3ecaf17390707c83e99baec4cbdd19f4ce6154 (patch)
treecbfc24b12a775c7e6e6b2a2232af985cd79ccffa
parent521be29fb68920146bd883cc01503daec44ec0d1 (diff)
downloadgitlab-ce-fb3ecaf17390707c83e99baec4cbdd19f4ce6154.tar.gz
Merge branch 'sh-fix-failure-project-destroy' into 'master'
Fix "Can't modify frozen hash" error when project is destroyed See merge request gitlab-org/gitlab-ce!17816
-rw-r--r--app/services/projects/destroy_service.rb6
-rw-r--r--changelogs/unreleased/sh-fix-failure-project-destroy.yml5
2 files changed, 10 insertions, 1 deletions
diff --git a/app/services/projects/destroy_service.rb b/app/services/projects/destroy_service.rb
index 81972df9b3c..4b8f955ae69 100644
--- a/app/services/projects/destroy_service.rb
+++ b/app/services/projects/destroy_service.rb
@@ -88,7 +88,11 @@ module Projects
def attempt_rollback(project, message)
return unless project
- project.update_attributes(delete_error: message, pending_delete: false)
+ # It's possible that the project was destroyed, but some after_commit
+ # hook failed and caused us to end up here. A destroyed model will be a frozen hash,
+ # which cannot be altered.
+ project.update_attributes(delete_error: message, pending_delete: false) unless project.destroyed?
+
log_error("Deletion failed on #{project.full_path} with the following message: #{message}")
end
diff --git a/changelogs/unreleased/sh-fix-failure-project-destroy.yml b/changelogs/unreleased/sh-fix-failure-project-destroy.yml
new file mode 100644
index 00000000000..d5f5cd3f954
--- /dev/null
+++ b/changelogs/unreleased/sh-fix-failure-project-destroy.yml
@@ -0,0 +1,5 @@
+---
+title: Fix "Can't modify frozen hash" error when project is destroyed
+merge_request:
+author:
+type: fixed