diff options
author | Morris Jobke <hey@morrisjobke.de> | 2015-08-21 10:34:33 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2015-08-21 10:34:33 +0200 |
commit | ac086a11c118df19cef15239bd4ec9722d8478bb (patch) | |
tree | 8b5ec3cb6dcfa37ece2f4281102e794d0fa858e5 /lib | |
parent | c87042905c9f06aadef6df279b308232b0a2f2c8 (diff) | |
parent | beaef820cf67d96652cd0774b151061d7ecd963a (diff) | |
download | nextcloud-server-ac086a11c118df19cef15239bd4ec9722d8478bb.tar.gz nextcloud-server-ac086a11c118df19cef15239bd4ec9722d8478bb.zip |
Merge pull request #18426 from owncloud/joblist-next-non-existing
handle non existing job classes in $jobList->getNext
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/backgroundjob/joblist.php | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/private/backgroundjob/joblist.php b/lib/private/backgroundjob/joblist.php index e8915b47f24..f297bccbc7d 100644 --- a/lib/private/backgroundjob/joblist.php +++ b/lib/private/backgroundjob/joblist.php @@ -87,6 +87,11 @@ class JobList implements IJobList { } } + protected function removeById($id) { + $query = $this->conn->prepare('DELETE FROM `*PREFIX*jobs` WHERE `id` = ?'); + $query->execute([$id]); + } + /** * check if a job is in the list * @@ -134,17 +139,25 @@ class JobList implements IJobList { $query = $this->conn->prepare('SELECT `id`, `class`, `last_run`, `argument` FROM `*PREFIX*jobs` WHERE `id` > ? ORDER BY `id` ASC', 1); $query->execute(array($lastId)); if ($row = $query->fetch()) { - return $this->buildJob($row); + $jobId = $row['id']; + $job = $this->buildJob($row); } else { //begin at the start of the queue $query = $this->conn->prepare('SELECT `id`, `class`, `last_run`, `argument` FROM `*PREFIX*jobs` ORDER BY `id` ASC', 1); $query->execute(); if ($row = $query->fetch()) { - return $this->buildJob($row); + $jobId = $row['id']; + $job = $this->buildJob($row); } else { return null; //empty job list } } + if (is_null($job)) { + $this->removeById($jobId); + return $this->getNext(); + } else { + return $job; + } } /** |