From e334ba70e5890dbc6bf0228b0e9e16d07e09825c Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Thu, 28 Dec 2023 18:17:49 +0100 Subject: [PATCH] mysql: Add mx_update_job2 trigger Remove the -> CANCELLED housekeeping from the mx_update_job trigger. We no longer set the state to CANCELLED by code. Instead, add a new trigger, which transitions a job from INQ to CANCELLED, when the job_cancelled flag ist set. For Jobs, which are RUNNING, the job_cancelled flag needs to be handled by the daemon, which kills the job. By doing it this way, we don't need any code for jobs getting killed in the LOADED or ASSIGNED states, because these will either transition into RUNNING or - in very eceptional cases - back into INQ. --- mysql/create_trigger.sql | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/mysql/create_trigger.sql b/mysql/create_trigger.sql index 0833974e..f70082b8 100644 --- a/mysql/create_trigger.sql +++ b/mysql/create_trigger.sql @@ -87,17 +87,6 @@ CREATE TRIGGER mxq_update_job BEFORE UPDATE ON mxq_job stats_total_real_sec = stats_total_real_sec + NEW.stats_real_sec WHERE group_id = NEW.group_id; - -- INQ(0) | ASSIGNED(100) | CANCELLING(989) -> CANCELLED(990) - ELSEIF NEW.job_status = 990 AND OLD.job_status IN (0, 100, 989) THEN - - SET NEW.date_start = NOW(); - SET NEW.date_end = NEW.date_start; - - UPDATE mxq_group SET - group_jobs_inq = group_jobs_inq - 1, - group_jobs_cancelled = group_jobs_cancelled + 1 - WHERE group_id = NEW.group_id; - -- LOADED(150) | RUNNING(200) -> UNKNOWN(999) ELSEIF NEW.job_status = 999 AND OLD.job_status IN (150, 200) THEN @@ -162,5 +151,17 @@ CREATE TRIGGER mxq_update_job BEFORE UPDATE ON mxq_job END IF; END; | + +DROP TRIGGER IF EXISTS mxq_update_job2| +CREATE TRIGGER mxq_update_job2 BEFORE UPDATE ON mxq_job + FOR EACH ROW FOLLOWS mxq_update_job + IF NEW.job_status = 0 AND NEW.job_cancelled THEN + SET NEW.job_status = 990; -- CANCELLED + UPDATE mxq_group SET + group_jobs_inq = group_jobs_inq - 1, + group_jobs_cancelled = group_jobs_cancelled + 1 + WHERE group_id = NEW.group_id; + END IF; +| DELIMITER ; UNLOCK TABLES;