Sentry-javascript: globalEventProcessorsでスローされたエラーは黙って無視されます

作成日 2019年08月22日  ·  3コメント  ·  ソース: getsentry/sentry-javascript

パッケージ+バージョン

@sentry/[email protected]

説明

グローバルイベントプロセッサでスローされたエラーは、Sentry libによって取得され、別のエラーキャプチャが開始されます。このキャプチャは、同じグローバルイベントプロセッサを呼び出して、もう一度エラーをスローします。 これは未知の回数繰り返されます(おそらくスタックがオーバーフローするまで?)。 問題は、元のエラーの痕跡がなく、障害のあるグローバルイベントプロセッサによってスローされた後続のエラーがないことです。 セントリーは明らかにエラーをアップストリームに送信できませんが、何もログに記録されません。

障害のあるグローバルイベントプロセッサがエラーの報告を妨げていることを発見するには時間がかかるため、SDKがこれらのエラーを自動的に検出してログに記録できれば素晴らしいと思います。 それまでは、処理コードをtry / catchブロックでラップし、手動でエラーをログに記録することをお勧めします。

Sentry.addGlobalEventProcessor(event => {
  try {
    event.missingProperty.assignment = true
  } catch (err) {
    console.error('sentry global event processor threw error', err)
  }
  return event
})

Confirmed Bug

全てのコメント3件

説明されているようにループできませんでしたが、エラーが飲み込まれていることを確認できます(promiseチェーンに大きなcatch句があるため、ループしないでください🤔)。 すぐに調査します。 レポートをありがとう。

@kamilogorekこの問題を調査することに

@mogelbrodは現在、 debug: trueを設定して何かが失敗すると、デバッグログを取得します。
ここに実装されたより良いソリューションhttps://github.com/getsentry/sentry-javascript/pull/2416

このページは役に立ちましたか?
0 / 5 - 0 評価