diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/BackgroundJob/Job.php | 10 | ||||
-rw-r--r-- | lib/private/BackgroundJob/JobList.php | 18 | ||||
-rw-r--r-- | lib/public/BackgroundJob/IJobList.php | 17 |
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); } |