diff --git a/lib/cooked_post_processor.rb b/lib/cooked_post_processor.rb index a0c2efd93b2..ac16eb82c16 100644 --- a/lib/cooked_post_processor.rb +++ b/lib/cooked_post_processor.rb @@ -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 diff --git a/lib/distributed_mutex.rb b/lib/distributed_mutex.rb index 420c5bc1436..19f8b5dd4bc 100644 --- a/lib/distributed_mutex.rb +++ b/lib/distributed_mutex.rb @@ -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