diff --git a/database-1_test.go b/database-1_test.go
index f21d9938661937f879467d6b94d360020bc51a10..4c57ee35df07116869043f2fc2e66e86bd8cefe2 100644
--- a/database-1_test.go
+++ b/database-1_test.go
@@ -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)
 
diff --git a/database-2_test.go b/database-2_test.go
index 45d84d219d274ab8ac5b00ff3933026216f2e7c7..5e5c6245773ab2ce62006829d92228df521ec75b 100644
--- a/database-2_test.go
+++ b/database-2_test.go
@@ -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)
 
diff --git a/database.go b/database.go
index 58781fb6c5d9f6abcf679ed03d63e3ff2e70d26a..040885740a94a3e3cfb803119ca8a076367d6a37 100644
--- a/database.go
+++ b/database.go
@@ -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 {
diff --git a/manager.go b/manager.go
index ea0d2c77c5f3e8c24d95ff67d449851c8072f3af..e30f6e9e41b6155780aa9b5dce4ccf0e81a71bea 100644
--- a/manager.go
+++ b/manager.go
@@ -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