使用 Sentry 时出现无限堆栈递归

你好!

我想在这里发帖,看看是否有人对我在尝试将 Sentry 与 Discourse 一起使用时遇到的这个 bug 有什么想法。我想使用 Sentry(使用 开源 Glitchtip 服务器实现)来收集后台任务和服务器中引发的所有错误。我知道 Discourse 有自己的错误收集机制 Logster,但我想尝试使用 Sentry 来帮助跟踪所有引发的错误并以更多上下文来检查它们。

我添加了一个带有 Sentry 配置的初始化程序:

Sentry.init do |config|
  config.breadcrumbs_logger = [:active_support_logger, :http_logger]

  config.dsn =  ENV['SENTRY_DSN']
end

并且发现它在 rake 任务和 sidekiq 任务的 HTTP 调用中无限递归(即使它们在添加 sentry 之前就已干净退出)。在 Sentry-ruby 的 GitHub issue 中有更多细节和重现方法:

我知道我没有使用受支持的 discourse_docker 仓库,但我想在这里发帖看看是否有人遇到过类似的错误并有什么想法。

请注意,已有一个现有的 Discourse Sentry 插件(https://meta.discourse.org/t/discourse-sentry/109187),但它使用了一个不受支持的客户端库(`sentry-raven`),所以我选择不使用它。

对于任何有兴趣将 Sentry 与 Discourse 一起使用的人来说,该软件包的维护者之一回复了一个建议的修复方法

他们说问题来自 Discourse 的 MethodProfiler它使用了 alias_method。他们建议用 prepend 替换它,并说这越来越普遍,并且可以让两个工具协同工作。

我对 Ruby 不够熟悉,无法理解其中的区别。目前,我将尝试注释掉这部分代码以禁用 Discourse 的方法分析。

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.