From 2a8d3ea450791c9c932bff4908aab3e62a1408f5 Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 30 Apr 2018 12:07:48 -0700 Subject: [PATCH 1/2] sentry - wrap report modifiers in a try-catch --- app/scripts/lib/setupRaven.js | 40 +++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/app/scripts/lib/setupRaven.js b/app/scripts/lib/setupRaven.js index 48b941c3d..b69e08bae 100644 --- a/app/scripts/lib/setupRaven.js +++ b/app/scripts/lib/setupRaven.js @@ -23,23 +23,14 @@ function setupRaven(opts) { release, transport: function(opts) { const report = opts.data - // simplify certain complex error messages - if (report.exception && report.exception.values) { - report.exception.values.forEach(item => { - let errorMessage = item.value - // simplify ethjs error messages - errorMessage = extractEthjsErrorMessage(errorMessage) - // simplify 'Transaction Failed: known transaction' - if (errorMessage.indexOf('Transaction Failed: known transaction') === 0) { - // cut the hash from the error message - errorMessage = 'Transaction Failed: known transaction' - } - // finalize - item.value = errorMessage - }) + try { + // simplify certain complex error messages (e.g. Ethjs) + simplifyErrorMessages(report) + // modify report urls + rewriteReportUrls(report) + } catch (err) { + console.warn(err) } - // modify report urls - rewriteReportUrls(report) // make request normally client._makeRequest(opts) }, @@ -49,6 +40,23 @@ function setupRaven(opts) { return Raven } +function simplifyErrorMessages(report) { + if (report.exception && report.exception.values) { + report.exception.values.forEach(item => { + let errorMessage = item.value + // simplify ethjs error messages + errorMessage = extractEthjsErrorMessage(errorMessage) + // simplify 'Transaction Failed: known transaction' + if (errorMessage.indexOf('Transaction Failed: known transaction') === 0) { + // cut the hash from the error message + errorMessage = 'Transaction Failed: known transaction' + } + // finalize + item.value = errorMessage + }) + } +} + function rewriteReportUrls(report) { // update request url report.request.url = toMetamaskUrl(report.request.url) From e881ea7aaf1faea8fdbf730c09a1aadbf2366d45 Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 30 Apr 2018 12:10:15 -0700 Subject: [PATCH 2/2] sentry - report error-like messages using the obj message --- app/scripts/lib/setupRaven.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/scripts/lib/setupRaven.js b/app/scripts/lib/setupRaven.js index b69e08bae..b1b67f771 100644 --- a/app/scripts/lib/setupRaven.js +++ b/app/scripts/lib/setupRaven.js @@ -24,6 +24,8 @@ function setupRaven(opts) { transport: function(opts) { const report = opts.data try { + // handle error-like non-error exceptions + nonErrorException(report) // simplify certain complex error messages (e.g. Ethjs) simplifyErrorMessages(report) // modify report urls @@ -40,6 +42,14 @@ function setupRaven(opts) { return Raven } +function nonErrorException(report) { + // handle errors that lost their error-ness in serialization + if (report.message.includes('Non-Error exception captured with keys: message')) { + if (!(report.extra && report.extra.__serialized__)) return + report.message = `Non-Error Exception: ${report.extra.__serialized__.message}` + } +} + function simplifyErrorMessages(report) { if (report.exception && report.exception.values) { report.exception.values.forEach(item => {