Skip to content
Snippets Groups Projects
Verified Commit db62cbb4 authored by Volker Schukai's avatar Volker Schukai :alien:
Browse files

fix: save all stats #51

parent d2965f23
No related branches found
No related tags found
No related merge requests found
......@@ -13,8 +13,9 @@ import (
func TestWriteToDB4(t *testing.T) {
db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
//db, err := gorm.Open(sqlite.Open("file:/home/vs/workspaces/alvine/cloud/framework/dummy.sqlite"), &gorm.Config{})
if err != nil {
t.Fatalf("a error occurred while opening the database: %v", err)
t.Fatalf("an error occurred while opening the database: %v", err)
}
manager := NewManager()
......@@ -45,13 +46,13 @@ func TestWriteToDB4(t *testing.T) {
err = manager.ScheduleJob(job, scheduler)
assert.Nil(t, err)
time.Sleep(200 * time.Millisecond)
assert.Equal(t, 21, job.GetStats().RunCount)
time.Sleep(100 * time.Millisecond)
Info("WaitSync")
manager.WaitSync()
assert.Equal(t, 21, job.GetStats().RunCount)
// check is stats are the values above
// check the stats are the values above
var tmpJob JobPersistence
err = db.Preload("Stats").First(&tmpJob, "id = ?", "job3").Error
......
......@@ -88,7 +88,7 @@ func (s *JobSyncer) ResetStats(job GenericJob) error {
if s.manager == nil || s.manager.database == nil {
return ErrNoDatabaseConnection
}
return saveJob(job, s.manager.database)
return updateJob(job, s.manager.database)
}
......@@ -137,13 +137,20 @@ func update(job *JobPersistence, db *gorm.DB) error {
return ErrNoDatabaseConnection
}
permJob := job.GetPersistence()
return db.Transaction(func(tx *gorm.DB) error {
if permJob.Stats != (JobStats{}) {
if err := tx.Model(&permJob).Select("Stats").Updates(map[string]interface{}{"stats": permJob.Stats}).Error; err != nil {
return err
if job.Stats != (JobStats{}) {
Info("Updating stats for job %s", job.ID)
if job.Stats.RunCount == 0 {
Info("Stats runCount is 0, skipping update")
}
if err := tx.Model(job.Stats).
Select("*").
Omit("job_id", "created_at").
Updates(job.Stats).Error; err != nil {
return err // Fehler beim Update
}
}
......@@ -180,6 +187,11 @@ func save(job *JobPersistence, db *gorm.DB) error {
if job.Stats != (JobStats{}) {
job.Stats.JobID = job.ID
if job.Stats.RunCount == 0 {
Info("Stats runCount is 0, skipping update")
}
if err := tx.Save(&job.Stats).Error; err != nil {
return err
}
......
......@@ -132,6 +132,7 @@ func (eb *EventBus) Publish(name EventName, data any) {
defer func() {
if r := recover(); r != nil {
Error("EventBus: publish panic: %v", r)
eb.SetPublishError(msgID, fmt.Errorf("publish panic: %v", r))
}
}()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment