Merge pull request #20761 from overleaf/jpa-error-instance

[logger] forward an Error instance to Sentry.captureException

GitOrigin-RevId: 3a310994622c85f3791181b87d4d382c34f6fd32
This commit is contained in:
Jakob Ackermann 2024-10-01 22:54:26 +02:00 committed by Copybot
parent 39ee8de1a5
commit ea55a850f9
2 changed files with 10 additions and 2 deletions

View file

@ -81,9 +81,13 @@ class SentryManager {
extra.info = error.info extra.info = error.info
delete error.info delete error.info
// Sentry wants to receive an Error instance.
const errInstance = new Error(error.message)
Object.assign(errInstance, error)
try { try {
// send the error to sentry // send the error to sentry
this.Sentry.captureException(error, { tags, extra, level }) this.Sentry.captureException(errInstance, { tags, extra, level })
// put a flag on the errors to avoid reporting them multiple times // put a flag on the errors to avoid reporting them multiple times
for (const key in attributes) { for (const key in attributes) {

View file

@ -138,7 +138,11 @@ describe('SentryManager', function () {
}, },
}) })
) )
expect(this.Sentry.captureException.args[0][0]).to.deep.equal(expectedErr) // Chai is very picky with comparing Error instances. Go the long way of comparing all the fields manually.
const gotErr = this.Sentry.captureException.args[0][0]
for (const [key, wanted] of Object.entries(expectedErr)) {
expect(gotErr).to.have.property(key, wanted)
}
}) })
it('should sanitize request', function () { it('should sanitize request', function () {
const req = { const req = {