FIX: Set unique post key for a user outside of transaction.

Previously, the Redis key was set within the transaction and the key
isn't deleted if the transaction is not successful.

Note that this isn't tested because we don't have a repro of what can
raise an error within the transaction.

https://meta.discourse.org/t/body-is-too-similar-to-what-you-previously-posted-even-when-previous-post-didnt-go-through/105436
This commit is contained in:
Guo Xiang Tan 2019-01-08 15:02:51 +08:00
parent 05c015d252
commit ec27db78be
2 changed files with 4 additions and 3 deletions

View File

@ -167,7 +167,6 @@ class PostCreator
create_topic
save_post
extract_links
store_unique_post_key
track_topic
update_topic_stats
update_topic_auto_close
@ -182,6 +181,7 @@ class PostCreator
end
if @post && errors.blank? && !@opts[:import_mode]
store_unique_post_key
# update counters etc.
@post.topic.reload

View File

@ -580,8 +580,9 @@ describe PostCreator do
it "returns blank for another post with the same content" do
creator.create
new_post_creator.create
expect(new_post_creator.errors).to be_present
post = new_post_creator.create
expect(post.errors[:raw]).to include(I18n.t(:just_posted_that))
end
it "returns a post for admins" do