mirror of
https://github.com/discourse/discourse.git
synced 2025-02-20 11:06:32 +08:00
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:
parent
05c015d252
commit
ec27db78be
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user