fix(core): Scheduler tasks should not trigger on follower instances (#10507)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™
2024-08-22 11:46:13 +02:00
committed by GitHub
parent c8ab9b1f84
commit 3428f28a73
3 changed files with 27 additions and 4 deletions

View File

@@ -1,13 +1,24 @@
import { Service } from 'typedi';
import { CronJob } from 'cron';
import type { CronExpression, Workflow } from 'n8n-workflow';
import { InstanceSettings } from './InstanceSettings';
@Service()
export class ScheduledTaskManager {
constructor(private readonly instanceSettings: InstanceSettings) {}
readonly cronJobs = new Map<string, CronJob[]>();
registerCron(workflow: Workflow, cronExpression: CronExpression, onTick: () => void) {
const cronJob = new CronJob(cronExpression, onTick, undefined, true, workflow.timezone);
const cronJob = new CronJob(
cronExpression,
() => {
if (this.instanceSettings.isLeader) onTick();
},
undefined,
true,
workflow.timezone,
);
const cronJobsForWorkflow = this.cronJobs.get(workflow.id);
if (cronJobsForWorkflow) {
cronJobsForWorkflow.push(cronJob);