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
Branches
Tags
No related merge requests found
......@@ -20,6 +20,8 @@ func TestWriteToDB1(t *testing.T) {
t.Fatalf("a error occurred while opening the database: %v", err)
}
gormDB.Logger = gormDB.Logger.LogMode(4)
manager := &Manager{database: gormDB}
saver := NewDBSaver().SetManager(manager)
......@@ -57,6 +59,16 @@ func TestWriteToDB1(t *testing.T) {
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()
assert.Nil(t, err)
......
......@@ -20,6 +20,8 @@ func TestWriteToDB2(t *testing.T) {
t.Fatalf("a error occurred while opening the database: %v", err)
}
gormDB.Logger = gormDB.Logger.LogMode(4)
manager := &Manager{database: gormDB}
saver := NewDBSaver().SetManager(manager)
......
......@@ -188,9 +188,9 @@ func CreateOrUpdateJob(job GenericJob, db *gorm.DB) error {
}
} 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{
"type",
"interval",
......@@ -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(
[]string{
"run_count",
......@@ -246,6 +251,10 @@ func CreateOrUpdateJob(job GenericJob, db *gorm.DB) error {
}
func (s *DBSaver) Wait() {
s.jobSaveProgress.Wait()
}
// Stop stops the DBSaver
func (s *DBSaver) Stop() error {
s.mu.Lock()
......@@ -282,12 +291,14 @@ func exponentialBackoff(retry int) time.Duration {
// SaveJob saves a job to the database
func (s *DBSaver) SaveJob(job GenericJob) error {
s.jobSaveProgress.Add(1)
s.mu.Lock()
defer func() {
if r := recover(); r != nil {
Error("Error while saving job", "error", r)
}
s.mu.Unlock()
s.jobSaveProgress.Done()
}()
if s.saveChannel == nil {
......
......@@ -501,7 +501,15 @@ func (m *Manager) Stop() error {
}
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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment