summaryrefslogtreecommitdiffstats
path: root/app/lib
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2020-05-10 10:30:27 +0200
committerGitHub <noreply@github.com>2020-05-10 10:30:27 +0200
commite9ecbca70d28c775a9eeda7670e06443a1037d5b (patch)
tree613c8c6131e5b505829fb995560bf1b34e667f89 /app/lib
parente09e225e5c1b0ccf28cf608f0fc9aa14ed30e3e7 (diff)
Fix error within error when limiting backtrace to 3 lines (#13120)
Fix #13086, close #13113
Diffstat (limited to 'app/lib')
-rw-r--r--app/lib/request.rb2
-rw-r--r--app/lib/sidekiq_error_handler.rb11
2 files changed, 11 insertions, 2 deletions
diff --git a/app/lib/request.rb b/app/lib/request.rb
index c476e7785bd..247c32958ac 100644
--- a/app/lib/request.rb
+++ b/app/lib/request.rb
@@ -73,8 +73,6 @@ class Request
response.body_with_limit if http_client.persistent?
yield response if block_given?
- rescue => e
- raise e.class, e.message, e.backtrace[0]
ensure
http_client.close unless http_client.persistent?
end
diff --git a/app/lib/sidekiq_error_handler.rb b/app/lib/sidekiq_error_handler.rb
index 8eb6b942dba..b07817d4556 100644
--- a/app/lib/sidekiq_error_handler.rb
+++ b/app/lib/sidekiq_error_handler.rb
@@ -1,13 +1,24 @@
# frozen_string_literal: true
class SidekiqErrorHandler
+ BACKTRACE_LIMIT = 3
+
def call(*)
yield
rescue Mastodon::HostValidationError
# Do not retry
+ rescue => e
+ limit_backtrace_and_raise(e)
ensure
socket = Thread.current[:statsd_socket]
socket&.close
Thread.current[:statsd_socket] = nil
end
+
+ private
+
+ def limit_backtrace_and_raise(e)
+ e.set_backtrace(e.backtrace.first(BACKTRACE_LIMIT))
+ raise e
+ end
end