summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/private/BackgroundJob/Job.php10
-rw-r--r--lib/private/BackgroundJob/JobList.php18
-rw-r--r--lib/public/BackgroundJob/IJobList.php17
3 files changed, 38 insertions, 7 deletions
diff --git a/lib/private/BackgroundJob/Job.php b/lib/private/BackgroundJob/Job.php
index 726c66ef5d7..cb9328f01b9 100644
--- a/lib/private/BackgroundJob/Job.php
+++ b/lib/private/BackgroundJob/Job.php
@@ -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, [
diff --git a/lib/private/BackgroundJob/JobList.php b/lib/private/BackgroundJob/JobList.php
index 0de5dfecc8b..b0c580290ed 100644
--- a/lib/private/BackgroundJob/JobList.php
+++ b/lib/private/BackgroundJob/JobList.php
@@ -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();
+ }
}
diff --git a/lib/public/BackgroundJob/IJobList.php b/lib/public/BackgroundJob/IJobList.php
index fbc46192227..d7c2642712c 100644
--- a/lib/public/BackgroundJob/IJobList.php
+++ b/lib/public/BackgroundJob/IJobList.php
@@ -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);
}