diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 12529810f..f0dad4e10 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -13,7 +13,14 @@ class ApplicationController < ActionController::Base protected def rescue_exception(exception) @exception = exception - render :template => "static/error", :status => 500 + + if exception.is_a?(::ActiveRecord::StatementInvalid) && exception.to_s =~ /statement timeout/ + @exception = nil + @error_message = "The database timed out running your query." + render :template => "static/error", :status => 500 + else + render :template => "static/error", :status => 500 + end end def render_pagination_limit diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index aaa5266b4..0321a52fa 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb @@ -99,8 +99,7 @@ protected @error_message = "Meta-tags are not supported in comment searches by tag" render :template => "static/error", :status => 500 else - @exception = e - render :template => "static/error", :status => 500 + rescue_exception(e) end end end diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index bfa0eff4e..1d5b90744 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -12,13 +12,6 @@ class PostsController < ApplicationController respond_with(@posts) do |format| format.atom end - rescue ::ActiveRecord::StatementInvalid => e - if e.to_s =~ /statement timeout/ - @error_message = "The database timed out running your query. Try a simpler query that returns fewer results." - render :template => "static/error", :status => 500 - else - raise - end end def show diff --git a/app/logical/post_sets/post.rb b/app/logical/post_sets/post.rb index 245cf7da8..82e483ff0 100644 --- a/app/logical/post_sets/post.rb +++ b/app/logical/post_sets/post.rb @@ -49,7 +49,7 @@ module PostSets end @posts ||= begin - temp = ::Post.with_timeout(500, nil) do + temp = ::Post.with_timeout(timeout, nil) do ::Post.tag_match(tag_string).paginate(page, :count => ::Post.fast_count(tag_string), :limit => per_page) end