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 ( ...@@ -13,8 +13,9 @@ import (
func TestWriteToDB4(t *testing.T) { func TestWriteToDB4(t *testing.T) {
db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{}) 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 { 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() manager := NewManager()
...@@ -45,13 +46,13 @@ func TestWriteToDB4(t *testing.T) { ...@@ -45,13 +46,13 @@ func TestWriteToDB4(t *testing.T) {
err = manager.ScheduleJob(job, scheduler) err = manager.ScheduleJob(job, scheduler)
assert.Nil(t, err) assert.Nil(t, err)
time.Sleep(200 * time.Millisecond) time.Sleep(100 * time.Millisecond)
assert.Equal(t, 21, job.GetStats().RunCount)
Info("WaitSync")
manager.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 var tmpJob JobPersistence
err = db.Preload("Stats").First(&tmpJob, "id = ?", "job3").Error err = db.Preload("Stats").First(&tmpJob, "id = ?", "job3").Error
......
...@@ -88,7 +88,7 @@ func (s *JobSyncer) ResetStats(job GenericJob) error { ...@@ -88,7 +88,7 @@ func (s *JobSyncer) ResetStats(job GenericJob) error {
if s.manager == nil || s.manager.database == nil { if s.manager == nil || s.manager.database == nil {
return ErrNoDatabaseConnection 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 { ...@@ -137,13 +137,20 @@ func update(job *JobPersistence, db *gorm.DB) error {
return ErrNoDatabaseConnection return ErrNoDatabaseConnection
} }
permJob := job.GetPersistence()
return db.Transaction(func(tx *gorm.DB) error { return db.Transaction(func(tx *gorm.DB) error {
if permJob.Stats != (JobStats{}) { if job.Stats != (JobStats{}) {
if err := tx.Model(&permJob).Select("Stats").Updates(map[string]interface{}{"stats": permJob.Stats}).Error; err != nil { Info("Updating stats for job %s", job.ID)
return err
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 { ...@@ -180,6 +187,11 @@ func save(job *JobPersistence, db *gorm.DB) error {
if job.Stats != (JobStats{}) { if job.Stats != (JobStats{}) {
job.Stats.JobID = job.ID 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 { if err := tx.Save(&job.Stats).Error; err != nil {
return err return err
} }
......
...@@ -132,6 +132,7 @@ func (eb *EventBus) Publish(name EventName, data any) { ...@@ -132,6 +132,7 @@ func (eb *EventBus) Publish(name EventName, data any) {
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
Error("EventBus: publish panic: %v", r)
eb.SetPublishError(msgID, fmt.Errorf("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