X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/8fe18995964717ff6f88858291c6f464cc40397f..b77406ff38a88e2ab38b4882620f44069b7125f0:/config/initializers/abstract_adapter.rb?ds=sidebyside diff --git a/config/initializers/abstract_adapter.rb b/config/initializers/abstract_adapter.rb index 89d384567..2bc4f5e59 100644 --- a/config/initializers/abstract_adapter.rb +++ b/config/initializers/abstract_adapter.rb @@ -1,29 +1,17 @@ if defined?(ActiveRecord::ConnectionAdaptors::AbstractAdapter) - module ActiveRecord - module ConnectionAdapters - class AbstractAdapter - protected - - alias old_log log - - def log(sql, name) - if block_given? - old_log(sql, name) do - yield - end + module OpenStreetMap + module AbstractAdapter + module PropagateTimeouts + def translate_exception_class(e, sql) + if e.is_a?(Timeout::Error) || e.is_a?(OSM::APITimeoutError) + e else - old_log(sql, name) - end - rescue ActiveRecord::StatementInvalid => ex - if ex.message =~ /^OSM::APITimeoutError: / - raise OSM::APITimeoutError.new - elsif ex.message =~ /^Timeout::Error: / - raise Timeout::Error.new("time's up!") - else - raise + super(e, sql) end end end end end + + ActiveRecord::ConnectionAdaptors::AbstractAdapter.prepend(OpenStreetMap::AbstractAdapter::PropagateTimeouts) end