def rescheduleFailedJob(jobID, message): try: import DIRAC global jobReport gLogger.warn('Failure during %s' % (message)) #Setting a job parameter does not help since the job will be rescheduled, #instead set the status with the cause and then another status showing the #reschedule operation. if not jobReport: gLogger.info('Creating a new JobReport Object') jobReport = JobReport(int(jobID), 'JobWrapperTemplate') jobReport.setApplicationStatus('Failed %s ' % message, sendFlag=False) jobReport.setJobStatus('Rescheduled', message, sendFlag=False) # We must send Job States and Parameters before it gets reschedule jobReport.sendStoredStatusInfo() jobReport.sendStoredJobParameters() gLogger.info( 'Job will be rescheduled after exception during execution of the JobWrapper' ) jobManager = RPCClient('WorkloadManagement/JobManager') result = jobManager.rescheduleJob(int(jobID)) if not result['OK']: gLogger.warn(result) # Send mail to debug errors mailAddress = DIRAC.alarmMail site = DIRAC.siteName() subject = 'Job rescheduled at %s' % site ret = systemCall(0, 'hostname') wn = ret['Value'][1] msg = 'Job %s rescheduled at %s, wn=%s\n' % (jobID, site, wn) msg += message NotificationClient().sendMail(mailAddress, subject, msg, fromAddress="*****@*****.**", localAttempt=False) return except Exception, x: gLogger.exception('JobWrapperTemplate failed to reschedule Job') return
def rescheduleFailedJob(jobID,message): try: import DIRAC global jobReport gLogger.warn('Failure during %s' %(message)) #Setting a job parameter does not help since the job will be rescheduled, #instead set the status with the cause and then another status showing the #reschedule operation. if not jobReport: gLogger.info('Creating a new JobReport Object') jobReport = JobReport(int(jobID),'JobWrapperTemplate') jobReport.setApplicationStatus( 'Failed %s ' % message, sendFlag = False ) jobReport.setJobStatus( 'Rescheduled', message, sendFlag = False ) # We must send Job States and Parameters before it gets reschedule jobReport.sendStoredStatusInfo() jobReport.sendStoredJobParameters() gLogger.info('Job will be rescheduled after exception during execution of the JobWrapper') jobManager = RPCClient('WorkloadManagement/JobManager') result = jobManager.rescheduleJob(int(jobID)) if not result['OK']: gLogger.warn(result) # Send mail to debug errors mailAddress = DIRAC.alarmMail site = DIRAC.siteName() subject = 'Job rescheduled at %s' % site ret = systemCall(0,'hostname') wn = ret['Value'][1] msg = 'Job %s rescheduled at %s, wn=%s\n' % ( jobID, site, wn ) msg += message NotificationClient().sendMail(mailAddress,subject,msg,fromAddress="*****@*****.**",localAttempt=False) return except Exception,x: gLogger.exception('JobWrapperTemplate failed to reschedule Job') return