@@ -121,11 +121,9 @@ try { | |||
break; | |||
} | |||
$logger->debug('Run ' . get_class($job) . ' job with ID ' . $job->getId(), ['app' => 'cron']); | |||
$job->execute($jobList, $logger); | |||
// clean up after unclean jobs | |||
\OC_Util::tearDownFS(); | |||
$logger->debug('Finished ' . get_class($job) . ' job with ID ' . $job->getId(), ['app' => 'cron']); | |||
$jobList->setLastJob($job); | |||
$executedJobs[$job->getId()] = true; |
@@ -1012,6 +1012,14 @@ | |||
<notnull>false</notnull> | |||
</field> | |||
<field> | |||
<!-- time for execution of the job --> | |||
<name>execution_duration</name> | |||
<type>integer</type> | |||
<default></default> | |||
<notnull>true</notnull> | |||
</field> | |||
<index> | |||
<name>job_class_index</name> | |||
<field> |
@@ -49,8 +49,18 @@ abstract class Job implements IJob { | |||
*/ | |||
public function execute($jobList, ILogger $logger = null) { | |||
$jobList->setLastRun($this); | |||
if ($logger === null) { | |||
$logger = \OC::$server->getLogger(); | |||
} | |||
try { | |||
$jobStartTime = time(); | |||
$logger->debug('Run ' . get_class($this) . ' job with ID ' . $this->getId(), ['app' => 'cron']); | |||
$this->run($this->argument); | |||
$timeTaken = time() - $jobStartTime; | |||
$logger->debug('Finished ' . get_class($this) . ' job with ID ' . $this->getId() . ' in ' . $timeTaken . ' seconds', ['app' => 'cron']); | |||
$jobList->setExecutionTime($this, $timeTaken); | |||
} catch (\Exception $e) { | |||
if ($logger) { | |||
$logger->logException($e, [ |
@@ -275,7 +275,7 @@ class JobList implements IJobList { | |||
* | |||
* @param IJob $job | |||
*/ | |||
public function setLastJob($job) { | |||
public function setLastJob(IJob $job) { | |||
$this->unlockJob($job); | |||
$this->config->setAppValue('backgroundjob', 'lastjob', $job->getId()); | |||
} | |||
@@ -285,7 +285,7 @@ class JobList implements IJobList { | |||
* | |||
* @param IJob $job | |||
*/ | |||
public function unlockJob($job) { | |||
public function unlockJob(IJob $job) { | |||
$query = $this->connection->getQueryBuilder(); | |||
$query->update('jobs') | |||
->set('reserved_at', $query->expr()->literal(0, IQueryBuilder::PARAM_INT)) | |||
@@ -310,11 +310,23 @@ class JobList implements IJobList { | |||
* | |||
* @param IJob $job | |||
*/ | |||
public function setLastRun($job) { | |||
public function setLastRun(IJob $job) { | |||
$query = $this->connection->getQueryBuilder(); | |||
$query->update('jobs') | |||
->set('last_run', $query->createNamedParameter(time(), IQueryBuilder::PARAM_INT)) | |||
->where($query->expr()->eq('id', $query->createNamedParameter($job->getId(), IQueryBuilder::PARAM_INT))); | |||
$query->execute(); | |||
} | |||
/** | |||
* @param IJob $job | |||
* @param $timeTaken | |||
*/ | |||
public function setExecutionTime(IJob $job, $timeTaken) { | |||
$query = $this->connection->getQueryBuilder(); | |||
$query->update('jobs') | |||
->set('execution_duration', $query->createNamedParameter($timeTaken, IQueryBuilder::PARAM_INT)) | |||
->where($query->expr()->eq('id', $query->createNamedParameter($job->getId(), IQueryBuilder::PARAM_INT))); | |||
$query->execute(); | |||
} | |||
} |
@@ -91,7 +91,7 @@ interface IJobList { | |||
* @param \OCP\BackgroundJob\IJob $job | |||
* @since 7.0.0 | |||
*/ | |||
public function setLastJob($job); | |||
public function setLastJob(IJob $job); | |||
/** | |||
* Remove the reservation for a job | |||
@@ -99,7 +99,7 @@ interface IJobList { | |||
* @param IJob $job | |||
* @since 9.1.0 | |||
*/ | |||
public function unlockJob($job); | |||
public function unlockJob(IJob $job); | |||
/** | |||
* get the id of the last ran job | |||
@@ -115,8 +115,17 @@ interface IJobList { | |||
/** | |||
* set the lastRun of $job to now | |||
* | |||
* @param \OCP\BackgroundJob\IJob $job | |||
* @param IJob $job | |||
* @since 7.0.0 | |||
*/ | |||
public function setLastRun($job); | |||
public function setLastRun(IJob $job); | |||
/** | |||
* set the run duration of $job | |||
* | |||
* @param IJob $job | |||
* @param $timeTaken | |||
* @since 12.0.0 | |||
*/ | |||
public function setExecutionTime(IJob $job, $timeTaken); | |||
} |
@@ -7,6 +7,7 @@ | |||
*/ | |||
namespace Test\BackgroundJob; | |||
use OCP\BackgroundJob\IJob; | |||
/** | |||
* Class DummyJobList | |||
@@ -15,7 +16,7 @@ namespace Test\BackgroundJob; | |||
*/ | |||
class DummyJobList extends \OC\BackgroundJob\JobList { | |||
/** | |||
* @var \OC\BackgroundJob\Job[] | |||
* @var IJob[] | |||
*/ | |||
private $jobs = array(); | |||
@@ -25,7 +26,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList { | |||
} | |||
/** | |||
* @param \OC\BackgroundJob\Job|string $job | |||
* @param IJob|string $job | |||
* @param mixed $argument | |||
*/ | |||
public function add($job, $argument = null) { | |||
@@ -40,7 +41,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList { | |||
} | |||
/** | |||
* @param \OC\BackgroundJob\Job|string $job | |||
* @param IJob|string $job | |||
* @param mixed $argument | |||
*/ | |||
public function remove($job, $argument = null) { | |||
@@ -64,7 +65,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList { | |||
/** | |||
* get all jobs in the list | |||
* | |||
* @return \OC\BackgroundJob\Job[] | |||
* @return IJob[] | |||
*/ | |||
public function getAll() { | |||
return $this->jobs; | |||
@@ -73,7 +74,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList { | |||
/** | |||
* get the next job in the list | |||
* | |||
* @return \OC\BackgroundJob\Job | |||
* @return IJob|null | |||
*/ | |||
public function getNext() { | |||
if (count($this->jobs) > 0) { | |||
@@ -93,7 +94,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList { | |||
* | |||
* @param \OC\BackgroundJob\Job $job | |||
*/ | |||
public function setLastJob($job) { | |||
public function setLastJob(IJob $job) { | |||
$i = array_search($job, $this->jobs); | |||
if ($i !== false) { | |||
$this->last = $i; | |||
@@ -104,7 +105,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList { | |||
/** | |||
* @param int $id | |||
* @return Job | |||
* @return IJob | |||
*/ | |||
public function getById($id) { | |||
foreach ($this->jobs as $job) { | |||
@@ -127,9 +128,12 @@ class DummyJobList extends \OC\BackgroundJob\JobList { | |||
/** | |||
* set the lastRun of $job to now | |||
* | |||
* @param \OC\BackgroundJob\Job $job | |||
* @param IJob $job | |||
*/ | |||
public function setLastRun($job) { | |||
public function setLastRun(IJob $job) { | |||
$job->setLastRun(time()); | |||
} | |||
public function setExecutionTime(IJob $job, $timeTaken) { | |||
} | |||
} |
@@ -26,7 +26,7 @@ | |||
// between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel | |||
// when updating major/minor version number. | |||
$OC_Version = array(12, 0, 0, 14); | |||
$OC_Version = array(12, 0, 0, 15); | |||
// The human readable string | |||
$OC_VersionString = '12.0 alpha'; |