2017-04-05 58 views
1

我不断收到此错误(没有任何回溯):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是好的,但我不明白为什么我从错误处理程序中得到一个错误。

+0

'!!! ERROR HANDLER THREW AN ERROR !!!'可能是由于我从方法中的异常'救援'这一事实造成的,我记录了错误并再次引发异常。我不知道为什么Sidekiq抱怨。 – collimarco

回答

0
+0

是的,我已经看到了这些线。然而,我没有任何自定义错误处理程序:为什么Sidekiq说有一个错误处理程序引发异常?此外,为什么我没有得到任何回溯? **我甚至没有得到异常名称!**我的意思是,第24行应记录异常名称,但它不。我只是'!!!错误处理程序导致错误!'没有任何额外的信息。 – collimarco