You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
484 B
24 lines
484 B
# 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(exception) |
|
exception.set_backtrace(exception.backtrace.first(BACKTRACE_LIMIT)) |
|
raise exception |
|
end |
|
end
|
|
|