From a11f87dc3cfcbad17fbe2110ddafa0055a8955a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Gerhard=20Lindesva=CC=88rd?= Date: Wed, 8 Oct 2025 10:44:02 +0200 Subject: [PATCH] improve: logging for session handling --- apps/worker/src/boot-workers.ts | 2 ++ .../src/jobs/events.create-session-end.ts | 10 +++++-- apps/worker/src/jobs/events.incoming-event.ts | 28 ++++++++----------- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/apps/worker/src/boot-workers.ts b/apps/worker/src/boot-workers.ts index c33d52f7..2cd4a7db 100644 --- a/apps/worker/src/boot-workers.ts +++ b/apps/worker/src/boot-workers.ts @@ -91,6 +91,7 @@ export async function bootWorkers() { (worker as Worker).on('failed', (job) => { if (job) { logger.error('job failed', { + jobId: job.id, worker: worker.name, data: job.data, error: job.failedReason, @@ -102,6 +103,7 @@ export async function bootWorkers() { (worker as Worker).on('completed', (job) => { if (job) { logger.info('job completed', { + jobId: job.id, worker: worker.name, data: job.data, elapsed: diff --git a/apps/worker/src/jobs/events.create-session-end.ts b/apps/worker/src/jobs/events.create-session-end.ts index c8ca7f09..027cc2a2 100644 --- a/apps/worker/src/jobs/events.create-session-end.ts +++ b/apps/worker/src/jobs/events.create-session-end.ts @@ -69,6 +69,8 @@ export async function createSessionEnd( reqId: job.data.payload.properties?.__reqId ?? 'unknown', }); + logger.info('Processing session end job'); + const payload = job.data.payload; const events = await getNecessarySessionEvents({ @@ -92,9 +94,13 @@ export async function createSessionEnd( const sessionDuration = lastEvent.createdAt.getTime() - sessionStart.createdAt.getTime(); - await checkNotificationRulesForSessionEnd(events); + await checkNotificationRulesForSessionEnd(events).catch(() => { + logger.error('Error checking notification rules for session end', { + data: job.data, + }); + }); - logger.info('Creating session_end', { + logger.info('Creating session_end event', { sessionStart, lastEvent, screenViews, diff --git a/apps/worker/src/jobs/events.incoming-event.ts b/apps/worker/src/jobs/events.incoming-event.ts index cae6aee9..ecd28a55 100644 --- a/apps/worker/src/jobs/events.incoming-event.ts +++ b/apps/worker/src/jobs/events.incoming-event.ts @@ -37,7 +37,7 @@ async function createEventAndNotify( logger.info('Creating event', { event: payload, jobData }); const [event] = await Promise.all([ createEvent(payload), - checkNotificationRulesForEvent(payload), + checkNotificationRulesForEvent(payload).catch(() => {}), ]); return event; } @@ -188,27 +188,21 @@ export async function incomingEventPure( } as Partial) as IServiceCreateEventPayload; if (!sessionEnd) { - // Too avoid several created sessions we just throw if a lock exists - // This will than retry the job - if (job) { - const lock = await getLock( - `create-session-end:${currentDeviceId}`, - 'locked', - 1000, - ); - - if (!lock) { - await job.moveToDelayed(Date.now() + 50, token); - throw new DelayedError(); - } - } - await createSessionStart({ payload }); + logger.info('Creating session start event', { event: payload }); + await createSessionStart({ payload }).catch((error) => { + logger.error('Error creating session start event', { event: payload }); + throw error; + }); } const event = await createEventAndNotify(payload, jobPayload, logger); if (!sessionEnd) { - await createSessionEndJob({ payload }); + logger.info('Creating session end job', { event: payload }); + await createSessionEndJob({ payload }).catch((error) => { + logger.error('Error creating session end job', { event: payload }); + throw error; + }); } return event;