Sentry使用時の無限スタック再帰

こんにちは!

Sentry を Discourse で使用しようとした際に発生しているこのバグについて、何かアイデアをお持ちの方がいないかと思い、ここに投稿しました。Sentry(オープンソースの Glitchtip サーバー実装を使用)を使用して、バックグラウンドタスクとサーバーで発生するすべてのエラーを収集したいと考えています。Discourse には Logster による独自のエラー収集機能があることは承知していますが、Sentry を使用して発生するすべてエラーを追跡し、より多くのコンテキストで検査したいと思いました。

Sentry の設定を含む初期化子を追加しました。

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

  config.dsn =  ENV['SENTRY_DSN']
end

そして、Sentry を追加する前に、Rake タスクや Sidekiq タスクの HTTP 呼び出し中に無限再帰が発生していることがわかりました(正常に終了するはずのタスクでも発生していました)。sentry-ruby で開いた GitHub の issue には、より詳細な情報と再現方法が記載されています。

サポートされていない discourse_docker リポジトリを使用していることは承知していますが、同様のエラーに遭遇した方がいないか、何かアイデアがないかと思い、ここに投稿しました。

既存の Discourse Sentry プラグイン(https://meta.discourse.org/t/discourse-sentry/109187)があることは知っていますが、サポートされていないクライアントライブラリ(`sentry-raven`)を使用しているため、私はそれを使用しないことにしました。

Discourse で Sentry を使用することに興味がある方は、パッケージのメンテナーの 1 人が修正案を返信しました

問題は 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.