Skip to content

Commit

Permalink
Filter errors that get sent to Sentry (#5247)
Browse files Browse the repository at this point in the history
  • Loading branch information
haileyok authored Sep 25, 2024
1 parent b1ca250 commit 58036ff
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 15 deletions.
14 changes: 7 additions & 7 deletions __tests__/lib/errors.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ describe('isNetworkError', () => {
]
const outputs = [true, false, false, true]

it('correctly distinguishes network errors', () => {
for (let i = 0; i < inputs.length; i++) {
const input = inputs[i]
const result = isNetworkError(input)
expect(result).toEqual(outputs[i])
}
})
for (let i = 0; i < inputs.length; i++) {
const input = inputs[i]
const output = outputs[i]
it(`correctly distinguishes network errors for ${input}`, () => {
expect(isNetworkError(input)).toEqual(output)
})
}
})
18 changes: 13 additions & 5 deletions src/lib/strings/errors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,19 @@ export function cleanError(str: any): string {
return str
}

const NETWORK_ERRORS = [
'Abort',
'Network request failed',
'Failed to fetch',
'Load failed',
]

export function isNetworkError(e: unknown) {
const str = String(e)
return (
str.includes('Abort') ||
str.includes('Network request failed') ||
str.includes('Failed to fetch')
)
for (const err of NETWORK_ERRORS) {
if (str.includes(err)) {
return true
}
}
return false
}
10 changes: 8 additions & 2 deletions src/logger/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import format from 'date-fns/format'
import {nanoid} from 'nanoid/non-secure'

import {Sentry} from '#/logger/sentry'
import * as env from '#/env'
import {DebugContext} from '#/logger/debugContext'
import {add} from '#/logger/logDump'
import {Sentry} from '#/logger/sentry'
import {isNetworkError} from 'lib/strings/errors'
import * as env from '#/env'

export enum LogLevel {
Debug = 'debug',
Expand Down Expand Up @@ -160,6 +161,11 @@ export const sentryTransport: Transport = (
timestamp: timestamp / 1000, // Sentry expects seconds
})

// We don't want to send any network errors to sentry
if (isNetworkError(message)) {
return
}

/**
* Send all higher levels with `captureMessage`, with appropriate severity
* level
Expand Down
3 changes: 2 additions & 1 deletion src/view/com/util/UserAvatar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,8 @@ let EditableUserAvatar = ({

onSelectNewAvatar(croppedImage)
} catch (e: any) {
if (!String(e).includes('Canceled')) {
// Don't log errors for cancelling selection to sentry on ios or android
if (!String(e).toLowerCase().includes('cancel')) {
logger.error('Failed to crop banner', {error: e})
}
}
Expand Down

0 comments on commit 58036ff

Please sign in to comment.