Sentry-javascript: Errors thrown in globalEventProcessors are silently ignored

Created on 22 Aug 2019  ·  3Comments  ·  Source: getsentry/sentry-javascript

Package + Version

@sentry/[email protected]

Description

Errors thrown in global event processors are picked up by the Sentry lib, initiating another error capture which in turn calls the same global event processor that will throw an error once more. This repeats for an unknown number of times (until the stack overflows perhaps?). The issue is that there's no trace of the original error, nor any subsequent errors thrown by the faulty global event processor. Sentry is obviously unable to send the error upstream, but nothing is logged either.

Discovering that a faulty global event processor was preventing any of our errors from being reported took some time, so it would be great if the SDK could detect and log these errors automatically. Until then I recommend wrapping the processing code in a try/catch block and manually log errors:

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

Confirmed Bug

All 3 comments

I wasn't able to loop it as described, however I can confirm that the error is swallowed (it shoudn't, as we have a large catch clause in our promise chain 🤔). I'll investigate it soon. Thanks for the report.

@kamilogorek did you get around to looking into this issue?

@mogelbrod currently you'll get a debug log when you set debug: true and something fails.
Just implemented better solution here https://github.com/getsentry/sentry-javascript/pull/2416

Was this page helpful?
0 / 5 - 0 ratings