public static function getExpiredJobs() { $jobTypes = kPluginableEnumsManager::coreValues('BatchJobType'); $executionAttempts2jobTypes = array(); // Map between max execution attempts and job types foreach ($jobTypes as $jobType) { $executionAttempts = BatchJobLockPeer::getMaxExecutionAttempts($jobType); if (array_key_exists($executionAttempts, $executionAttempts2jobTypes)) { $executionAttempts2jobTypes[$executionAttempts][] = $jobType; } else { $executionAttempts2jobTypes[$executionAttempts] = array($jobType); } } // create query $c = new Criteria(); $c->add(BatchJobLockPeer::STATUS, BatchJob::BATCHJOB_STATUS_FATAL, Criteria::NOT_EQUAL); $c->add(BatchJobLockPeer::DC, kDataCenterMgr::getCurrentDcId()); // each DC should clean its own jobs // Query for each job type $batchJobLocks = array(); foreach ($executionAttempts2jobTypes as $execAttempts => $jobTypes) { $typedCrit = clone $c; $typedCrit->add(BatchJobLockPeer::EXECUTION_ATTEMPTS, $execAttempts, Criteria::GREATER_THAN); $typedCrit->add(BatchJobLockPeer::JOB_TYPE, $jobTypes, Criteria::IN); $typedJobs = BatchJobLockPeer::doSelect($typedCrit, myDbHelper::getConnection(myDbHelper::DB_HELPER_CONN_PROPEL2)); foreach ($typedJobs as $typedJob) { $batchJobLocks[$typedJob->getId()] = $typedJob; } } // get matching batch jobs return BatchJobPeer::retrieveByPKs(array_keys($batchJobLocks)); }
public static function getExpiredJobs() { $jobTypes = kPluginableEnumsManager::coreValues('BatchJobType'); $c = new Criteria(); $c->add(BatchJobPeer::STATUS, BatchJob::BATCHJOB_STATUS_FATAL, Criteria::NOT_EQUAL); $c->add(BatchJobPeer::DC, kDataCenterMgr::getCurrentDcId()); // each DC should clean its own jobs // $c->add(BatchJobPeer::PROCESSOR_EXPIRATION, time(), Criteria::LESS_THAN); // $c->add(BatchJobPeer::SCHEDULER_ID, 0, Criteria::GREATER_THAN); // $c->add(BatchJobPeer::WORKER_ID, 0, Criteria::GREATER_THAN); $jobs = array(); foreach ($jobTypes as $jobType) { $typedCrit = clone $c; $typedCrit->add(BatchJobPeer::EXECUTION_ATTEMPTS, BatchJobPeer::getMaxExecutionAttempts($jobType), Criteria::GREATER_THAN); $typedCrit->add(BatchJobPeer::JOB_TYPE, $jobType); $typedJobs = BatchJobPeer::doSelect($typedCrit, myDbHelper::getConnection(myDbHelper::DB_HELPER_CONN_PROPEL2)); foreach ($typedJobs as $typedJob) { $jobs[] = $typedJob; } } return $jobs; }