diff --git a/package-lock.json b/package-lock.json index 4cba0900..3189e47b 100644 Binary files a/package-lock.json and b/package-lock.json differ diff --git a/package.json b/package.json index ef2cc223..ea9c9b40 100644 --- a/package.json +++ b/package.json @@ -49,8 +49,9 @@ }, "dependencies": { "@aws-sdk/client-s3": "^3.178.0", - "@sentry/node": "^7.13.0", - "@sentry/tracing": "^7.13.0", + "@sentry/integrations": "^7.17.2", + "@sentry/node": "^7.17.2", + "@sentry/tracing": "^7.17.2", "ajv": "^8.6.2", "ajv-formats": "^2.1.1", "amqplib": "^0.10.3", diff --git a/src/bundle/Server.ts b/src/bundle/Server.ts index b98a3776..2bc45f84 100644 --- a/src/bundle/Server.ts +++ b/src/bundle/Server.ts @@ -10,6 +10,7 @@ import { green, bold, yellow } from "picocolors"; import { Config, initDatabase, BannedWords } from "@fosscord/util"; import * as Sentry from "@sentry/node"; import * as Tracing from "@sentry/tracing"; +import * as Integrations from "@sentry/integrations"; const app = express(); const server = http.createServer(); @@ -73,6 +74,9 @@ async function main() { new Sentry.Integrations.Http({ tracing: true }), new Tracing.Integrations.Express({ app }), new Tracing.Integrations.Mysql(), + new Integrations.RewriteFrames({ + root: __dirname, + }), ], tracesSampleRate: Config.get().sentry.traceSampleRate, environment: Config.get().sentry.environment, diff --git a/src/gateway/events/Message.ts b/src/gateway/events/Message.ts index 9fafae1e..4ed715b2 100644 --- a/src/gateway/events/Message.ts +++ b/src/gateway/events/Message.ts @@ -42,22 +42,25 @@ export async function Message(this: WebSocket, buffer: WS.Data) { return; } - const transaction = Sentry.startTransaction({ + const transaction = data.op != 1 ? Sentry.startTransaction({ op: OPCODES[data.op], name: `GATEWAY ${OPCODES[data.op]}`, data: { ...data.d, token: data?.d?.token ? "[Redacted]" : undefined, }, - }); + }) : undefined; try { var ret = await OPCodeHandler.call(this, data); - transaction.finish(); + transaction?.finish(); return ret; } catch (error) { - Sentry.captureException(error); - transaction.finish(); + Sentry.withScope((scope) => { + scope.setSpan(transaction); + Sentry.captureException(error); + }); + transaction?.finish(); console.error(`Error: Op ${data.op}`, error); // if (!this.CLOSED && this.CLOSING) return this.close(CLOSECODES.Unknown_error);