X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/7e66fcbb1b91289f246f17947c320ce4b3fcba34..8afc736536ddb088b6b7f0bc5e0cfae06522248d:/app/controllers/application_controller.rb diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 96bf915c0..a90a295fb 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -286,7 +286,7 @@ class ApplicationController < ActionController::Base ## # wrap an api call in a timeout def api_call_timeout - SystemTimer.timeout_after(API_TIMEOUT) do + OSM::Timer.timeout(API_TIMEOUT) do yield end rescue Timeout::Error @@ -296,11 +296,17 @@ class ApplicationController < ActionController::Base ## # wrap a web page in a timeout def web_timeout - SystemTimer.timeout_after(WEB_TIMEOUT) do + OSM::Timer.timeout(WEB_TIMEOUT) do yield end - rescue ActionView::TemplateError => ex - if ex.original_exception.is_a?(Timeout::Error) + rescue ActionView::Template::Error => ex + ex = ex.original_exception + + if ex.is_a?(ActiveRecord::StatementInvalid) and ex.message =~ /^Timeout::Error/ + ex = Timeout::Error.new + end + + if ex.is_a?(Timeout::Error) render :action => "timeout" else raise