Sentry-javascript: Erros lançados em globalEventProcessors são silenciosamente ignorados

Criado em 22 ago. 2019  ·  3Comentários  ·  Fonte: getsentry/sentry-javascript

Pacote + Versão

@sentry/[email protected]

Descrição

Os erros lançados nos processadores de eventos globais são captados pela biblioteca Sentry, iniciando outra captura de erro que, por sua vez, chama o mesmo processador de eventos globais que lançará um erro mais uma vez. Isso se repete por um número desconhecido de vezes (até a pilha estourar, talvez?). O problema é que não há vestígios do erro original, nem quaisquer erros subsequentes lançados pelo processador de evento global com defeito. Obviamente, o Sentry é incapaz de enviar o erro para cima, mas nada é registrado também.

Descobrir que um processador de evento global com defeito estava impedindo que qualquer um de nossos erros fosse relatado levou algum tempo, então seria ótimo se o SDK pudesse detectar e registrar esses erros automaticamente. Até então, eu recomendo agrupar o código de processamento em um bloco try / catch e registrar manualmente os erros:

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

Confirmed Bug

Todos 3 comentários

Não consegui fazer o loop conforme descrito, mas posso confirmar que o erro foi engolido (não deveria, pois temos uma grande cláusula catch em nossa cadeia de promessas 🤔). Vou investigar isso em breve. Obrigado pelo relatório.

@kamilogorek , você começou a examinar esse problema?

@mogelbrod atualmente você obterá um log de depuração quando definir debug: true e algo falhar.
Acabei de implementar uma solução melhor aqui https://github.com/getsentry/sentry-javascript/pull/2416

Esta página foi útil?
0 / 5 - 0 avaliações