Exemplo n.º 1
0
 /**
  * @param int $jobId
  * @param int $jobType
  * @param bool $force - forces retry even if the job is locked.
  * @return BatchJob
  */
 public static function retryJob($jobId, $jobType, $force = false)
 {
     $dbBatchJob = BatchJobPeer::retrieveByPK($jobId);
     if ($dbBatchJob->getJobType() != $jobType) {
         throw new APIException(APIErrors::GET_EXCLUSIVE_JOB_WRONG_TYPE, $jobType, $dbBatchJob->getId());
     }
     $dbBatchJob->setExecutionStatus(BatchJobExecutionStatus::NORMAL);
     // if not currently locked
     $dbBatchJobLock = $dbBatchJob->getBatchJobLock();
     if ($dbBatchJobLock === null) {
         // retry of non locked entry
         $dbBatchJob = self::updateBatchJob($dbBatchJob, BatchJob::BATCHJOB_STATUS_RETRY);
     } elseif ($force) {
         // retry of scheduled entry
         $dbBatchJobLock->setExecutionAttempts(0);
         $dbBatchJobLock->setStatus(BatchJob::BATCHJOB_STATUS_RETRY);
         $dbBatchJobLock->setExpiration(time() + BatchJobLockPeer::getRetryInterval($jobType));
         $dbBatchJob->setStatus(BatchJob::BATCHJOB_STATUS_RETRY);
         $dbBatchJob->save();
     }
     return $dbBatchJob;
 }
Exemplo n.º 2
0
 private static function commonLockObjectUpdate(BatchJob $batchJob, BatchJobLock $batchJobLock)
 {
     $jobType = $batchJob->getJobType();
     $batchJobLock->setStatus($batchJob->getStatus());
     $batchJobLock->setObjectId($batchJob->getObjectId());
     $batchJobLock->setObjectType($batchJob->getObjectType());
     if ($batchJob->getStatus() == BatchJob::BATCHJOB_STATUS_RETRY || $batchJob->getStatus() == BatchJob::BATCHJOB_STATUS_ALMOST_DONE) {
         $batchJobLock->setStartAt(time() + BatchJobLockPeer::getRetryInterval($jobType));
     }
     if ($batchJob->getLockInfo() != null) {
         $batchJobLock->setPriority($batchJob->getLockInfo()->getPriority());
         $batchJobLock->setUrgency($batchJob->getLockInfo()->getUrgency());
         $batchJobLock->setEstimatedEffort($batchJob->getLockInfo()->getEstimatedEffort());
         $batchJobLock->setVersion($batchJob->getLockInfo()->getLockVersion());
     }
 }