18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/active_record_retriable/retriable.rb', line 18
def transaction(retry_on: nil,
num_retries: Rails.configuration.active_record.default_transaction_retries,
before_retry: nil,
**options, &block)
return super(options, &block) if retry_on.blank?
retry_on = Array.wrap(retry_on)
total_retries = num_retries
num_retries = 0
begin
super(options, &block)
rescue *retry_on => e
num_retries += 1
if total_retries.nil? || num_retries <= total_retries
before_retry&.call(num_retries, e)
retry
end
raise
end
end
|