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
|
# wrap a web page in a timeout
|
||||||
def web_timeout(&block)
|
def web_timeout(&block)
|
||||||
|
raise Timeout::Error if Settings.web_timeout.negative?
|
||||||
|
|
||||||
Timeout.timeout(Settings.web_timeout, &block)
|
Timeout.timeout(Settings.web_timeout, &block)
|
||||||
rescue ActionView::Template::Error => e
|
rescue ActionView::Template::Error => e
|
||||||
e = e.cause
|
e = e.cause
|
||||||
|
|
||||||
if e.is_a?(Timeout::Error) ||
|
if e.is_a?(Timeout::Error) ||
|
||||||
(e.is_a?(ActiveRecord::StatementInvalid) && e.message.include?("execution expired"))
|
(e.is_a?(ActiveRecord::StatementInvalid) && e.message.include?("execution expired"))
|
||||||
ActiveRecord::Base.connection.raw_connection.cancel
|
respond_to_timeout
|
||||||
render :action => "timeout"
|
|
||||||
else
|
else
|
||||||
raise
|
raise
|
||||||
end
|
end
|
||||||
rescue Timeout::Error
|
rescue Timeout::Error
|
||||||
|
respond_to_timeout
|
||||||
|
end
|
||||||
|
|
||||||
|
def respond_to_timeout
|
||||||
ActiveRecord::Base.connection.raw_connection.cancel
|
ActiveRecord::Base.connection.raw_connection.cancel
|
||||||
render :action => "timeout"
|
render :action => "timeout", :status => :gateway_timeout
|
||||||
end
|
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)
|
get changesets_comments_feed_path(:format => "rss", :limit => 100001)
|
||||||
assert_response :bad_request
|
assert_response :bad_request
|
||||||
end
|
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
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue