]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/application_controller.rb
Cancel running queries when a timeout occurs
[rails.git] / app / controllers / application_controller.rb
index 1d68654055538fd597265043e2adcb52e3ceb94f..d3f57f0867f819a037b8ddbf581747ddb54f8530 100644 (file)
@@ -231,6 +231,7 @@ class ApplicationController < ActionController::Base
   def api_call_timeout(&block)
     Timeout.timeout(Settings.api_timeout, Timeout::Error, &block)
   rescue Timeout::Error
+    ActiveRecord::Base.connection.raw_connection.cancel
     raise OSM::APITimeoutError
   end
 
@@ -243,11 +244,13 @@ class ApplicationController < ActionController::Base
 
     if e.is_a?(Timeout::Error) ||
        (e.is_a?(ActiveRecord::StatementInvalid) && e.message.include?("execution expired"))
+      ActiveRecord::Base.connection.raw_connection.cancel
       render :action => "timeout"
     else
       raise
     end
   rescue Timeout::Error
+    ActiveRecord::Base.connection.raw_connection.cancel
     render :action => "timeout"
   end