1+ -- Clear frame_state_display_overrides when a job gets deleted
2+
3+ CREATE OR REPLACE FUNCTION trigger__before_delete_job ()
4+ RETURNS TRIGGER AS $body$
5+ DECLARE
6+ js JobStatType;
7+ BEGIN
8+ IF NOT EXISTS (SELECT FROM config WHERE str_key= ' DISABLE_HISTORY' ) THEN
9+
10+ SELECT
11+ job_usage .int_core_time_success ,
12+ job_usage .int_core_time_fail ,
13+ job_usage .int_gpu_time_success ,
14+ job_usage .int_gpu_time_fail ,
15+ job_stat .int_waiting_count ,
16+ job_stat .int_dead_count ,
17+ job_stat .int_depend_count ,
18+ job_stat .int_eaten_count ,
19+ job_stat .int_succeeded_count ,
20+ job_stat .int_running_count ,
21+ job_mem .int_max_rss ,
22+ job_mem .int_gpu_mem_max
23+ INTO
24+ js
25+ FROM
26+ job_mem,
27+ job_usage,
28+ job_stat
29+ WHERE
30+ job_usage .pk_job = job_mem .pk_job
31+ AND
32+ job_stat .pk_job = job_mem .pk_job
33+ AND
34+ job_mem .pk_job = OLD .pk_job ;
35+
36+ UPDATE
37+ job_history
38+ SET
39+ pk_dept = OLD .pk_dept ,
40+ int_core_time_success = js .int_core_time_success ,
41+ int_core_time_fail = js .int_core_time_fail ,
42+ int_gpu_time_success = js .int_gpu_time_success ,
43+ int_gpu_time_fail = js .int_gpu_time_fail ,
44+ int_frame_count = OLD .int_frame_count ,
45+ int_layer_count = OLD .int_layer_count ,
46+ int_waiting_count = js .int_waiting_count ,
47+ int_dead_count = js .int_dead_count ,
48+ int_depend_count = js .int_depend_count ,
49+ int_eaten_count = js .int_eaten_count ,
50+ int_succeeded_count = js .int_succeeded_count ,
51+ int_running_count = js .int_running_count ,
52+ int_max_rss = js .int_max_rss ,
53+ int_gpu_mem_max = js .int_gpu_mem_max ,
54+ b_archived = true,
55+ int_ts_stopped = COALESCE(epoch(OLD .ts_stopped ), epoch(current_timestamp ))
56+ WHERE
57+ pk_job = OLD .pk_job ;
58+
59+ END IF;
60+
61+ DELETE FROM depend WHERE pk_job_depend_on= OLD .pk_job OR pk_job_depend_er= OLD .pk_job ;
62+
63+ -- This is the only real change on the trigger
64+ DELETE FROM frame_state_display_overrides WHERE pk_frame in (
65+ select pk_frame from frame f where f .pk_job = OLD .pk_job
66+ );
67+
68+ DELETE FROM frame WHERE pk_job= OLD .pk_job ;
69+ DELETE FROM layer WHERE pk_job= OLD .pk_job ;
70+ DELETE FROM job_env WHERE pk_job= OLD .pk_job ;
71+ DELETE FROM job_stat WHERE pk_job= OLD .pk_job ;
72+ DELETE FROM job_resource WHERE pk_job= OLD .pk_job ;
73+ DELETE FROM job_usage WHERE pk_job= OLD .pk_job ;
74+ DELETE FROM job_mem WHERE pk_job= OLD .pk_job ;
75+ DELETE FROM job_post where pk_job = OLD .pk_job ;
76+ DELETE FROM comments WHERE pk_job= OLD .pk_job ;
77+
78+ RETURN OLD;
79+ END
80+ $body$
81+ LANGUAGE PLPGSQL;
0 commit comments