Give jobs an ID

This commit is contained in:
William Oldham
2023-11-04 12:34:34 +00:00
parent 4b79a43e15
commit fa1880ba48
5 changed files with 11 additions and 11 deletions

View File

@@ -9,8 +9,6 @@ const maxOffset = 60 * 4;
const secondsOffset = const secondsOffset =
Math.floor(Math.random() * (maxOffset - minOffset)) + minOffset; Math.floor(Math.random() * (maxOffset - minOffset)) + minOffset;
const log = scopedLogger('jobs');
const wait = (sec: number) => const wait = (sec: number) =>
new Promise<void>((resolve) => { new Promise<void>((resolve) => {
setTimeout(() => resolve(), sec * 1000); setTimeout(() => resolve(), sec * 1000);
@@ -20,11 +18,12 @@ const wait = (sec: number) =>
* @param cron crontime in this order: (min of hour) (hour of day) (day of month) (day of week) (sec of month) * @param cron crontime in this order: (min of hour) (hour of day) (day of month) (day of week) (sec of month)
*/ */
export function job( export function job(
name: string, id: string,
cron: string, cron: string,
cb: (ctx: { em: EntityManager; log: Logger }) => Promise<void>, cb: (ctx: { em: EntityManager; log: Logger }) => Promise<void>,
): CronJob { ): CronJob {
log.info(`Registering job '${name}' with cron '${cron}'`); const log = scopedLogger('jobs', { jobId: id });
log.info(`Registering job '${id}' with cron '${cron}'`);
return CronJob.from({ return CronJob.from({
cronTime: cron, cronTime: cron,
onTick: async () => { onTick: async () => {
@@ -35,10 +34,10 @@ export function job(
// actually run the job // actually run the job
try { try {
const em = getORM().em.fork(); const em = getORM().em.fork();
log.info(`Starting job '${name}' with cron '${cron}'`); log.info(`Starting job '${id}' with cron '${cron}'`);
await cb({ em, log }); await cb({ em, log: log });
} catch (err) { } catch (err) {
log.error(`Failed to run '${name}' job!`); log.error(`Failed to run '${id}' job!`);
log.error(err); log.error(err);
} }
}, },

View File

@@ -3,7 +3,7 @@ import { job } from '@/modules/jobs/job';
// every day at 12:00:00 // every day at 12:00:00
export const challengeCodeJob = job( export const challengeCodeJob = job(
'Challenge Code Expiry', 'challenge-code-expiry',
'0 12 * * *', '0 12 * * *',
async ({ em }) => { async ({ em }) => {
await em await em

View File

@@ -4,7 +4,7 @@ import { job } from '@/modules/jobs/job';
// every day at 12:00:00 // every day at 12:00:00
export const sessionExpiryJob = job( export const sessionExpiryJob = job(
'Session Expiry', 'session-expiry',
'0 12 * * *', '0 12 * * *',
async ({ em, log }) => { async ({ em, log }) => {
const deletedSessions = await em const deletedSessions = await em

View File

@@ -4,7 +4,7 @@ import { job } from '@/modules/jobs/job';
// every day at 12:00:00 // every day at 12:00:00
export const userDeletionJob = job( export const userDeletionJob = job(
'User Deletion', 'user-deletion',
'0 12 * * *', '0 12 * * *',
async ({ em, log }) => { async ({ em, log }) => {
const knex = em.getKnex(); const knex = em.getKnex();

View File

@@ -54,11 +54,12 @@ function createWinstonLogger() {
return loggerObj; return loggerObj;
} }
export function scopedLogger(service: string) { export function scopedLogger(service: string, meta: object = {}) {
const logger = createWinstonLogger(); const logger = createWinstonLogger();
logger.defaultMeta = { logger.defaultMeta = {
...logger.defaultMeta, ...logger.defaultMeta,
svc: service, svc: service,
...meta,
}; };
return logger; return logger;
} }