@@ -28,6 +28,9 @@ var queryOldJobsTagsDelete string
2828//go:embed queries/old_jobs_delete.sql
2929var queryOldJobsDelete string
3030
31+ //go:embed queries/old_job_biggest_id.sql
32+ var queryOldJobsBiggestID string
33+
3134var (
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}
0 commit comments