【发布时间】:2017-04-05 22:59:35
【问题描述】:
我在生产日志中不断收到此错误(没有任何回溯):
!!! ERROR HANDLER THREW AN ERROR !!!
据我了解,这意味着 registered error handler 正在引发异常。
但是我的应用程序没有任何自定义错误处理程序。
如何调试/解决这个问题?
我的应用程序如下所示:
class DeliveryJob
include Sidekiq::Worker
sidekiq_options queue: :deliveries, retry: 3
sidekiq_retry_in { |count| 20 * (3 ** count) }
sidekiq_retries_exhausted do |s|
# do something (some methods use Redis) ...
Rails.logger.tagged('delivery') do
Rails.logger.error "Sidekiq retries exhausted for ..."
end
end
def perform(id)
Notification.find(id).deliver
end
end
class Notification
def deliver
# do something that may fail
rescue => e
Rails.logger.tagged('delivery') do
Rails.logger.error "Delivery error for #{endpoint}: #{e.to_s}"
end
raise e
end
end
所以在我的日志中,我经常看到类似的内容:
https://example.com/path 的传递错误:SSL 连接错误等
接着是:
!!! ERROR HANDLER THREW AN ERROR !!!
Delivery error 正常且符合预期,但我不明白为什么我会从错误处理程序中收到错误。
【问题讨论】:
-
!!! ERROR HANDLER THREW AN ERROR !!!可能是由于我rescue来自方法中的异常,我记录了错误并再次引发异常。我不知道 Sidekiq 为什么会抱怨。
标签: ruby-on-rails sidekiq