Skip to content

Commit 471a9ca

Browse files
chore: Capture and process order errors properly in Sentry (#4173)
1 parent 624d085 commit 471a9ca

File tree

3 files changed

+44
-9
lines changed

3 files changed

+44
-9
lines changed

app/controllers/public/index.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,13 +133,19 @@ export default Controller.extend({
133133
this.transitionToRoute('orders.new', order.identifier);
134134
})
135135
.catch(async e => {
136-
await Promise.all((attendees ? attendees.toArray() : []).map(attendee => attendee.destroyRecord()));
136+
console.error('Error while saving order', e);
137+
try {
138+
await Promise.allSettled((attendees ? attendees.toArray() : []).map(attendee => attendee.destroyRecord()));
139+
} catch (error) {
140+
console.error('Error while deleting attendees after order failure', error);
141+
}
137142
this.notify.error(this.l10n.t(e.errors[0].detail));
138143
})
139144
.finally(() => {
140145
this.set('isLoading', false);
141146
});
142147
} catch (e) {
148+
console.error('Error while creating order', e);
143149
this.notify.error(this.l10n.t(e));
144150
}
145151
}

app/sentry.ts

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
11
import * as Sentry from '@sentry/browser';
2-
import { Ember } from '@sentry/integrations';
2+
import { CaptureConsole, Dedupe, Ember } from '@sentry/integrations';
33
import config from 'open-event-frontend/config/environment';
44

55
Sentry.init({
6-
integrations: [new Ember()],
6+
integrations: [
7+
new Ember(),
8+
new Dedupe(),
9+
new CaptureConsole({
10+
levels: ['error']
11+
})
12+
],
713
beforeSend(event: Sentry.Event) {
814
const exception = event.exception?.values?.[0];
915
const errorValue = exception?.value;
10-
if (errorValue?.includes("Ember Data Request") &&
11-
errorValue?.includes("404")) {
12-
// Ignore 404 errors from Ember Data because
13-
// I don't know how to turn them off
14-
return null;
16+
if (errorValue?.includes("Ember Data Request")) {
17+
if (errorValue?.includes("404")) {
18+
// Ignore 404 errors from Ember Data because
19+
// I don't know how to turn them off
20+
return null;
21+
}
1522
}
1623

1724
if (errorValue?.includes("TransitionAborted") &&
@@ -24,3 +31,25 @@ Sentry.init({
2431
},
2532
...config.sentry
2633
});
34+
35+
Sentry.configureScope(function(scope) {
36+
function addAdapterError(error: any, event: Sentry.Event) {
37+
if (error.isAdapterError) {
38+
event.extra = {
39+
...event.extra,
40+
adapter_errors: error.errors,
41+
adapter_errors_json: JSON.stringify(error.errors)
42+
}
43+
}
44+
}
45+
46+
scope.addEventProcessor(function(event: Sentry.Event, hints: Sentry.EventHint) {
47+
addAdapterError(hints.originalException, event);
48+
49+
const args: any[] = event.extra?.arguments || [];
50+
for (const arg of args) {
51+
addAdapterError(arg, event);
52+
}
53+
return event;
54+
});
55+
});

ember-cli-build.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ module.exports = function(defaults) {
1313
includePolyfill: true
1414
},
1515
storeConfigInMeta : true,
16-
sassOptions : {
16+
sassOptions : {
1717
sourceMapEmbed: true
1818
},
1919
autoprefixer: {

0 commit comments

Comments
 (0)