Merge pull request #3403 from evazion/fix-favgroup-race

Fix race condition when adding posts to favgroups
This commit is contained in:
Albert Yi
2017-12-13 14:28:38 -08:00
committed by GitHub
2 changed files with 31 additions and 8 deletions

View File

@@ -173,11 +173,13 @@ class FavoriteGroup < ApplicationRecord
end
def add!(post_id)
post_id = post_id.id if post_id.is_a?(Post)
return if contains?(post_id)
with_lock do
post_id = post_id.id if post_id.is_a?(Post)
return if contains?(post_id)
clear_post_id_array
update_attributes(:post_ids => add_number_to_string(post_id, post_ids))
clear_post_id_array
update_attributes(:post_ids => add_number_to_string(post_id, post_ids))
end
end
def self.purge_post(post_id)
@@ -188,11 +190,13 @@ class FavoriteGroup < ApplicationRecord
end
def remove!(post_id)
post_id = post_id.id if post_id.is_a?(Post)
return unless contains?(post_id)
with_lock do
post_id = post_id.id if post_id.is_a?(Post)
return unless contains?(post_id)
clear_post_id_array
update_attributes(:post_ids => remove_number_from_string(post_id, post_ids))
clear_post_id_array
update_attributes(:post_ids => remove_number_from_string(post_id, post_ids))
end
end
def add_number_to_string(number, string)