dun*_*289 12 mysql deadlock ruby-on-rails-3
是否有任何Rails 3(或ActiveRecord 3)的插件可以复制旧的deadlock_retry插件?或者,该插件是否仍适用于Rails 3?
Mar*_* T. 10
我甚至不知道有一个插件可以做到这一点:)
这是我们使用的(但你必须自己包装容易出现死锁的查询):
# Executes the given block +retries+ times (or forever, if explicitly given nil),
# catching and retrying SQL Deadlock errors.
def retry_lock_error(retries = 100, &block)
begin
yield
rescue ActiveRecord::StatementInvalid => e
if e.message =~ /Deadlock found when trying to get lock/ and (retries.nil? || retries > 0)
retry_lock_error(retries ? retries - 1 : nil, &block)
else
raise e
end
end
end
Run Code Online (Sandbox Code Playgroud)