From ba711c48dfd7c04fae2c2afb65e4bfc11537f998 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() {