Improve workflow queue cron reliability (#13818)
Improve workflow enqueue cron : instead of relying on the cache to know how many workflows we can enqueue, query the DB. Then set the cache and process the not started workflows. Also adding a second cron that will look for workflows enqueued one hour ago or more and put these back in the not started status. This will allow the first cron to start these again.
This commit is contained in:
+4
-4
@@ -2,12 +2,12 @@ import { Module } from '@nestjs/common';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
|
||||
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
||||
import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module';
|
||||
import { WorkflowCommonModule } from 'src/modules/workflow/common/workflow-common.module';
|
||||
import { AutomatedTriggerWorkspaceService } from 'src/modules/workflow/workflow-trigger/automated-trigger/automated-trigger.workspace-service';
|
||||
import { CronTriggerCronCommand } from 'src/modules/workflow/workflow-trigger/automated-trigger/crons/commands/cron-trigger.cron.command';
|
||||
import { WorkflowCronTriggerCronCommand } from 'src/modules/workflow/workflow-trigger/automated-trigger/crons/commands/workflow-cron-trigger.cron.command';
|
||||
import { CronTriggerCronJob } from 'src/modules/workflow/workflow-trigger/automated-trigger/crons/jobs/cron-trigger.cron.job';
|
||||
import { DatabaseEventTriggerListener } from 'src/modules/workflow/workflow-trigger/automated-trigger/listeners/database-event-trigger.listener';
|
||||
import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
@@ -19,8 +19,8 @@ import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/works
|
||||
AutomatedTriggerWorkspaceService,
|
||||
DatabaseEventTriggerListener,
|
||||
CronTriggerCronJob,
|
||||
CronTriggerCronCommand,
|
||||
WorkflowCronTriggerCronCommand,
|
||||
],
|
||||
exports: [AutomatedTriggerWorkspaceService, CronTriggerCronCommand],
|
||||
exports: [AutomatedTriggerWorkspaceService, WorkflowCronTriggerCronCommand],
|
||||
})
|
||||
export class AutomatedTriggerModule {}
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ import {
|
||||
name: 'cron:workflow:automated-cron-trigger',
|
||||
description: 'Starts a cron job to trigger cron triggered workflows',
|
||||
})
|
||||
export class CronTriggerCronCommand extends CommandRunner {
|
||||
export class WorkflowCronTriggerCronCommand extends CommandRunner {
|
||||
constructor(
|
||||
@InjectMessageQueue(MessageQueue.cronQueue)
|
||||
private readonly messageQueueService: MessageQueueService,
|
||||
Reference in New Issue
Block a user