Skip to content

Commit

Permalink
mysql: Only run trigger if job_status changes
Browse files Browse the repository at this point in the history
  • Loading branch information
mariux committed Jun 2, 2015
1 parent f7f248f commit 46de578
Showing 1 changed file with 59 additions and 68 deletions.
127 changes: 59 additions & 68 deletions mysql/create_tables
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ ALTER TABLE mxq_group
ADD COLUMN stats_total_stime_sec_finished INT8 UNSIGNED NOT NULL DEFAULT 0,
ADD COLUMN stats_total_real_sec_finished INT8 UNSIGNED NOT NULL DEFAULT 0;


ALTER TABLE mxq_job
ADD INDEX (group_id);

Expand Down Expand Up @@ -160,77 +159,71 @@ CREATE TRIGGER mxq_add_job AFTER INSERT ON mxq_job
DROP TRIGGER mxq_update_job|
CREATE TRIGGER mxq_update_job BEFORE UPDATE ON mxq_job
FOR EACH ROW BEGIN
IF NEW.job_status = 200 AND OLD.job_status IN (0, 100, 150) THEN
UPDATE mxq_group SET
group_jobs_inq=group_jobs_inq-1,
group_jobs_running=group_jobs_running+1,
group_slots_running=group_slots_running+NEW.host_slots,
group_mtime=NULL
WHERE group_id=NEW.group_id;
ELSEIF NEW.job_status IN (400, 750) AND OLD.job_status IN (200, 250, 300, 350) THEN
UPDATE mxq_group SET
group_slots_running=group_slots_running-NEW.host_slots,
group_jobs_running=group_jobs_running-1,
group_jobs_failed=group_jobs_failed+1,
stats_max_maxrss=GREATEST(stats_max_maxrss, NEW.stats_maxrss),
stats_max_utime_sec=GREATEST(stats_max_utime_sec, NEW.stats_utime_sec),
stats_max_stime_sec=GREATEST(stats_max_stime_sec, NEW.stats_stime_sec),
stats_max_real_sec=GREATEST(stats_max_real_sec, NEW.stats_real_sec),
group_mtime=NULL
WHERE group_id=NEW.group_id;
ELSEIF NEW.job_status = 990 AND OLD.job_status = 0 THEN
UPDATE mxq_group SET
group_jobs_inq=group_jobs_inq-1,
group_jobs_cancelled=group_jobs_cancelled+1,
group_mtime=NULL
WHERE group_id=NEW.group_id;
ELSEIF NEW.job_status = 999 AND OLD.job_status IN (200, 250) THEN
UPDATE mxq_group SET
group_slots_running=group_slots_running-NEW.host_slots,
group_jobs_running=group_jobs_running-1,
group_jobs_unknown=group_jobs_unknown+1,
group_mtime=NULL
WHERE group_id=NEW.group_id;
ELSEIF NEW.job_status = 999 AND OLD.job_status IN (400, 750) THEN
UPDATE mxq_group SET
group_slots_running=group_slots_running-NEW.host_slots,
group_jobs_failed=group_jobs_failed-1,
group_jobs_unknown=group_jobs_unknown+1,
group_mtime=NULL
WHERE group_id=NEW.group_id;
ELSEIF NEW.job_status = 1000 AND OLD.job_status IN (200, 250, 300, 350) THEN
UPDATE mxq_group SET
group_slots_running=group_slots_running-NEW.host_slots,
group_jobs_running=group_jobs_running-1,
group_jobs_finished=group_jobs_finished+1,
stats_max_maxrss=GREATEST(stats_max_maxrss, NEW.stats_maxrss),
stats_max_utime_sec=GREATEST(stats_max_utime_sec, NEW.stats_utime_sec),
stats_max_stime_sec=GREATEST(stats_max_stime_sec, NEW.stats_stime_sec),
stats_max_real_sec=GREATEST(stats_max_real_sec, NEW.stats_real_sec),
group_mtime=NULL
WHERE group_id=NEW.group_id;
ELSEIF NEW.job_status != 990 THEN
UPDATE mxq_group SET
stats_max_maxrss=GREATEST(stats_max_maxrss, NEW.stats_maxrss),
stats_max_utime_sec=GREATEST(stats_max_utime_sec, NEW.stats_utime_sec),
stats_max_stime_sec=GREATEST(stats_max_stime_sec, NEW.stats_stime_sec),
stats_max_real_sec=GREATEST(stats_max_real_sec, NEW.stats_real_sec),
group_mtime=NULL
WHERE group_id=NEW.group_id;
IF NEW.job_status != OLD.job_status THEN
IF NEW.job_status = 200 AND OLD.job_status IN (0, 100, 150) THEN
UPDATE mxq_group SET
group_jobs_inq=group_jobs_inq-1,
group_jobs_running=group_jobs_running+1,
group_slots_running=group_slots_running+NEW.host_slots,
group_mtime=NULL
WHERE group_id=NEW.group_id;
ELSEIF NEW.job_status IN (400, 750) AND OLD.job_status IN (200, 250, 300, 350) THEN
UPDATE mxq_group SET
group_slots_running=group_slots_running-NEW.host_slots,
group_jobs_running=group_jobs_running-1,
group_jobs_failed=group_jobs_failed+1,
stats_max_maxrss=GREATEST(stats_max_maxrss, NEW.stats_maxrss),
stats_max_utime_sec=GREATEST(stats_max_utime_sec, NEW.stats_utime_sec),
stats_max_stime_sec=GREATEST(stats_max_stime_sec, NEW.stats_stime_sec),
stats_max_real_sec=GREATEST(stats_max_real_sec, NEW.stats_real_sec),
group_mtime=NULL
WHERE group_id=NEW.group_id;
ELSEIF NEW.job_status = 990 AND OLD.job_status = 0 THEN
UPDATE mxq_group SET
group_jobs_inq=group_jobs_inq-1,
group_jobs_cancelled=group_jobs_cancelled+1,
group_mtime=NULL
WHERE group_id=NEW.group_id;
ELSEIF NEW.job_status = 999 AND OLD.job_status IN (200, 250) THEN
UPDATE mxq_group SET
group_slots_running=group_slots_running-NEW.host_slots,
group_jobs_running=group_jobs_running-1,
group_jobs_unknown=group_jobs_unknown+1,
group_mtime=NULL
WHERE group_id=NEW.group_id;
ELSEIF NEW.job_status = 999 AND OLD.job_status IN (400, 750) THEN
UPDATE mxq_group SET
group_slots_running=group_slots_running-NEW.host_slots,
group_jobs_failed=group_jobs_failed-1,
group_jobs_unknown=group_jobs_unknown+1,
group_mtime=NULL
WHERE group_id=NEW.group_id;
ELSEIF NEW.job_status = 1000 AND OLD.job_status IN (200, 250, 300, 350) THEN
UPDATE mxq_group SET
group_slots_running=group_slots_running-NEW.host_slots,
group_jobs_running=group_jobs_running-1,
group_jobs_finished=group_jobs_finished+1,
stats_max_maxrss=GREATEST(stats_max_maxrss, NEW.stats_maxrss),
stats_max_utime_sec=GREATEST(stats_max_utime_sec, NEW.stats_utime_sec),
stats_max_stime_sec=GREATEST(stats_max_stime_sec, NEW.stats_stime_sec),
stats_max_real_sec=GREATEST(stats_max_real_sec, NEW.stats_real_sec),
group_mtime=NULL
WHERE group_id=NEW.group_id;
ELSEIF NEW.job_status != 990 THEN
UPDATE mxq_group SET
stats_max_maxrss=GREATEST(stats_max_maxrss, NEW.stats_maxrss),
stats_max_utime_sec=GREATEST(stats_max_utime_sec, NEW.stats_utime_sec),
stats_max_stime_sec=GREATEST(stats_max_stime_sec, NEW.stats_stime_sec),
stats_max_real_sec=GREATEST(stats_max_real_sec, NEW.stats_real_sec),
group_mtime=NULL
WHERE group_id=NEW.group_id;
END IF;
END IF;
END;
|
DELIMITER ;
UNLOCK TABLES;









DROP TABLE mxq_server;
CREATE TABLE IF NOT EXISTS mxq_server (
host_id INT4 UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
Expand All @@ -249,7 +242,5 @@ CREATE TABLE IF NOT EXISTS mxq_server (

server_start TIMESTAMP DEFAULT 0,
server_stop TIMESTAMP DEFAULT 0,


);

0 comments on commit 46de578

Please sign in to comment.