diff --git a/server/services/websockets.ts b/server/services/websockets.ts index 901e3b2a0..e0c171fa3 100644 --- a/server/services/websockets.ts +++ b/server/services/websockets.ts @@ -6,6 +6,8 @@ import IO from "socket.io"; import { createAdapter } from "socket.io-redis"; import Logger from "@server/logging/Logger"; import Metrics from "@server/logging/metrics"; +import * as Tracing from "@server/logging/tracing"; +import { APM } from "@server/logging/tracing"; import { Document, Collection, View, User } from "@server/models"; import { can } from "@server/policies"; import { getUserForJWT } from "@server/utils/jwt"; @@ -135,14 +137,23 @@ export default function init( // Handle events from event queue that should be sent to the clients down ws const websockets = new WebsocketsProcessor(); - websocketQueue.process(async function websocketEventsProcessor(job) { - const event = job.data; - websockets.perform(event, io).catch((error) => { - Logger.error("Error processing websocket event", error, { - event, + websocketQueue.process( + APM.traceFunction({ + serviceName: "websockets", + spanName: "process", + isRoot: true, + })(async function (job) { + const event = job.data; + + Tracing.setResource(`Processor.WebsocketsProcessor`); + + websockets.perform(event, io).catch((error) => { + Logger.error("Error processing websocket event", error, { + event, + }); }); - }); - }); + }) + ); } async function authenticated(io: IO.Server, socket: SocketWithAuth) {