record db timeouts in newrelic
This commit is contained in:
@@ -33,6 +33,10 @@ protected
|
|||||||
@exception = exception
|
@exception = exception
|
||||||
|
|
||||||
if exception.is_a?(::ActiveRecord::StatementInvalid) && exception.to_s =~ /statement timeout/
|
if exception.is_a?(::ActiveRecord::StatementInvalid) && exception.to_s =~ /statement timeout/
|
||||||
|
if Rails.env.production?
|
||||||
|
NewRelic::Agent.notice_error(exception, :uri => request.request_uri, :referer => request.referer, :request_params => params, :custom_params => {:user_id => CurrentUser.user.id, :user_ip_addr => CurrentUser.ip_addr})
|
||||||
|
end
|
||||||
|
|
||||||
@error_message = "The database timed out running your query."
|
@error_message = "The database timed out running your query."
|
||||||
render :template => "static/error", :status => 500
|
render :template => "static/error", :status => 500
|
||||||
elsif exception.is_a?(::ActiveRecord::RecordNotFound)
|
elsif exception.is_a?(::ActiveRecord::RecordNotFound)
|
||||||
|
|||||||
@@ -14,7 +14,10 @@ module Danbooru
|
|||||||
def with_timeout(n, default_value = nil)
|
def with_timeout(n, default_value = nil)
|
||||||
connection.execute("SET STATEMENT_TIMEOUT = #{n}") unless Rails.env == "test"
|
connection.execute("SET STATEMENT_TIMEOUT = #{n}") unless Rails.env == "test"
|
||||||
yield
|
yield
|
||||||
rescue ::ActiveRecord::StatementInvalid
|
rescue ::ActiveRecord::StatementInvalid => x
|
||||||
|
if Rails.env.production?
|
||||||
|
NewRelic::Agent.notice_error(x, :custom_params => {:user_id => CurrentUser.user.id, :user_ip_addr => CurrentUser.ip_addr})
|
||||||
|
end
|
||||||
return default_value
|
return default_value
|
||||||
ensure
|
ensure
|
||||||
connection.execute("SET STATEMENT_TIMEOUT = #{CurrentUser.user.try(:statement_timeout) || 3_000}") unless Rails.env == "test"
|
connection.execute("SET STATEMENT_TIMEOUT = #{CurrentUser.user.try(:statement_timeout) || 3_000}") unless Rails.env == "test"
|
||||||
|
|||||||
Reference in New Issue
Block a user