diff options
author | blizzz <blizzz@owncloud.com> | 2013-12-06 11:56:53 -0800 |
---|---|---|
committer | blizzz <blizzz@owncloud.com> | 2013-12-06 11:56:53 -0800 |
commit | 6a747106db7d3c35d461f0b4cb3e9c48feea7780 (patch) | |
tree | c064eac18f48e8517bd4b87684c076b83bb2e24e /lib | |
parent | 123bc9921a0369582b547cd3d8abc7d466d1f7f3 (diff) | |
parent | 2ff1bdaba3292cc5baff71d8d79674bbf0b69fc8 (diff) | |
download | nextcloud-server-6a747106db7d3c35d461f0b4cb3e9c48feea7780.tar.gz nextcloud-server-6a747106db7d3c35d461f0b4cb3e9c48feea7780.zip |
Merge pull request #6150 from owncloud/backgroundjob-log-exception
Remove background jobs that are giving errors
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/backgroundjob/job.php | 23 | ||||
-rw-r--r-- | lib/private/backgroundjob/queuedjob.php | 5 | ||||
-rw-r--r-- | lib/private/backgroundjob/timedjob.php | 6 |
3 files changed, 27 insertions, 7 deletions
diff --git a/lib/private/backgroundjob/job.php b/lib/private/backgroundjob/job.php index 49fbffbd684..92bd0f8fdbd 100644 --- a/lib/private/backgroundjob/job.php +++ b/lib/private/backgroundjob/job.php @@ -9,16 +9,35 @@ namespace OC\BackgroundJob; abstract class Job { + /** + * @var int $id + */ protected $id; + + /** + * @var int $lastRun + */ protected $lastRun; + + /** + * @var mixed $argument + */ protected $argument; /** * @param JobList $jobList + * @param \OC\Log $logger */ - public function execute($jobList) { + public function execute($jobList, $logger = null) { $jobList->setLastRun($this); - $this->run($this->argument); + try { + $this->run($this->argument); + } catch (\Exception $e) { + if ($logger) { + $logger->error('Error while running background job: ' . $e->getMessage()); + } + $jobList->remove($this, $this->argument); + } } abstract protected function run($argument); diff --git a/lib/private/backgroundjob/queuedjob.php b/lib/private/backgroundjob/queuedjob.php index 1714182820d..799eac47848 100644 --- a/lib/private/backgroundjob/queuedjob.php +++ b/lib/private/backgroundjob/queuedjob.php @@ -20,9 +20,10 @@ abstract class QueuedJob extends Job { * run the job, then remove it from the joblist * * @param JobList $jobList + * @param \OC\Log $logger */ - public function execute($jobList) { + public function execute($jobList, $logger = null) { $jobList->remove($this); - $this->run($this->argument); + parent::execute($jobList, $logger); } } diff --git a/lib/private/backgroundjob/timedjob.php b/lib/private/backgroundjob/timedjob.php index ae9f33505ab..09e05f1d846 100644 --- a/lib/private/backgroundjob/timedjob.php +++ b/lib/private/backgroundjob/timedjob.php @@ -31,11 +31,11 @@ abstract class TimedJob extends Job { * run the job if * * @param JobList $jobList + * @param \OC\Log $logger */ - public function execute($jobList) { + public function execute($jobList, $logger = null) { if ((time() - $this->lastRun) > $this->interval) { - $jobList->setLastRun($this); - $this->run($this->argument); + parent::execute($jobList, $logger); } } } |