From 14101857a2d92fea22b8017528dd9260e5894389 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Wed, 3 Dec 2025 18:05:31 +0000 Subject: [PATCH] fix(backend): fix broken cancel selection/all --- ...488c6268a9ff6def647e47394bd0a61d44fddb1b2040d05b7f17.json} | 4 ++-- backend/windmill-api/src/jobs.rs | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) rename backend/.sqlx/{query-51a19a7d611807c8b0957babf821e58e9aa1ce345f1cd5965298fda6f9e158a9.json => query-77f13b7c1e7e488c6268a9ff6def647e47394bd0a61d44fddb1b2040d05b7f17.json} (83%) diff --git a/backend/.sqlx/query-51a19a7d611807c8b0957babf821e58e9aa1ce345f1cd5965298fda6f9e158a9.json b/backend/.sqlx/query-77f13b7c1e7e488c6268a9ff6def647e47394bd0a61d44fddb1b2040d05b7f17.json similarity index 83% rename from backend/.sqlx/query-51a19a7d611807c8b0957babf821e58e9aa1ce345f1cd5965298fda6f9e158a9.json rename to backend/.sqlx/query-77f13b7c1e7e488c6268a9ff6def647e47394bd0a61d44fddb1b2040d05b7f17.json index c50b3531b0..b5b675108d 100644 --- a/backend/.sqlx/query-51a19a7d611807c8b0957babf821e58e9aa1ce345f1cd5965298fda6f9e158a9.json +++ b/backend/.sqlx/query-77f13b7c1e7e488c6268a9ff6def647e47394bd0a61d44fddb1b2040d05b7f17.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "INSERT INTO v2_job_completed AS cj\n ( workspace_id\n , id\n , duration_ms\n , result\n , canceled_by\n , canceled_reason\n , flow_status\n , status\n , worker\n )\n SELECT q.workspace_id\n , q.id\n , 0\n , $4\n , $1\n , 'cancel all'\n , (SELECT flow_status FROM v2_job_status WHERE id = q.id)\n , 'canceled'::job_status\n , worker\n FROM v2_job_queue q\n JOIN v2_job USING (id)\n WHERE q.id = any($2) AND running = false AND parent_job IS NULL AND q.workspace_id = $3 AND trigger IS NULL\n FOR UPDATE SKIP LOCKED\n ON CONFLICT (id) DO NOTHING RETURNING id AS \"id!\"", + "query": "INSERT INTO v2_job_completed AS cj\n ( workspace_id\n , id\n , duration_ms\n , result\n , canceled_by\n , canceled_reason\n , flow_status\n , status\n , worker\n )\n SELECT q.workspace_id\n , q.id\n , 0\n , $4\n , $1\n , 'cancel all'\n , (SELECT flow_status FROM v2_job_status WHERE id = q.id)\n , 'canceled'::job_status\n , worker\n FROM v2_job_queue q\n JOIN v2_job USING (id)\n WHERE q.id = any($2) AND running = false AND parent_job IS NULL AND q.workspace_id = $3 AND trigger_kind IS DISTINCT FROM 'schedule'\n FOR UPDATE SKIP LOCKED\n ON CONFLICT (id) DO NOTHING RETURNING id AS \"id!\"", "describe": { "columns": [ { @@ -21,5 +21,5 @@ false ] }, - "hash": "51a19a7d611807c8b0957babf821e58e9aa1ce345f1cd5965298fda6f9e158a9" + "hash": "77f13b7c1e7e488c6268a9ff6def647e47394bd0a61d44fddb1b2040d05b7f17" } diff --git a/backend/windmill-api/src/jobs.rs b/backend/windmill-api/src/jobs.rs index 968bf41634..011c55cee0 100644 --- a/backend/windmill-api/src/jobs.rs +++ b/backend/windmill-api/src/jobs.rs @@ -2105,6 +2105,7 @@ async fn cancel_jobs( force_cancel: bool, ) -> error::JsonResult> { let mut uuids = vec![]; + tracing::info!("Cancelling jobs: {:?}", jobs); let mut tx = db.begin().await?; let trivial_jobs = sqlx::query!("INSERT INTO v2_job_completed AS cj ( workspace_id @@ -2128,7 +2129,7 @@ async fn cancel_jobs( , worker FROM v2_job_queue q JOIN v2_job USING (id) - WHERE q.id = any($2) AND running = false AND parent_job IS NULL AND q.workspace_id = $3 AND trigger IS NULL + WHERE q.id = any($2) AND running = false AND parent_job IS NULL AND q.workspace_id = $3 AND trigger_kind IS DISTINCT FROM 'schedule' FOR UPDATE SKIP LOCKED ON CONFLICT (id) DO NOTHING RETURNING id AS \"id!\"", username, &jobs, w_id, serde_json::json!({"error": { "message": format!("Job canceled: cancel all by {username}"), "name": "Canceled", "reason": "cancel all", "canceler": username}})) .fetch_all(&mut *tx)