FIX: Adding a user to a group twice under concurrency

This prevents an error from being raised / logged.
This commit is contained in:
Robin Ward 2019-05-27 15:41:57 -04:00
parent dfcc2e7ad8
commit d26c4509ea

View File

@ -321,8 +321,14 @@ class GroupsController < ApplicationController
))
else
users.each do |user|
group.add(user)
GroupActionLogger.new(current_user, group).log_add_user_to_group(user)
begin
group.add(user)
GroupActionLogger.new(current_user, group).log_add_user_to_group(user)
rescue ActiveRecord::RecordNotUnique
# Under concurrency, we might attempt to insert two records quickly and hit a DB
# constraint. In this case we can safely ignore the error and act as if the user
# was added to the group.
end
end
render json: success_json.merge!(