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
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)
remove_full_quote_on_direct_reply if new_post
post_process_oneboxes

View File

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