From 8d575c14d288e80be35f40131468853fcc2667ee Mon Sep 17 00:00:00 2001
From: Volker Schukai <volker.schukai@schukai.com>
Date: Tue, 7 Nov 2023 17:34:50 +0100
Subject: [PATCH] fix: dissolve dead lock. #7

---
 database.go | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/database.go b/database.go
index 5b22a87..98d32e7 100644
--- a/database.go
+++ b/database.go
@@ -50,9 +50,12 @@ func (s *DBSaver) setStatus(status DBSaverStatus) *DBSaver {
 }
 
 // isStatus returns true if the DBSaver has the given status
-func (s *DBSaver) isStatus(status DBSaverStatus) bool {
-	s.mu.Lock()
-	defer s.mu.Unlock()
+// the lock is not needed here, because it is only used in the Start() method
+func (s *DBSaver) isStatus(status DBSaverStatus, lock bool) bool {
+	if lock {
+		s.mu.Lock()
+		defer s.mu.Unlock()
+	}
 
 	return s.status == status
 
@@ -67,7 +70,7 @@ func (s *DBSaver) Start() error {
 		return ErrNoDatabaseConnection
 	}
 
-	if s.isStatus(DBSaverStatusRunning) {
+	if s.isStatus(DBSaverStatusRunning, false) {
 		return nil
 	}
 
-- 
GitLab