mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 09:42:07 +08:00
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:
parent
5b5773bff0
commit
67f5ad5ac0
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user