about summary refs log tree commit diff
path: root/app/lib/sidekiq_error_handler.rb
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/sidekiq_error_handler.rb
parente09e225e5c1b0ccf28cf608f0fc9aa14ed30e3e7 (diff)
Fix error within error when limiting backtrace to 3 lines (#13120)
Fix #13086, close #13113
Diffstat (limited to 'app/lib/sidekiq_error_handler.rb')
-rw-r--r--app/lib/sidekiq_error_handler.rb11
1 files changed, 11 insertions, 0 deletions
diff --git a/app/lib/sidekiq_error_handler.rb b/app/lib/sidekiq_error_handler.rb
index 8eb6b942d..b07817d45 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