2020from DIRAC .Core .Utilities .ClassAd .ClassAdLight import ClassAd
2121from DIRAC .Core .Utilities .TimeUtilities import fromString , second , toEpoch
2222from DIRAC .WorkloadManagementSystem .Client import JobMinorStatus , JobStatus
23- from DIRAC .WorkloadManagementSystem .Client .JobManagerClient import JobManagerClient
2423from DIRAC .WorkloadManagementSystem .Client .WMSClient import WMSClient
2524from DIRAC .WorkloadManagementSystem .DB .JobDB import JobDB
2625from DIRAC .WorkloadManagementSystem .DB .JobLoggingDB import JobLoggingDB
2726from DIRAC .WorkloadManagementSystem .DB .PilotAgentsDB import PilotAgentsDB
2827from DIRAC .WorkloadManagementSystem .Utilities .JobParameters import getJobParameters
28+ from DIRAC .WorkloadManagementSystem .Utilities .JobStatusUtility import rescheduleJobs
2929
3030
3131class StalledJobAgent (AgentModule ):
@@ -529,17 +529,12 @@ def _kickStuckJobs(self):
529529 return result
530530
531531 jobIDs = result ["Value" ]
532- jobManagerClient = JobManagerClient ()
533532 if jobIDs :
534533 self .log .info (f"Rescheduling { len (jobIDs )} jobs stuck in { JobStatus .MATCHED } status" )
535- result = jobManagerClient . rescheduleJob (jobIDs )
534+ result = rescheduleJobs (jobIDs )
536535 if not result ["OK" ]:
537536 message = f"Failed to reschedule jobs stuck in { JobStatus .MATCHED } status"
538537 message += "\n " + result ["Message" ]
539- if "InvalidJobIDs" in result :
540- message += "\n " + "\t Invalid job IDs: " + str (result ["InvalidJobIDs" ])
541- if "NonauthorizedJobIDs" in result :
542- message += "\n " + "\t Non authorized job IDs: " + str (result ["NonauthorizedJobIDs" ])
543538
544539 checkTime = datetime .datetime .utcnow () - self .rescheduledTime * second
545540 result = self .jobDB .selectJobs ({"Status" : JobStatus .RESCHEDULED }, older = checkTime )
@@ -550,17 +545,13 @@ def _kickStuckJobs(self):
550545 jobIDs = result ["Value" ]
551546 if jobIDs :
552547 self .log .info (f"Rescheduling { len (jobIDs )} jobs stuck in { JobStatus .RESCHEDULED } status" )
553- result = jobManagerClient . rescheduleJob (jobIDs )
548+ result = rescheduleJobs (jobIDs )
554549 if not result ["OK" ]:
555550 message = f"Failed to reschedule jobs stuck in { JobStatus .RESCHEDULED } status"
556551 message += "\n " + result ["Message" ]
557- if "InvalidJobIDs" in result :
558- message += "\n " + "\t Invalid job IDs: " + str (result ["InvalidJobIDs" ])
559- if "NonauthorizedJobIDs" in result :
560- message += "\n " + "\t Non authorized job IDs: " + str (result ["NonauthorizedJobIDs" ])
561552
562553 if message :
563- return S_ERROR (message )
554+ self . log . error (message )
564555 return S_OK ()
565556
566557 def _failSubmittingJobs (self ):
0 commit comments