【问题标题】:Sidekiq: error handler threw an errorSidekiq:错误处理程序抛出错误
【发布时间】: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


【解决方案1】:

【讨论】:

  • 是的,我看到了这些台词。但是我没有任何自定义错误处理程序:为什么 Sidekiq 说有一个引发异常的错误处理程序?此外,为什么我没有得到任何回溯? 我什至没有得到异常名称! 我的意思是,第 24 行应该记录异常名称,但它没有。我只收到!!! ERROR HANDLER THREW AN ERROR !!! 没有任何其他信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
相关资源
最近更新 更多