improve: logging for session handling
This commit is contained in:
@@ -91,6 +91,7 @@ export async function bootWorkers() {
|
|||||||
(worker as Worker).on('failed', (job) => {
|
(worker as Worker).on('failed', (job) => {
|
||||||
if (job) {
|
if (job) {
|
||||||
logger.error('job failed', {
|
logger.error('job failed', {
|
||||||
|
jobId: job.id,
|
||||||
worker: worker.name,
|
worker: worker.name,
|
||||||
data: job.data,
|
data: job.data,
|
||||||
error: job.failedReason,
|
error: job.failedReason,
|
||||||
@@ -102,6 +103,7 @@ export async function bootWorkers() {
|
|||||||
(worker as Worker).on('completed', (job) => {
|
(worker as Worker).on('completed', (job) => {
|
||||||
if (job) {
|
if (job) {
|
||||||
logger.info('job completed', {
|
logger.info('job completed', {
|
||||||
|
jobId: job.id,
|
||||||
worker: worker.name,
|
worker: worker.name,
|
||||||
data: job.data,
|
data: job.data,
|
||||||
elapsed:
|
elapsed:
|
||||||
|
|||||||
@@ -69,6 +69,8 @@ export async function createSessionEnd(
|
|||||||
reqId: job.data.payload.properties?.__reqId ?? 'unknown',
|
reqId: job.data.payload.properties?.__reqId ?? 'unknown',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
logger.info('Processing session end job');
|
||||||
|
|
||||||
const payload = job.data.payload;
|
const payload = job.data.payload;
|
||||||
|
|
||||||
const events = await getNecessarySessionEvents({
|
const events = await getNecessarySessionEvents({
|
||||||
@@ -92,9 +94,13 @@ export async function createSessionEnd(
|
|||||||
const sessionDuration =
|
const sessionDuration =
|
||||||
lastEvent.createdAt.getTime() - sessionStart.createdAt.getTime();
|
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,
|
sessionStart,
|
||||||
lastEvent,
|
lastEvent,
|
||||||
screenViews,
|
screenViews,
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ async function createEventAndNotify(
|
|||||||
logger.info('Creating event', { event: payload, jobData });
|
logger.info('Creating event', { event: payload, jobData });
|
||||||
const [event] = await Promise.all([
|
const [event] = await Promise.all([
|
||||||
createEvent(payload),
|
createEvent(payload),
|
||||||
checkNotificationRulesForEvent(payload),
|
checkNotificationRulesForEvent(payload).catch(() => {}),
|
||||||
]);
|
]);
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
@@ -188,27 +188,21 @@ export async function incomingEventPure(
|
|||||||
} as Partial<IServiceCreateEventPayload>) as IServiceCreateEventPayload;
|
} as Partial<IServiceCreateEventPayload>) as IServiceCreateEventPayload;
|
||||||
|
|
||||||
if (!sessionEnd) {
|
if (!sessionEnd) {
|
||||||
// Too avoid several created sessions we just throw if a lock exists
|
logger.info('Creating session start event', { event: payload });
|
||||||
// This will than retry the job
|
await createSessionStart({ payload }).catch((error) => {
|
||||||
if (job) {
|
logger.error('Error creating session start event', { event: payload });
|
||||||
const lock = await getLock(
|
throw error;
|
||||||
`create-session-end:${currentDeviceId}`,
|
});
|
||||||
'locked',
|
|
||||||
1000,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!lock) {
|
|
||||||
await job.moveToDelayed(Date.now() + 50, token);
|
|
||||||
throw new DelayedError();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
await createSessionStart({ payload });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const event = await createEventAndNotify(payload, jobPayload, logger);
|
const event = await createEventAndNotify(payload, jobPayload, logger);
|
||||||
|
|
||||||
if (!sessionEnd) {
|
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;
|
return event;
|
||||||
|
|||||||
Reference in New Issue
Block a user