From 7591edea4cf7f3d46d08301e6b1f3d169b8b8613 Mon Sep 17 00:00:00 2001 From: Lucas Abel <22837557+uael@users.noreply.github.com> Date: Tue, 21 Jan 2025 09:27:40 +0100 Subject: [PATCH] backend: always prioritize flow steps (#5108) When a flow start, his flow steps have lower priority than already scheduled jobs, hence steps are only executed when the queue is drained which considerably increase flow execution time when queue size is significant. This add a very low priority to flow steps in order to prioritize finishing a started flow over new jobs. --- backend/windmill-queue/src/jobs.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/backend/windmill-queue/src/jobs.rs b/backend/windmill-queue/src/jobs.rs index 5b2df07a39..2405be5b61 100644 --- a/backend/windmill-queue/src/jobs.rs +++ b/backend/windmill-queue/src/jobs.rs @@ -3550,6 +3550,12 @@ pub async fn push<'c, 'd>( _low_level_priority }; // else it remains empty, i.e. no priority } + // prioritize flow steps to drain the queue faster + let final_priority = if flow_step_id.is_some() && final_priority.is_none() { + Some(0) + } else { + final_priority + }; let is_running = same_worker; if let Some(flow) = raw_flow.as_ref() {