Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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