summaryrefslogtreecommitdiff
path: root/app/services/users
diff options
context:
space:
mode:
authorTimothy Andrew <mail@timothyandrew.net>2017-02-06 17:18:27 +0530
committerTimothy Andrew <mail@timothyandrew.net>2017-02-24 16:50:19 +0530
commit53c34c7436112d7cac9c3887ada1d5ae630a206c (patch)
tree6a3262eef1760c3aa3d88ef9bc57b3f88bb85ceb /app/services/users
parentca16c3734b7b89f71bdc9e1c18152aa1599c4f89 (diff)
downloadgitlab-ce-53c34c7436112d7cac9c3887ada1d5ae630a206c.tar.gz
Implement review comments from @DouweM and @nick.thomas.
1. Use an advisory lock to guarantee the absence of concurrency in `User.ghost`, to prevent data races from creating more than one ghost, or preventing the creation of ghost users by causing validation errors. 2. Use `update_all` instead of updating issues one-by-one.
Diffstat (limited to 'app/services/users')
-rw-r--r--app/services/users/destroy_service.rb4
1 files changed, 2 insertions, 2 deletions
diff --git a/app/services/users/destroy_service.rb b/app/services/users/destroy_service.rb
index d88b81c04e2..bf1e49734cc 100644
--- a/app/services/users/destroy_service.rb
+++ b/app/services/users/destroy_service.rb
@@ -37,12 +37,12 @@ module Users
end
private
-
+
def move_issues_to_ghost_user(user)
ghost_user = User.ghost
Issue.transaction do
- user.issues.each { |issue| issue.update!(author: ghost_user) }
+ user.issues.update_all(author_id: ghost_user.id)
end
user.reload