-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Closed
Description
-
@sentry/node
(5.0.5)
Sentry.flush()
doesn't wait for events to be delivered by transport. This can result in dropped events in serverless environment like AWS lambda.
Reproduction:
const Sentry = require('@sentry/node')
function sleep(delay) {
return new Promise(resolve => setTimeout(resolve, delay))
}
class FakeTransport extends Sentry.Transports.HTTPTransport {
async sendEvent(event) {
console.log('Started sending ' + event.event_id)
await sleep(500)
console.log('Finished sending ' + event.event_id)
return { status: 200 }
}
}
Sentry.init({
dsn: 'https://fake@sentry.io/1234',
transport: FakeTransport,
beforeSend: (event) => {
console.log('Before send ' + event.event_id)
return event
}
})
async function main() {
Sentry.captureException(new Error('test 3'))
console.log('Before')
await Sentry.flush(2000)
console.log('After')
await sleep(3000)
}
main()
Before
Before send 3879a904216343bcb7999f116e336797
Started sending 3879a904216343bcb7999f116e336797
After
Finished sending 3879a904216343bcb7999f116e336797
Metadata
Metadata
Assignees
Labels
No labels