improve: logging for session handling

This commit is contained in:
Carl-Gerhard Lindesvärd
2025-10-08 10:44:02 +02:00
parent 5b2f09f29c
commit a11f87dc3c
3 changed files with 21 additions and 19 deletions

View File

@@ -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:

View File

@@ -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,

View File

@@ -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<IServiceCreateEventPayload>) 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;