2017-04-05 65 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