Merge pull request #563 from donaldzou/fix-#562

Fix #562, and mysterious Jobs disappear issue
This commit is contained in:
Donald Zou 2024-12-28 23:53:35 +08:00 committed by GitHub
commit 715a266ca4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -116,7 +116,6 @@ class DashboardLogger:
self.loggerdb.commit() self.loggerdb.commit()
def log(self, URL: str = "", IP: str = "", Status: str = "true", Message: str = "") -> bool: def log(self, URL: str = "", IP: str = "", Status: str = "true", Message: str = "") -> bool:
pass
try: try:
with self.loggerdb: with self.loggerdb:
loggerdbCursor = self.loggerdb.cursor() loggerdbCursor = self.loggerdb.cursor()
@ -289,7 +288,7 @@ class PeerJobs:
except Exception as e: except Exception as e:
return False, str(e) return False, str(e)
def deleteJob(self, Job: PeerJob) -> tuple[bool, list] | tuple[bool, str]: def deleteJob(self, Job: PeerJob, deletedFrom = 'Job Runner') -> tuple[bool, list] | tuple[bool, str]:
try: try:
if (len(str(Job.CreationDate))) == 0: if (len(str(Job.CreationDate))) == 0:
return False, "Job does not exist" return False, "Job does not exist"
@ -299,7 +298,7 @@ class PeerJobs:
UPDATE PeerJobs SET ExpireDate = strftime('%Y-%m-%d %H:%M:%S','now') WHERE JobID = ? UPDATE PeerJobs SET ExpireDate = strftime('%Y-%m-%d %H:%M:%S','now') WHERE JobID = ?
''', (Job.JobID,)) ''', (Job.JobID,))
self.jobdb.commit() self.jobdb.commit()
JobLogger.log(Job.JobID, Message=f"Job is removed due to being deleted or finshed.") JobLogger.log(Job.JobID, Message=f"Job is removed by {deletedFrom} due to being deleted or finshed.")
self.__getJobs() self.__getJobs()
return True, list( return True, list(
filter(lambda x: x.Configuration == Job.Configuration and x.Peer == Job.Peer and x.JobID == Job.JobID, filter(lambda x: x.Configuration == Job.Configuration and x.Peer == Job.Peer and x.JobID == Job.JobID,
@ -352,9 +351,15 @@ class PeerJobs:
f"Peer {fp.id} from {c.Name} failed {job.Action}ed." f"Peer {fp.id} from {c.Name} failed {job.Action}ed."
) )
else: else:
needToDelete.append(job) JobLogger.log(job.JobID, s["status"],
f"Somehow can't find this peer {job.Peer} from {c.Name} failed {job.Action}ed."
)
# needToDelete.append(job)
else: else:
needToDelete.append(job) JobLogger.log(job.JobID, s["status"],
f"Somehow can't find this peer {job.Peer} from {job.Configuration} failed {job.Action}ed."
)
# needToDelete.append(job)
for j in needToDelete: for j in needToDelete:
self.deleteJob(j) self.deleteJob(j)
@ -1622,6 +1627,7 @@ def _getWireguardConfigurationAvailableIP(configName: str, all: bool = False) ->
sqldb = sqlite3.connect(os.path.join(CONFIGURATION_PATH, 'db', 'wgdashboard.db'), check_same_thread=False) sqldb = sqlite3.connect(os.path.join(CONFIGURATION_PATH, 'db', 'wgdashboard.db'), check_same_thread=False)
sqldb.row_factory = sqlite3.Row sqldb.row_factory = sqlite3.Row
sqldb.isolation_level = None
cursor = sqldb.cursor() cursor = sqldb.cursor()
def sqlSelect(statement: str, paramters: tuple = ()) -> sqlite3.Cursor: def sqlSelect(statement: str, paramters: tuple = ()) -> sqlite3.Cursor:
@ -1629,8 +1635,7 @@ def sqlSelect(statement: str, paramters: tuple = ()) -> sqlite3.Cursor:
try: try:
cursor = sqldb.cursor() cursor = sqldb.cursor()
return cursor.execute(statement, paramters) return cursor.execute(statement, paramters)
except Exception as e:
except sqlite3.OperationalError as error:
print("[WGDashboard] SQLite Error:" + str(error) + " | Statement: " + statement) print("[WGDashboard] SQLite Error:" + str(error) + " | Statement: " + statement)
return [] return []
@ -1643,8 +1648,9 @@ def sqlUpdate(statement: str, paramters: tuple = ()) -> sqlite3.Cursor:
s = f'BEGIN TRANSACTION;{statement};END TRANSACTION;' s = f'BEGIN TRANSACTION;{statement};END TRANSACTION;'
cursor.execute(statement, paramters) cursor.execute(statement, paramters)
sqldb.commit() sqldb.commit()
except sqlite3.OperationalError as error: except Exception as e:
print("[WGDashboard] SQLite Error:" + str(error) + " | Statement: " + statement) print("[WGDashboard] SQLite Error:" + str(error) + " | Statement: " + statement)
return []
DashboardConfig = DashboardConfig() DashboardConfig = DashboardConfig()
_, APP_PREFIX = DashboardConfig.GetConfig("Server", "app_prefix") _, APP_PREFIX = DashboardConfig.GetConfig("Server", "app_prefix")
@ -2299,7 +2305,7 @@ def API_deletePeerScheduleJob():
s, p = AllPeerJobs.deleteJob(PeerJob( s, p = AllPeerJobs.deleteJob(PeerJob(
job['JobID'], job['Configuration'], job['Peer'], job['Field'], job['Operator'], job['Value'], job['JobID'], job['Configuration'], job['Peer'], job['Field'], job['Operator'], job['Value'],
job['CreationDate'], job['ExpireDate'], job['Action'])) job['CreationDate'], job['ExpireDate'], job['Action']), 'API Call')
if s: if s:
return ResponseObject(s, data=p) return ResponseObject(s, data=p)
return ResponseObject(s, message=p) return ResponseObject(s, message=p)