diff --git a/packages/cron-jobs-core/src/creator.ts b/packages/cron-jobs-core/src/creator.ts index 7418ff158..62607377e 100644 --- a/packages/cron-jobs-core/src/creator.ts +++ b/packages/cron-jobs-core/src/creator.ts @@ -16,6 +16,7 @@ export interface CreateCronJobCreatorOptions { interface CreateCronJobOptions { runOnStart?: boolean; + beforeStart?: () => MaybePromise; } const createCallback = ( @@ -62,6 +63,11 @@ const createCallback = { +const resetPreviousUrlsAsync = async () => { + await pingUrlChannel.clearAsync(); + logger.info("Cleared previous ping urls"); +}; + +export const pingJob = createCronJob("ping", EVERY_MINUTE, { + beforeStart: resetPreviousUrlsAsync, +}).withCallback(async () => { const urls = await pingUrlChannel.getAllAsync(); for (const url of new Set(urls)) { diff --git a/packages/redis/src/lib/channel.ts b/packages/redis/src/lib/channel.ts index 0fd1b45f4..f707e20c0 100644 --- a/packages/redis/src/lib/channel.ts +++ b/packages/redis/src/lib/channel.ts @@ -77,6 +77,12 @@ export const createListChannel = (name: string) => { removeAsync: async (item: TItem) => { await getSetClient.lrem(listChannelName, 0, superjson.stringify(item)); }, + /** + * Clear all items from the channels list + */ + clearAsync: async () => { + await getSetClient.del(listChannelName); + }, /** * Add an item to the channels list * @param item item to add