Merge remote-tracking branch 'upstream/pull/5178'
This commit is contained in:
commit
70f1b327b4
5 changed files with 40 additions and 16 deletions
|
@ -216,20 +216,25 @@ class ApplicationController < ActionController::Base
|
|||
##
|
||||
# wrap a web page in a timeout
|
||||
def web_timeout(&block)
|
||||
raise Timeout::Error if Settings.web_timeout.negative?
|
||||
|
||||
Timeout.timeout(Settings.web_timeout, &block)
|
||||
rescue ActionView::Template::Error => e
|
||||
e = e.cause
|
||||
|
||||
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"
|
||||
respond_to_timeout
|
||||
else
|
||||
raise
|
||||
end
|
||||
rescue Timeout::Error
|
||||
respond_to_timeout
|
||||
end
|
||||
|
||||
def respond_to_timeout
|
||||
ActiveRecord::Base.connection.raw_connection.cancel
|
||||
render :action => "timeout"
|
||||
render :action => "timeout", :status => :gateway_timeout
|
||||
end
|
||||
|
||||
##
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
atom_feed(:language => I18n.locale, :schema_date => 2009,
|
||||
:id => url_for(params.merge(:only_path => false)),
|
||||
:root_url => url_for(params.merge(:only_path => false, :format => nil)),
|
||||
"xmlns:georss" => "http://www.georss.org/georss") do |feed|
|
||||
feed.title @title
|
||||
|
||||
feed.subtitle :type => "xhtml" do |xhtml|
|
||||
xhtml.p do |p|
|
||||
p << t(".sorry")
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1 +0,0 @@
|
|||
<p><%= t ".sorry" %></p>
|
12
app/views/changeset_comments/feeds/timeout.rss.builder
Normal file
12
app/views/changeset_comments/feeds/timeout.rss.builder
Normal file
|
@ -0,0 +1,12 @@
|
|||
xml.rss("version" => "2.0",
|
||||
"xmlns:dc" => "http://purl.org/dc/elements/1.1/") do
|
||||
xml.channel do
|
||||
if params[:changeset_id]
|
||||
xml.title t("changeset_comments.feeds.show.title_particular", :changeset_id => params[:changeset_id])
|
||||
else
|
||||
xml.title t("changeset_comments.feeds.show.title_all")
|
||||
end
|
||||
xml.link root_url
|
||||
xml.description t(".sorry")
|
||||
end
|
||||
end
|
|
@ -68,5 +68,25 @@ module ChangesetComments
|
|||
get changesets_comments_feed_path(:format => "rss", :limit => 100001)
|
||||
assert_response :bad_request
|
||||
end
|
||||
|
||||
def test_feed_timeout
|
||||
with_settings(:web_timeout => -1) do
|
||||
get changesets_comments_feed_path
|
||||
end
|
||||
assert_response :error
|
||||
assert_equal "application/rss+xml; charset=utf-8", @response.header["Content-Type"]
|
||||
assert_dom "rss>channel>title", :text => "OpenStreetMap changeset discussion"
|
||||
assert_dom "rss>channel>description", :text => /the list of changeset comments you requested took too long to retrieve/
|
||||
end
|
||||
|
||||
def test_feed_changeset_timeout
|
||||
with_settings(:web_timeout => -1) do
|
||||
get changeset_comments_feed_path(123)
|
||||
end
|
||||
assert_response :error
|
||||
assert_equal "application/rss+xml; charset=utf-8", @response.header["Content-Type"]
|
||||
assert_dom "rss>channel>title", :text => "OpenStreetMap changeset #123 discussion"
|
||||
assert_dom "rss>channel>description", :text => /the list of changeset comments you requested took too long to retrieve/
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue