improve: logging for session handling
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user