mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2024-11-10 08:57:25 +01:00
Introduce job duration update task
This commit is contained in:
parent
47b14f932e
commit
39c09f8565
@ -205,7 +205,10 @@ func (r *JobRepository) UpdateMetadata(job *schema.Job, key, val string) (err er
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = sq.Update("job").Set("meta_data", job.RawMetaData).Where("job.id = ?", job.ID).RunWith(r.stmtCache).Exec(); err != nil {
|
if _, err = sq.Update("job").
|
||||||
|
Set("meta_data", job.RawMetaData).
|
||||||
|
Where("job.id = ?", job.ID).
|
||||||
|
RunWith(r.stmtCache).Exec(); err != nil {
|
||||||
log.Warnf("Error while updating metadata for job, DB ID '%v'", job.ID)
|
log.Warnf("Error while updating metadata for job, DB ID '%v'", job.ID)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -480,6 +483,18 @@ func (r *JobRepository) FindRunningJobs(cluster string) ([]*schema.Job, error) {
|
|||||||
return jobs, nil
|
return jobs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *JobRepository) UpdateDuration() error {
|
||||||
|
if _, err := sq.Update("job").
|
||||||
|
Set("duration", sq.Expr("? - job.start_time", time.Now().Unix())).
|
||||||
|
Where("job_state = running").
|
||||||
|
RunWith(r.stmtCache).Exec(); err != nil {
|
||||||
|
log.Warnf("Error while updating metadata for job, DB ID '%v'", job.ID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (r *JobRepository) FindJobsBetween(startTimeBegin int64, startTimeEnd int64) ([]*schema.Job, error) {
|
func (r *JobRepository) FindJobsBetween(startTimeBegin int64, startTimeEnd int64) ([]*schema.Job, error) {
|
||||||
var query sq.SelectBuilder
|
var query sq.SelectBuilder
|
||||||
|
|
||||||
|
@ -80,6 +80,7 @@ func Start() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
RegisterFootprintWorker()
|
RegisterFootprintWorker()
|
||||||
|
RegisterUpdateDurationWorker()
|
||||||
|
|
||||||
s.Start()
|
s.Start()
|
||||||
}
|
}
|
||||||
|
26
internal/taskManager/updateDurationService.go
Normal file
26
internal/taskManager/updateDurationService.go
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
// Copyright (C) NHR@FAU, University Erlangen-Nuremberg.
|
||||||
|
// All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
package taskManager
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/ClusterCockpit/cc-backend/pkg/log"
|
||||||
|
"github.com/go-co-op/gocron/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
func RegisterUpdateDurationWorker() {
|
||||||
|
log.Info("Register duration update service")
|
||||||
|
|
||||||
|
d, _ := time.ParseDuration("5m")
|
||||||
|
s.NewJob(gocron.DurationJob(d),
|
||||||
|
gocron.NewTask(
|
||||||
|
func() {
|
||||||
|
start := time.Now()
|
||||||
|
log.Printf("Update duration started at %s", start.Format(time.RFC3339))
|
||||||
|
jobRepo.UpdateDuration()
|
||||||
|
log.Print("Update duration is done and took %s", time.Since(start))
|
||||||
|
}))
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user