From 4aa41773c417c1f7637542fa95118fadb6c40fa7 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Fri, 7 Apr 2023 18:16:08 +0200 Subject: [PATCH] fix: Expose worker errors with stack trace --- packages/backend/src/workers/action.ts | 16 +++++++++------- packages/backend/src/workers/delete-user.ee.ts | 15 ++++++++++----- packages/backend/src/workers/email.ts | 11 +++++++---- packages/backend/src/workers/flow.ts | 18 ++++++++++++------ packages/backend/src/workers/trigger.ts | 18 ++++++++++++------ 5 files changed, 50 insertions(+), 28 deletions(-) diff --git a/packages/backend/src/workers/action.ts b/packages/backend/src/workers/action.ts index 1cf16237..dcc79cf5 100644 --- a/packages/backend/src/workers/action.ts +++ b/packages/backend/src/workers/action.ts @@ -23,9 +23,8 @@ const DEFAULT_DELAY_DURATION = 0; export const worker = new Worker( 'action', async (job) => { - const { stepId, flowId, executionId, computedParameters, executionStep } = await processAction( - job.data as JobData - ); + const { stepId, flowId, executionId, computedParameters, executionStep } = + await processAction(job.data as JobData); const step = await Step.query().findById(stepId).throwIfNotFound(); const nextStep = await step.getNextStep(); @@ -64,14 +63,17 @@ worker.on('completed', (job) => { }); worker.on('failed', (job, err) => { - logger.info( - `JOB ID: ${job.id} - FLOW ID: ${job.data.flowId} has failed to start with ${err.message}` - ); + const errorMessage = ` + JOB ID: ${job.id} - FLOW ID: ${job.data.flowId} has failed to start with ${err.message} + \n ${err.stack} + `; + + logger.error(errorMessage); Sentry.captureException(err, { extra: { jobId: job.id, - } + }, }); }); diff --git a/packages/backend/src/workers/delete-user.ee.ts b/packages/backend/src/workers/delete-user.ee.ts index 12a0118f..0219c43d 100644 --- a/packages/backend/src/workers/delete-user.ee.ts +++ b/packages/backend/src/workers/delete-user.ee.ts @@ -18,7 +18,9 @@ export const worker = new Worker( await user.$relatedQuery('executions').select('executions.id') ).map((execution: Execution) => execution.id); - await ExecutionStep.query().hardDelete().whereIn('execution_id', executionIds); + await ExecutionStep.query() + .hardDelete() + .whereIn('execution_id', executionIds); await user.$relatedQuery('executions').hardDelete(); await user.$relatedQuery('steps').hardDelete(); await user.$relatedQuery('flows').hardDelete(); @@ -36,14 +38,17 @@ worker.on('completed', (job) => { }); worker.on('failed', (job, err) => { - logger.info( - `JOB ID: ${job.id} - The user with the ID of '${job.data.id}' has failed to be deleted! ${err.message}` - ); + const errorMessage = ` + JOB ID: ${job.id} - The user with the ID of '${job.data.id}' has failed to be deleted! ${err.message} + \n ${err.stack} + `; + + logger.error(errorMessage); Sentry.captureException(err, { extra: { jobId: job.id, - } + }, }); }); diff --git a/packages/backend/src/workers/email.ts b/packages/backend/src/workers/email.ts index ad8aba57..68f368d5 100644 --- a/packages/backend/src/workers/email.ts +++ b/packages/backend/src/workers/email.ts @@ -29,14 +29,17 @@ worker.on('completed', (job) => { }); worker.on('failed', (job, err) => { - logger.info( - `JOB ID: ${job.id} - ${job.data.subject} email to ${job.data.email} has failed to send with ${err.message}` - ); + const errorMessage = ` + JOB ID: ${job.id} - ${job.data.subject} email to ${job.data.email} has failed to send with ${err.message} + \n ${err.stack} + `; + + logger.error(errorMessage); Sentry.captureException(err, { extra: { jobId: job.id, - } + }, }); }); diff --git a/packages/backend/src/workers/flow.ts b/packages/backend/src/workers/flow.ts index f8b2b01b..884be7d8 100644 --- a/packages/backend/src/workers/flow.ts +++ b/packages/backend/src/workers/flow.ts @@ -6,7 +6,10 @@ import logger from '../helpers/logger'; import triggerQueue from '../queues/trigger'; import { processFlow } from '../services/flow'; import Flow from '../models/flow'; -import { REMOVE_AFTER_30_DAYS_OR_150_JOBS, REMOVE_AFTER_7_DAYS_OR_50_JOBS } from '../helpers/remove-job-configuration'; +import { + REMOVE_AFTER_30_DAYS_OR_150_JOBS, + REMOVE_AFTER_7_DAYS_OR_50_JOBS, +} from '../helpers/remove-job-configuration'; export const worker = new Worker( 'flow', @@ -30,7 +33,7 @@ export const worker = new Worker( const jobOptions = { removeOnComplete: REMOVE_AFTER_7_DAYS_OR_50_JOBS, removeOnFail: REMOVE_AFTER_30_DAYS_OR_150_JOBS, - } + }; for (const triggerItem of reversedData) { const jobName = `${triggerStep.id}-${triggerItem.meta.internalId}`; @@ -64,14 +67,17 @@ worker.on('completed', (job) => { }); worker.on('failed', (job, err) => { - logger.info( - `JOB ID: ${job.id} - FLOW ID: ${job.data.flowId} has failed to start with ${err.message}` - ); + const errorMessage = ` + JOB ID: ${job.id} - FLOW ID: ${job.data.flowId} has failed to start with ${err.message} + \n ${err.stack} + `; + + logger.error(errorMessage); Sentry.captureException(err, { extra: { jobId: job.id, - } + }, }); }); diff --git a/packages/backend/src/workers/trigger.ts b/packages/backend/src/workers/trigger.ts index 953bbf33..2062b99f 100644 --- a/packages/backend/src/workers/trigger.ts +++ b/packages/backend/src/workers/trigger.ts @@ -7,7 +7,10 @@ import logger from '../helpers/logger'; import actionQueue from '../queues/action'; import Step from '../models/step'; import { processTrigger } from '../services/trigger'; -import { REMOVE_AFTER_30_DAYS_OR_150_JOBS, REMOVE_AFTER_7_DAYS_OR_50_JOBS } from '../helpers/remove-job-configuration'; +import { + REMOVE_AFTER_30_DAYS_OR_150_JOBS, + REMOVE_AFTER_7_DAYS_OR_50_JOBS, +} from '../helpers/remove-job-configuration'; type JobData = { flowId: string; @@ -38,7 +41,7 @@ export const worker = new Worker( const jobOptions = { removeOnComplete: REMOVE_AFTER_7_DAYS_OR_50_JOBS, removeOnFail: REMOVE_AFTER_30_DAYS_OR_150_JOBS, - } + }; await actionQueue.add(jobName, jobPayload, jobOptions); }, @@ -50,14 +53,17 @@ worker.on('completed', (job) => { }); worker.on('failed', (job, err) => { - logger.info( - `JOB ID: ${job.id} - FLOW ID: ${job.data.flowId} has failed to start with ${err.message}` - ); + const errorMessage = ` + JOB ID: ${job.id} - FLOW ID: ${job.data.flowId} has failed to start with ${err.message} + \n ${err.stack} + `; + + logger.error(errorMessage); Sentry.captureException(err, { extra: { jobId: job.id, - } + }, }); });