private function reconvertEntry($entry_id, $conversion_profile_id, $job_priority) { $entry = entryPeer::retrieveByPK($entry_id); $this->error = ""; if (!$entry) { $error = "Cannot reconvert entry [{$entry_id}]. Might be a deleted entry"; return array($entry_id, null, null, $error); } $flavorAsset = assetPeer::retrieveOriginalByEntryId($entry_id); if (!$flavorAsset) { $flavorAsset = assetPeer::retrieveReadyWebByEntryId($entry_id); if (!$flavorAsset) { $flavorAssets = assetPeer::retrieveFlavorsByEntryId($entry_id); if (!$flavorAssets) { $error = "Cannot find good enough flavor asset to re-convert from"; return array($entry_id, $entry, null, $error); } $flavorAsset = $flavorAssets[0]; // choose the first one } } $syncKey = $flavorAsset->getSyncKey(flavorAsset::FILE_SYNC_FLAVOR_ASSET_SUB_TYPE_ASSET); $filePath = kFileSyncUtils::getReadyLocalFilePathForKey($syncKey); if (!$filePath) { $error = "Cannot find a fileSync for the flavorAsset [" . $flavorAsset->getId() . "]"; return array($entry_id, $entry, null, $error); } $dbBatchJob = new BatchJob(); $dbBatchJob->setEntryId($entry_id); $dbBatchJob->setPartnerId($entry->getPartnerId()); $dbBatchJob->setStatus(BatchJob::BATCHJOB_STATUS_PENDING); $dbBatchJob->setDc(kDataCenterMgr::getCurrentDcId()); $dbBatchJob->setPriority($job_priority); $dbBatchJob->save(); // creates a convert profile job $convertProfileData = new kConvertProfileJobData(); $convertProfileData->setFlavorAssetId($flavorAsset->getId()); $convertProfileData->setInputFileSyncLocalPath($filePath); kJobsManager::addJob($dbBatchJob, $convertProfileData, BatchJobType::CONVERT_PROFILE); // save again afget the addJob $dbBatchJob->save(); return array($entry_id, $entry, $dbBatchJob, $error); }
/** * @return BatchJob */ public function createChild($same_root = true, $dc = null) { $child = new BatchJob(); $child->setStatus(self::BATCHJOB_STATUS_PENDING); $child->setParentJobId($this->id); $child->setPartnerId($this->partner_id); $child->setEntryId($this->entry_id); $child->setPriority($this->priority); $child->setSubpId($this->subp_id); $child->setBulkJobId($this->bulk_job_id); // the condition is required in the special case of file_sync import jobs which are created on one dc but run from the other $child->setDc($dc === null ? $this->dc : $dc); if ($same_root && $this->root_job_id) { $child->setRootJobId($this->root_job_id); } else { $child->setRootJobId($this->id); } $child->save(); return $child; }
/** * @return BatchJob */ public function createChild($same_root = true) { $child = new BatchJob(); $child->setStatus(self::BATCHJOB_STATUS_PENDING); $child->setParentJobId($this->id); $child->setPartnerId($this->partner_id); $child->setEntryId($this->entry_id); $child->setPriority($this->priority); $child->setSubpId($this->subp_id); $child->setBulkJobId($this->bulk_job_id); $child->setDc($this->dc); if ($same_root && $this->root_job_id) { $child->setRootJobId($this->root_job_id); } else { $child->setRootJobId($this->id); } $child->save(); return $child; }
/** * @param BatchJob $batchJob * @param $data * @param int $type * @param int $subType * @return BatchJob */ public static function addJob(BatchJob $batchJob, $data, $type, $subType = null) { $batchJob->setJobType($type); $batchJob->setJobSubType($subType); $batchJob->setData($data); if (!$batchJob->getParentJobId() && $batchJob->getEntryId()) { $currentJob = kBatchManager::getCurrentUpdatingJob(); if ($currentJob && $currentJob->getEntryId() == $batchJob->getEntryId()) { $batchJob->setParentJobId($currentJob->getId()); $batchJob->setBulkJobId($currentJob->getBulkJobId()); $batchJob->setRootJobId($currentJob->getRootJobId()); } else { $entry = entryPeer::retrieveByPKNoFilter($batchJob->getEntryId()); // some jobs could be on deleted entry if ($entry) { $batchJob->setRootJobId($entry->getBulkUploadId()); $batchJob->setBulkJobId($entry->getBulkUploadId()); } } } // validate partner id $partnerId = $batchJob->getPartnerId(); // if(!$partnerId) // throw new APIException(APIErrors::PARTNER_NOT_SET); // validate that partner exists $partner = PartnerPeer::retrieveByPK($partnerId); if (!$partner) { KalturaLog::err("Invalid partner id [{$partnerId}]"); throw new APIException(APIErrors::INVALID_PARTNER_ID, $partnerId); } // set the priority and work group $batchJob->setPriority($partner->getPriority($batchJob->getBulkJobId())); $batchJob = self::updateBatchJob($batchJob, BatchJob::BATCHJOB_STATUS_PENDING); // look for identical jobs $twinJobs = BatchJobPeer::retrieveDuplicated($type, $data); $twinJob = null; if (count($twinJobs)) { foreach ($twinJobs as $currentTwinJob) { if ($currentTwinJob->getId() != $batchJob->getId()) { $twinJob = reset($twinJobs); } } } if (!is_null($twinJob)) { $batchJob->setTwinJobId($twinJob->getId()); if (!kConf::get("batch_ignore_duplication")) { $batchJob = self::updateBatchJob($batchJob, $twinJob->getStatus(), $twinJob); } else { $batchJob->save(); } } return $batchJob; }