summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2015-08-21 10:34:33 +0200
committerMorris Jobke <hey@morrisjobke.de>2015-08-21 10:34:33 +0200
commitac086a11c118df19cef15239bd4ec9722d8478bb (patch)
tree8b5ec3cb6dcfa37ece2f4281102e794d0fa858e5 /lib
parentc87042905c9f06aadef6df279b308232b0a2f2c8 (diff)
parentbeaef820cf67d96652cd0774b151061d7ecd963a (diff)
downloadnextcloud-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.php17
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;
+ }
}
/**