我不断收到此错误(没有任何回溯):Sidekiq:错误处理程序,在我的生产日志抛出错误
!!! 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 !!!'可能是由于我从方法中的异常'救援'这一事实造成的,我记录了错误并再次引发异常。我不知道为什么Sidekiq抱怨。 – collimarco