Skip to content

Commit d0b65b8

Browse files
authored
Merge pull request #7101 from fstagni/81_fixes11
[8.1] JobManagerHandler: get the OwnerDN only when needed.
2 parents dfd248e + 7f9d0f6 commit d0b65b8

File tree

1 file changed

+17
-20
lines changed

1 file changed

+17
-20
lines changed

src/DIRAC/WorkloadManagementSystem/Service/JobManagerHandler.py

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@
2424
from DIRAC.FrameworkSystem.Client.ProxyManagerClient import gProxyManager
2525
from DIRAC.StorageManagementSystem.Client.StorageManagerClient import StorageManagerClient
2626
from DIRAC.WorkloadManagementSystem.Client import JobStatus
27-
from DIRAC.WorkloadManagementSystem.Utilities.JobModel import JobDescriptionModel
28-
from DIRAC.WorkloadManagementSystem.Utilities.ParametricJob import generateParametricJobs, getParameterVectorLength
29-
3027
from DIRAC.WorkloadManagementSystem.Service.JobPolicy import (
3128
RIGHT_DELETE,
3229
RIGHT_KILL,
@@ -35,6 +32,7 @@
3532
RIGHT_SUBMIT,
3633
JobPolicy,
3734
)
35+
from DIRAC.WorkloadManagementSystem.Utilities.JobModel import JobDescriptionModel
3836
from DIRAC.WorkloadManagementSystem.Utilities.ParametricJob import generateParametricJobs, getParameterVectorLength
3937

4038
MAX_PARAMETRIC_JOBS = 20
@@ -85,7 +83,6 @@ def initializeRequest(self):
8583
self.maxParametricJobs = self.srv_getCSOption("MaxParametricJobs", MAX_PARAMETRIC_JOBS)
8684
self.jobPolicy = JobPolicy(self.owner, self.ownerGroup, self.userProperties)
8785
self.jobPolicy.jobDB = self.jobDB
88-
self.ownerDN = getDNForUsername(self.owner)["Value"][0]
8986
return S_OK()
9087

9188
def __sendJobsToOptimizationMind(self, jids):
@@ -128,6 +125,8 @@ def export_submitJob(self, jobDesc):
128125
:return: S_OK/S_ERROR, a list of newly created job IDs in case of S_OK.
129126
"""
130127

128+
ownerDN = getDNForUsername(self.owner)["Value"][0]
129+
131130
if self.peerUsesLimitedProxy:
132131
return S_ERROR(EWMSSUBM, "Can't submit using a limited proxy")
133132

@@ -160,9 +159,9 @@ def export_submitJob(self, jobDesc):
160159
if nJobs > self.maxParametricJobs:
161160
self.log.error(
162161
"Maximum of parametric jobs exceeded:",
163-
"limit %d smaller than number of jobs %d" % (self.maxParametricJobs, nJobs),
162+
f"limit {self.maxParametricJobs} smaller than number of jobs {nJobs}",
164163
)
165-
return S_ERROR(EWMSJDL, "Number of parametric jobs exceeds the limit of %d" % self.maxParametricJobs)
164+
return S_ERROR(EWMSJDL, f"Number of parametric jobs exceeds the limit of {self.maxParametricJobs}")
166165
result = generateParametricJobs(jobClassAd)
167166
if not result["OK"]:
168167
return result
@@ -190,7 +189,7 @@ def export_submitJob(self, jobDesc):
190189
JobDescriptionModel(
191190
**baseJobDescritionModel.dict(exclude_none=True),
192191
owner=self.owner,
193-
ownerDN=self.ownerDN,
192+
ownerDN=ownerDN,
194193
ownerGroup=self.ownerGroup,
195194
vo=getVOForGroup(self.ownerGroup),
196195
)
@@ -218,9 +217,9 @@ def export_submitJob(self, jobDesc):
218217
jobIDList.append(jobID)
219218

220219
# Set persistency flag
221-
retVal = gProxyManager.getUserPersistence(self.ownerDN, self.ownerGroup)
220+
retVal = gProxyManager.getUserPersistence(ownerDN, self.ownerGroup)
222221
if "Value" not in retVal or not retVal["Value"]:
223-
gProxyManager.setPersistency(self.ownerDN, self.ownerGroup, True)
222+
gProxyManager.setPersistency(ownerDN, self.ownerGroup, True)
224223

225224
if parametricJob:
226225
result = S_OK(jobIDList)
@@ -295,7 +294,8 @@ def __checkIfProxyUploadIsRequired(self):
295294
296295
:return: bool
297296
"""
298-
result = gProxyManager.userHasProxy(self.ownerDN, self.ownerGroup, validSeconds=18000)
297+
ownerDN = getDNForUsername(self.owner)["Value"][0]
298+
result = gProxyManager.userHasProxy(ownerDN, self.ownerGroup, validSeconds=18000)
299299
if not result["OK"]:
300300
self.log.error("Can't check if the user has proxy uploaded", result["Message"])
301301
return True
@@ -407,18 +407,18 @@ def export_removeJob(self, jobIDs):
407407
for jobID in validJobList:
408408
resultTQ = self.taskQueueDB.deleteJob(jobID)
409409
if not resultTQ["OK"]:
410-
self.log.warn("Failed to remove job from TaskQueueDB", "(%d): %s" % (jobID, resultTQ["Message"]))
410+
self.log.warn("Failed to remove job from TaskQueueDB", f"({jobID}): {resultTQ['Message']}")
411411
error_count += 1
412412
else:
413413
count += 1
414414

