Better errors handling (#8835)

- [ ] Catch this specific `500` error
- [ ] Make sure catched `500` errors are sent to sentry for the Cloud
version
- [ ] Hide the option to sync email with google in this situation where
the according env var is missing
- [x] Add Worskpace information to all catched errors for better
debugging

fix #8607
This commit is contained in:
Guillim
2024-12-03 12:16:38 +01:00
committed by GitHub
parent 32194a88b3
commit 7e4277fbe4
28 changed files with 120 additions and 104 deletions

View File

@ -1,5 +1,4 @@
/* eslint-disable no-console */
import { ExceptionHandlerUser } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-user.interface';
import { ExceptionHandlerOptions } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-options.interface';
import { ExceptionHandlerDriverInterface } from 'src/engine/core-modules/exception-handler/interfaces';
@ -18,11 +17,4 @@ export class ExceptionHandlerConsoleDriver
return [];
}
captureMessage(message: string, user?: ExceptionHandlerUser): void {
console.group('Message Captured');
console.info(user);
console.info(message);
console.groupEnd();
}
}

View File

@ -1,7 +1,6 @@
import * as Sentry from '@sentry/node';
import { ExceptionHandlerOptions } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-options.interface';
import { ExceptionHandlerUser } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-user.interface';
import { ExceptionHandlerDriverInterface } from 'src/engine/core-modules/exception-handler/interfaces';
@ -24,14 +23,16 @@ export class ExceptionHandlerSentryDriver
scope.setExtra('document', options.document);
}
if (options?.workspace) {
scope.setExtra('workspace', options.workspace);
}
if (options?.user) {
scope.setUser({
id: options.user.id,
email: options.user.email,
firstName: options.user.firstName,
lastName: options.user.lastName,
workspaceId: options.user.workspaceId,
workspaceDisplayName: options.user.workspaceDisplayName,
});
}
@ -69,21 +70,4 @@ export class ExceptionHandlerSentryDriver
return eventIds;
}
captureMessage(message: string, user?: ExceptionHandlerUser) {
Sentry.captureMessage(message, (scope) => {
if (user) {
scope.setUser({
id: user.id,
email: user.email,
firstName: user.firstName,
lastName: user.lastName,
workspaceId: user.workspaceId,
workspaceDisplayName: user.workspaceDisplayName,
});
}
return scope;
});
}
}

View File

@ -1,10 +1,8 @@
import { ExceptionHandlerOptions } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-options.interface';
import { ExceptionHandlerUser } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-user.interface';
export interface ExceptionHandlerDriverInterface {
captureExceptions(
exceptions: ReadonlyArray<any>,
options?: ExceptionHandlerOptions,
): string[];
captureMessage(message: string, user?: ExceptionHandlerUser): void;
}

View File

@ -1,6 +1,7 @@
import { OperationTypeNode } from 'graphql';
import { ExceptionHandlerUser } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-user.interface';
import { ExceptionHandlerWorkspace } from 'src/engine/core-modules/exception-handler/interfaces/exception-handler-workspace.interface';
export interface ExceptionHandlerOptions {
operation?: {
@ -9,4 +10,5 @@ export interface ExceptionHandlerOptions {
};
document?: string;
user?: ExceptionHandlerUser | null;
workspace?: ExceptionHandlerWorkspace | null;
}

View File

@ -3,6 +3,4 @@ export interface ExceptionHandlerUser {
email?: string;
firstName?: string;
lastName?: string;
workspaceId?: string;
workspaceDisplayName?: string;
}

View File

@ -0,0 +1,6 @@
export interface ExceptionHandlerWorkspace {
id?: string;
displayName?: string;
activationStatus?: string;
createdAt?: string;
}