Skip to content

Commit a7b5854

Browse files
committed
Improve code remove transaction managment from it
1 parent 58ad279 commit a7b5854

6 files changed

Lines changed: 37 additions & 21 deletions

File tree

internal/pkg/janitor/job.go

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ var queryOldJobsTagsDelete string
2828
//go:embed queries/old_jobs_delete.sql
2929
var queryOldJobsDelete string
3030

31+
//go:embed queries/old_job_biggest_id.sql
32+
var queryOldJobsBiggestID string
33+
3134
var (
3235
queriesForOldJobsCleanup = []string{
3336
queryOldJobsClusterTagsDelete,
@@ -101,33 +104,31 @@ func (j *Janitor) cleanupFinishedJobs() error {
101104
if j.FinishedJobRetentionDays == 0 {
102105
return nil
103106
}
104-
// Start transactional session
105-
sess, err := j.db.NewSession(true)
107+
// open session
108+
sess, err := j.db.NewSession(false)
106109
if err != nil {
107110
return err
108111
}
109112
defer sess.Close()
110113

111-
defer func() {
112-
_ = sess.Rollback()
113-
}()
114114

115-
exec := func(query string, args ...any) error {
116-
if _, err := sess.Exec(query, args...); err != nil {
117-
return fmt.Errorf("failed to exec query %q: %w", query, err)
118-
}
119-
return nil
115+
// get biggest ID of old jobs
116+
row, err := sess.QueryRow(queryOldJobsBiggestID, j.FinishedJobRetentionDays)
117+
if err != nil {
118+
return fmt.Errorf("failed to get biggest ID of old jobs: %w", err)
119+
}
120+
121+
var biggestID int
122+
if err := row.Scan(&biggestID); err != nil {
123+
return fmt.Errorf("failed to get biggest ID of old jobs: %w", err)
120124
}
121125

126+
// remove old jobs data
122127
for _, q := range queriesForOldJobsCleanup {
123-
if err := exec(q, j.FinishedJobRetentionDays); err != nil {
128+
if _, err := sess.Exec(q, biggestID); err != nil {
124129
return err
125130
}
126131
}
127132

128-
if err := sess.Commit(); err != nil {
129-
return fmt.Errorf("failed to commit cleanup transaction: %w", err)
130-
}
131-
132133
return nil
133134
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
SELECT MAX(system_job_id) FROM jobs WHERE updated_at < extract(epoch FROM now() - ($1 || ' days')::interval)::int;
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
DELETE FROM job_cluster_tags
22
WHERE system_job_id IN (
3-
SELECT system_job_id FROM jobs WHERE updated_at < extract(epoch FROM now() - ($1 || ' days')::interval)::int
3+
SELECT system_job_id
4+
FROM job_cluster_tags
5+
WHERE system_job_id <= $1
6+
LIMIT 1000
47
);
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11

22
DELETE FROM job_command_tags
33
WHERE system_job_id IN (
4-
SELECT system_job_id FROM jobs WHERE updated_at < extract(epoch FROM now() - ($1 || ' days')::interval)::int
5-
);
4+
SELECT system_job_id
5+
FROM job_command_tags
6+
WHERE system_job_id <= $1
7+
LIMIT 1000
8+
);
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11

22
DELETE FROM jobs
3-
WHERE updated_at < extract(epoch FROM now() - ($1 || ' days')::interval)::int;
3+
WHERE system_job_id IN (
4+
SELECT system_job_id
5+
FROM jobs
6+
WHERE system_job_id <= $1
7+
LIMIT 1000
8+
);
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
DELETE FROM job_tags
22
WHERE system_job_id IN (
3-
SELECT system_job_id FROM jobs WHERE updated_at < extract(epoch FROM now() - ($1 || ' days')::interval)::int
4-
);
3+
SELECT system_job_id
4+
FROM job_tags
5+
WHERE system_job_id <= $1
6+
LIMIT 1000
7+
);

0 commit comments

Comments
 (0)