415-
if not (result := self.jobLoggingDB.deleteJob(validJobList))["OK"]:
415+
if not self.jobLoggingDB.deleteJob(validJobList)["OK"]:
416416
self.log.error("Failed to remove jobs from JobLoggingDB", f"(n={len(validJobList)})")
417417
else:
418418
self.log.info("Removed jobs from JobLoggingDB", f"(n={len(validJobList)})")
419419

420420
if count > 0 or error_count > 0:
421-
self.log.info("Removed jobs from DB", "(%d jobs with %d errors)" % (count, error_count))
421+
self.log.info("Removed jobs from DB", f"({count} jobs with {error_count} errors)")
422422

423423
if invalidJobList or nonauthJobList:
424424
self.log.error(
@@ -446,12 +446,10 @@ def __deleteJob(self, jobID):
446446
:param int jobID: job ID
447447
:return: S_OK()/S_ERROR()
448448
"""
449-
result = self.jobDB.setJobStatus(jobID, JobStatus.DELETED, "Checking accounting")
450-
if not result["OK"]:
449+
if not (result := self.jobDB.setJobStatus(jobID, JobStatus.DELETED, "Checking accounting"))["OK"]:
451450
return result
452451

453-
result = self.taskQueueDB.deleteJob(jobID)
454-
if not result["OK"]:
452+
if not (result := self.taskQueueDB.deleteJob(jobID))["OK"]:
455453
self.log.warn("Failed to delete job from the TaskQueue")
456454

457455
# if it was the last job for the pilot
@@ -469,8 +467,7 @@ def __deleteJob(self, jobID):
469467
if not result["OK"]:
470468
self.log.error("Failed to get pilot info", result["Message"])
471469
return result
472-
pilotRef = result[0]["PilotJobReference"]
473-
ret = self.pilotAgentsDB.deletePilot(pilot)
470+
ret = self.pilotAgentsDB.deletePilot(result["Value"]["PilotJobReference"])
474471
if not ret["OK"]:
475472
self.log.error("Failed to delete pilot from PilotAgentsDB", ret["Message"])
476473
return ret
@@ -522,7 +519,7 @@ def __kill_delete_jobs(self, jobIDList, right):
522519
deleteJobList = []
523520
markKilledJobList = []
524521
stagingJobList = []
525-
for jobID, sDict in result["Value"].items(): # can be an iterator
522+
for jobID, sDict in result["Value"].items():
526523
if sDict["Status"] in (JobStatus.RUNNING, JobStatus.MATCHED, JobStatus.STALLED):
527524
killJobList.append(jobID)
528525
elif sDict["Status"] in (

0 commit comments

Comments
 (0)