Skip to content
Snippets Groups Projects
Commit ac793670 authored by Leo Gordon's avatar Leo Gordon
Browse files

an optimization: do not touch analysis_stats when job.status or job.analysis is not changing

parent 759a38f1
No related branches found
No related tags found
No related merge requests found
...@@ -9,6 +9,7 @@ FOR EACH ROW ...@@ -9,6 +9,7 @@ FOR EACH ROW
status = (CASE WHEN status!='BLOCKED' THEN 'LOADING' ELSE 'BLOCKED' END) status = (CASE WHEN status!='BLOCKED' THEN 'LOADING' ELSE 'BLOCKED' END)
WHERE analysis_id = NEW.analysis_id; WHERE analysis_id = NEW.analysis_id;
CREATE TRIGGER delete_job AFTER DELETE ON job CREATE TRIGGER delete_job AFTER DELETE ON job
FOR EACH ROW FOR EACH ROW
UPDATE analysis_stats SET UPDATE analysis_stats SET
...@@ -22,20 +23,22 @@ DELIMITER $$ ...@@ -22,20 +23,22 @@ DELIMITER $$
CREATE TRIGGER update_job AFTER UPDATE ON job CREATE TRIGGER update_job AFTER UPDATE ON job
FOR EACH ROW FOR EACH ROW
BEGIN CASE WHEN (OLD.status<>NEW.status OR OLD.analysis_id<>NEW.analysis_id) THEN
UPDATE analysis_stats SET BEGIN
total_job_count = total_job_count - 1, UPDATE analysis_stats SET
unclaimed_job_count = unclaimed_job_count - (CASE WHEN (OLD.status = 'READY' AND OLD.semaphore_count <= 0) THEN 1 ELSE 0 END), total_job_count = total_job_count - 1,
done_job_count = done_job_count - (CASE OLD.status WHEN 'DONE' THEN 1 WHEN 'PASSED_ON' THEN 1 ELSE 0 END), unclaimed_job_count = unclaimed_job_count - (CASE WHEN (OLD.status = 'READY' AND OLD.semaphore_count <= 0) THEN 1 ELSE 0 END),
failed_job_count = failed_job_count - (CASE OLD.status WHEN 'FAILED' THEN 1 ELSE 0 END) done_job_count = done_job_count - (CASE OLD.status WHEN 'DONE' THEN 1 WHEN 'PASSED_ON' THEN 1 ELSE 0 END),
WHERE analysis_id = OLD.analysis_id; failed_job_count = failed_job_count - (CASE OLD.status WHEN 'FAILED' THEN 1 ELSE 0 END)
UPDATE analysis_stats SET WHERE analysis_id = OLD.analysis_id;
total_job_count = total_job_count + 1, UPDATE analysis_stats SET
unclaimed_job_count = unclaimed_job_count + (CASE WHEN (NEW.status = 'READY' AND NEW.semaphore_count <= 0) THEN 1 ELSE 0 END), total_job_count = total_job_count + 1,
done_job_count = done_job_count + (CASE NEW.status WHEN 'DONE' THEN 1 WHEN 'PASSED_ON' THEN 1 ELSE 0 END), unclaimed_job_count = unclaimed_job_count + (CASE WHEN (NEW.status = 'READY' AND NEW.semaphore_count <= 0) THEN 1 ELSE 0 END),
failed_job_count = failed_job_count + (CASE NEW.status WHEN 'FAILED' THEN 1 ELSE 0 END) done_job_count = done_job_count + (CASE NEW.status WHEN 'DONE' THEN 1 WHEN 'PASSED_ON' THEN 1 ELSE 0 END),
WHERE analysis_id = NEW.analysis_id; failed_job_count = failed_job_count + (CASE NEW.status WHEN 'FAILED' THEN 1 ELSE 0 END)
END$$ WHERE analysis_id = NEW.analysis_id;
END;
END CASE$$
DELIMITER ; DELIMITER ;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment