FEATURE: allow post process mutex to be held longer

Previously we would only hold the post process mutex for 1 minute, that is
not enough when processing a post with lots of images. This raises the bar
to 10 minutes.

It also cleans up error reporting around distributed mutexes expiring. We
used to double report.
This commit is contained in:
Sam Saffron 2019-08-05 11:57:35 +10:00
parent 5b5773bff0
commit 67f5ad5ac0
2 changed files with 4 additions and 4 deletions

View File

@ -35,7 +35,7 @@ class CookedPostProcessor
end end
def post_process(bypass_bump: false, new_post: false) def post_process(bypass_bump: false, new_post: false)
DistributedMutex.synchronize("post_process_#{@post.id}") do DistributedMutex.synchronize("post_process_#{@post.id}", validity: 10.minutes) do
DiscourseEvent.trigger(:before_post_process_cooked, @doc, @post) DiscourseEvent.trigger(:before_post_process_cooked, @doc, @post)
remove_full_quote_on_direct_reply if new_post remove_full_quote_on_direct_reply if new_post
post_process_oneboxes post_process_oneboxes

View File

@ -31,11 +31,11 @@ class DistributedMutex
yield yield
ensure ensure
current_time = redis.time[0] current_time = redis.time[0]
unless current_time < expire_time if current_time > expire_time
warn("held for too long") warn("held for too long, expected max: #{@validity} secs, took an extra #{current_time - expire_time} secs")
end end
unless unlock(expire_time) if !unlock(expire_time) && current_time <= expire_time
warn("didn't unlock cleanly") warn("didn't unlock cleanly")
end end
end end