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

fix: add where statements and add error handling #45

parent 04f9c791
No related branches found
No related tags found
No related merge requests found
...@@ -20,6 +20,8 @@ func TestWriteToDB1(t *testing.T) { ...@@ -20,6 +20,8 @@ func TestWriteToDB1(t *testing.T) {
t.Fatalf("a error occurred while opening the database: %v", err) t.Fatalf("a error occurred while opening the database: %v", err)
} }
gormDB.Logger = gormDB.Logger.LogMode(4)
manager := &Manager{database: gormDB} manager := &Manager{database: gormDB}
saver := NewDBSaver().SetManager(manager) saver := NewDBSaver().SetManager(manager)
...@@ -57,6 +59,16 @@ func TestWriteToDB1(t *testing.T) { ...@@ -57,6 +59,16 @@ func TestWriteToDB1(t *testing.T) {
time.Sleep(1 * time.Second) time.Sleep(1 * time.Second)
saver.Wait()
// check if stats are in database
var stats JobPersistence
err = gormDB.First(&stats, "id = ?", job.GetID()).Error
assert.Nil(t, err)
assert.Equal(t, job.GetID(), stats.ID)
assert.Equal(t, job.GetID(), stats.ID)
err = saver.Stop() err = saver.Stop()
assert.Nil(t, err) assert.Nil(t, err)
......
...@@ -20,6 +20,8 @@ func TestWriteToDB2(t *testing.T) { ...@@ -20,6 +20,8 @@ func TestWriteToDB2(t *testing.T) {
t.Fatalf("a error occurred while opening the database: %v", err) t.Fatalf("a error occurred while opening the database: %v", err)
} }
gormDB.Logger = gormDB.Logger.LogMode(4)
manager := &Manager{database: gormDB} manager := &Manager{database: gormDB}
saver := NewDBSaver().SetManager(manager) saver := NewDBSaver().SetManager(manager)
......
...@@ -188,9 +188,9 @@ func CreateOrUpdateJob(job GenericJob, db *gorm.DB) error { ...@@ -188,9 +188,9 @@ func CreateOrUpdateJob(job GenericJob, db *gorm.DB) error {
} }
} else { } else {
db.Unscoped().Model(&existingJob).Update("deleted_at", nil) tx.Unscoped().Model(&existingJob).Update("deleted_at", nil)
tx.Model(&existingJob.Scheduler).Select( tx.Model(&existingJob).Where("id = ?", existingJob.ID).Select(
[]string{ []string{
"type", "type",
"interval", "interval",
...@@ -215,7 +215,12 @@ func CreateOrUpdateJob(job GenericJob, db *gorm.DB) error { ...@@ -215,7 +215,12 @@ func CreateOrUpdateJob(job GenericJob, db *gorm.DB) error {
} }
} }
tx.Model(&permJob.Stats). if tx.Error != nil {
Trace("Error while updating job", "error", tx.Error)
return tx.Error
}
tx.Model(&permJob.Stats).Where("job_id = ?", permJob.GetID()).
Select( Select(
[]string{ []string{
"run_count", "run_count",
...@@ -246,6 +251,10 @@ func CreateOrUpdateJob(job GenericJob, db *gorm.DB) error { ...@@ -246,6 +251,10 @@ func CreateOrUpdateJob(job GenericJob, db *gorm.DB) error {
} }
func (s *DBSaver) Wait() {
s.jobSaveProgress.Wait()
}
// Stop stops the DBSaver // Stop stops the DBSaver
func (s *DBSaver) Stop() error { func (s *DBSaver) Stop() error {
s.mu.Lock() s.mu.Lock()
...@@ -282,12 +291,14 @@ func exponentialBackoff(retry int) time.Duration { ...@@ -282,12 +291,14 @@ func exponentialBackoff(retry int) time.Duration {
// SaveJob saves a job to the database // SaveJob saves a job to the database
func (s *DBSaver) SaveJob(job GenericJob) error { func (s *DBSaver) SaveJob(job GenericJob) error {
s.jobSaveProgress.Add(1)
s.mu.Lock() s.mu.Lock()
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
Error("Error while saving job", "error", r) Error("Error while saving job", "error", r)
} }
s.mu.Unlock() s.mu.Unlock()
s.jobSaveProgress.Done()
}() }()
if s.saveChannel == nil { if s.saveChannel == nil {
......
...@@ -501,7 +501,15 @@ func (m *Manager) Stop() error { ...@@ -501,7 +501,15 @@ func (m *Manager) Stop() error {
} }
if m.dbSaver != nil { if m.dbSaver != nil {
m.dbSaver.Stop() err = m.dbSaver.Stop()
if err != nil {
if wrappedErr == nil {
wrappedErr = fmt.Errorf("Error: ")
}
wrappedErr = fmt.Errorf("%w\n%s", wrappedErr, err.Error())
}
} }
return wrappedErr return wrappedErr
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment