mirror of
https://github.com/discourse/discourse.git
synced 2025-02-17 16:55:08 +00:00
posts read may enter concurrently, retry
This commit is contained in:
parent
9787cb07aa
commit
83559bbf45
@ -373,13 +373,21 @@ class User < ActiveRecord::Base
|
|||||||
create_visit_record!(date) unless visit_record_for(date)
|
create_visit_record!(date) unless visit_record_for(date)
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_posts_read!(num_posts, now=Time.zone.now)
|
def update_posts_read!(num_posts, now=Time.zone.now, _retry=false)
|
||||||
if user_visit = visit_record_for(now.to_date)
|
if user_visit = visit_record_for(now.to_date)
|
||||||
user_visit.posts_read += num_posts
|
user_visit.posts_read += num_posts
|
||||||
user_visit.save
|
user_visit.save
|
||||||
user_visit
|
user_visit
|
||||||
else
|
else
|
||||||
create_visit_record!(now.to_date, num_posts)
|
begin
|
||||||
|
create_visit_record!(now.to_date, num_posts)
|
||||||
|
rescue ActiveRecord::RecordNotUnique
|
||||||
|
if !_retry
|
||||||
|
update_posts_read!(num_posts, now, _retry=true)
|
||||||
|
else
|
||||||
|
raise
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user