Skip to content

Commit 6797f53

Browse files
committed
fix: Optimize JobLoggingDB.deleteJob
1 parent 853e06b commit 6797f53

1 file changed

Lines changed: 19 additions & 6 deletions

File tree

src/DIRAC/WorkloadManagementSystem/DB/JobLoggingDB.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from DIRAC import S_ERROR, S_OK
1212
from DIRAC.Core.Base.DB import DB
1313
from DIRAC.Core.Utilities import TimeUtilities
14+
from DIRAC.Core.Utilities.ReturnValues import returnValueOrRaise, convertToReturnValue
1415
from DIRAC.FrameworkSystem.Client.Logger import contextLogger
1516

1617
MAGIC_EPOC_NUMBER = 1270000000
@@ -145,21 +146,33 @@ def getJobLoggingInfo(self, jobID):
145146
return S_OK(return_value)
146147

147148
#############################################################################
149+
@convertToReturnValue
148150
def deleteJob(self, jobID):
149151
"""Delete logging records for given jobs"""
150152
if not jobID:
151-
return S_OK()
153+
return None
152154

153-
# Make sure that we have a list of strings of jobIDs
154155
if isinstance(jobID, int):
155-
jobList = [str(jobID)]
156+
jobList = [jobID]
156157
elif isinstance(jobID, str):
157158
jobList = jobID.replace(" ", "").split(",")
158159
else:
159-
jobList = list(str(j) for j in jobID)
160+
jobList = jobID
160161

161-
req = f"DELETE FROM LoggingInfo WHERE JobID IN ({','.join(jobList)})"
162-
return self._update(req)
162+
sqlCmd = (
163+
"CREATE TEMPORARY TABLE to_delete_LoggingInfo (JobID INTEGER NOT NULL, PRIMARY KEY (JobID)) ENGINE=MEMORY;"
164+
)
165+
returnValueOrRaise(self._update(sqlCmd))
166+
try:
167+
sqlCmd = "INSERT INTO to_delete_LoggingInfo (EntityId) VALUES ( %s )"
168+
returnValueOrRaise(self._updatemany(sqlCmd, [(j,) for j in jobList]))
169+
sqlCmd = "DELETE l from `LoggingInfo` l JOIN to_delete_LoggingInfo t USING (JobID)"
170+
result = returnValueOrRaise(self._update(sqlCmd))
171+
finally:
172+
sqlCmd = "DROP TEMPORARY TABLE to_delete_LoggingInfo"
173+
returnValueOrRaise(self._update(sqlCmd))
174+
175+
return result
163176

164177
#############################################################################
165178
def getWMSTimeStamps(self, jobID):

0 commit comments

Comments
 (0)