From de51074ccae6ceffe179abd822944d317df08715 Mon Sep 17 00:00:00 2001 From: Hassan Abdel-Rahman Date: Mon, 13 May 2024 09:55:04 -0400 Subject: [PATCH] Added sentry reporting to the pg-queue --- packages/realm-server/main.ts | 6 +++++- packages/realm-server/pg-queue.ts | 4 +++- packages/runtime-common/error.ts | 16 ++++++++++++++++ packages/runtime-common/realm.ts | 16 ---------------- 4 files changed, 24 insertions(+), 18 deletions(-) diff --git a/packages/realm-server/main.ts b/packages/realm-server/main.ts index 10eca1abcb..e78478da41 100644 --- a/packages/realm-server/main.ts +++ b/packages/realm-server/main.ts @@ -15,7 +15,10 @@ import { readFileSync } from 'fs-extra'; import { shimExternals } from './lib/externals'; import { type RealmPermissions as RealmPermissionsInterface } from '@cardstack/runtime-common/realm'; import * as Sentry from '@sentry/node'; -import { setErrorReporter } from '@cardstack/runtime-common/realm'; +import { + reportSentryError, + setErrorReporter, +} from '@cardstack/runtime-common/error'; import PgAdapter from './pg-adapter'; import PgQueue from './pg-queue'; @@ -272,6 +275,7 @@ if (distURL) { `Unexpected error encountered starting realm, stopping server`, e, ); + reportSentryError(e); process.exit(1); }); diff --git a/packages/realm-server/pg-queue.ts b/packages/realm-server/pg-queue.ts index f71aab9e45..369b575d65 100644 --- a/packages/realm-server/pg-queue.ts +++ b/packages/realm-server/pg-queue.ts @@ -14,6 +14,7 @@ import { Deferred, Job, } from '@cardstack/runtime-common'; +import { reportSentryError } from '@cardstack/runtime-common/error'; import PgAdapter from './pg-adapter'; const log = logger('queue'); @@ -338,7 +339,8 @@ export default class PgQueue implements Queue { log.debug(`running %s`, coalescedIds); result = await this.runJob(firstJob.category, firstJob.args); newStatus = 'resolved'; - } catch (err) { + } catch (err: any) { + reportSentryError(err); result = serializableError(err); newStatus = 'rejected'; } diff --git a/packages/runtime-common/error.ts b/packages/runtime-common/error.ts index 637280ed22..730da70f14 100644 --- a/packages/runtime-common/error.ts +++ b/packages/runtime-common/error.ts @@ -23,6 +23,22 @@ export interface SerializedError { stack?: string; } +export type ErrorReporter = (error: Error) => void; + +let globalWithErrorReporter = global as typeof globalThis & { + __boxelErrorReporter: ErrorReporter; +}; + +export function setErrorReporter(reporter: ErrorReporter) { + globalWithErrorReporter.__boxelErrorReporter = reporter; +} + +export function reportSentryError(error: Error) { + if (globalWithErrorReporter.__boxelErrorReporter) { + globalWithErrorReporter.__boxelErrorReporter(error); + } +} + export class CardError extends Error implements SerializedError { detail: string; status: number; diff --git a/packages/runtime-common/realm.ts b/packages/runtime-common/realm.ts index fe62246e5c..6d48224c9a 100644 --- a/packages/runtime-common/realm.ts +++ b/packages/runtime-common/realm.ts @@ -1790,22 +1790,6 @@ function lastModifiedHeader( ) as {} | { 'last-modified': string }; } -export type ErrorReporter = (error: Error) => void; - -let globalWithErrorReporter = global as typeof globalThis & { - __boxelErrorReporter: ErrorReporter; -}; - -export function setErrorReporter(reporter: ErrorReporter) { - globalWithErrorReporter.__boxelErrorReporter = reporter; -} - -export function reportError(error: Error) { - if (globalWithErrorReporter.__boxelErrorReporter) { - globalWithErrorReporter.__boxelErrorReporter(error); - } -} - export interface CardDefinitionResource { id: string; type: 'card-definition';