Add a limit to workflow queue per workspace (#12908)

- new status `ENQUEUED` added. With a command to backfill
- counter in cache per workspace, managed by a new service
[workflow-run-queue.workspace-service.ts](https://github.com/twentyhq/twenty/compare/tt-improve-workflow-run-queueing?expand=1#diff-1e2de2a48cd482a3bd7e8dedf1150a19d0b200afbd9282181a24ecddddb56927)
- cron added that will run every minute to look for not started
workflows

Here is the new flow:
- When executing a workflow, we check if the queue is not full. If not,
run is created as `ENQUEUED` and the run workflow job is triggered as
usual. If full, create the run as NOT_STARTED and do not trigger the job
- Cron will look for NOT_STARTED workflows and queue some if there is
some place again
- Only MANUAL and Form submit skip the queue limit
This commit is contained in:
Thomas Trompette
2025-06-30 14:27:57 +02:00
committed by GitHub
parent fcb869fdd9
commit 8272e5dfd0
22 changed files with 501 additions and 32 deletions

View File

@ -309,6 +309,7 @@ export const workflowRunStatusSchema = z.enum([
'RUNNING',
'COMPLETED',
'FAILED',
'ENQUEUED',
]);
export const workflowRunSchema = z

View File

@ -27,6 +27,13 @@ export const getWorkflowRunStatusTagProps = ({
};
}
if (workflowRunStatus === 'ENQUEUED') {
return {
color: 'blue',
text: 'Enqueued',
};
}
return {
color: 'red',
text: 'Failed',