From 2b67fbcd982d0dec6d9dac11eb8686489dba671a Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Sat, 27 Jul 2024 12:41:01 +0200 Subject: [PATCH] improve slightly concurrency run min started_at query --- backend/migrations/20240727103951_min_started_at_index.down.sql | 1 + backend/migrations/20240727103951_min_started_at_index.up.sql | 1 + backend/windmill-queue/src/jobs.rs | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 backend/migrations/20240727103951_min_started_at_index.down.sql create mode 100644 backend/migrations/20240727103951_min_started_at_index.up.sql diff --git a/backend/migrations/20240727103951_min_started_at_index.down.sql b/backend/migrations/20240727103951_min_started_at_index.down.sql new file mode 100644 index 0000000000..d2f607c5b8 --- /dev/null +++ b/backend/migrations/20240727103951_min_started_at_index.down.sql @@ -0,0 +1 @@ +-- Add down migration script here diff --git a/backend/migrations/20240727103951_min_started_at_index.up.sql b/backend/migrations/20240727103951_min_started_at_index.up.sql new file mode 100644 index 0000000000..ca122b240c --- /dev/null +++ b/backend/migrations/20240727103951_min_started_at_index.up.sql @@ -0,0 +1 @@ +CREATE INDEX IF NOT EXISTS queue_concurrency_started_at ON queue (workspace_id, script_path, started_at) WHERE concurrent_limit > 0 AND running = true AND job_kind != 'dependencies' AND canceled = false;-- Add up migration script here diff --git a/backend/windmill-queue/src/jobs.rs b/backend/windmill-queue/src/jobs.rs index c433179791..526cae2315 100644 --- a/backend/windmill-queue/src/jobs.rs +++ b/backend/windmill-queue/src/jobs.rs @@ -1761,7 +1761,7 @@ pub async fn pull( let min_started_at = sqlx::query!( "SELECT COALESCE((SELECT MIN(started_at) as min_started_at FROM queue - WHERE script_path = $1 AND job_kind != 'dependencies' AND running = true AND workspace_id = $2 AND canceled = false), $3) as min_started_at, now() AS now", + WHERE script_path = $1 AND job_kind != 'dependencies' AND running = true AND workspace_id = $2 AND canceled = false AND concurrent_limit > 0), $3) as min_started_at, now() AS now", job_script_path, &pulled_job.workspace_id, completed_count.max_ended_at