Skip to content

Commit 60c3f15

Browse files
committed
Reset job disabling timer on adding the job again
Signed-off-by: Julius Härtl <[email protected]>
1 parent 55219ac commit 60c3f15

1 file changed

Lines changed: 20 additions & 1 deletion

File tree

lib/private/BackgroundJob/JobList.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public function __construct(IDBConnection $connection, IConfig $config, ITimeFac
6565
* @param mixed $argument
6666
*/
6767
public function add($job, $argument = null) {
68+
$query = $this->connection->getQueryBuilder();
6869
if (!$this->has($job, $argument)) {
6970
if ($job instanceof IJob) {
7071
$class = get_class($job);
@@ -77,7 +78,6 @@ public function add($job, $argument = null) {
7778
throw new \InvalidArgumentException('Background job arguments can\'t exceed 4000 characters (json encoded)');
7879
}
7980

80-
$query = $this->connection->getQueryBuilder();
8181
$query->insert('jobs')
8282
->values([
8383
'class' => $query->createNamedParameter($class),
@@ -86,6 +86,25 @@ public function add($job, $argument = null) {
8686
'last_checked' => $query->createNamedParameter($this->timeFactory->getTime(), IQueryBuilder::PARAM_INT),
8787
]);
8888
$query->execute();
89+
} else {
90+
if ($job instanceof IJob) {
91+
$class = get_class($job);
92+
} else {
93+
$class = $job;
94+
}
95+
96+
$argument = json_encode($argument);
97+
if (strlen($argument) > 4000) {
98+
throw new \InvalidArgumentException('Background job arguments can\'t exceed 4000 characters (json encoded)');
99+
}
100+
101+
$reset = $this->connection->getQueryBuilder();
102+
$reset->update('jobs')
103+
->set('reserved_at', $reset->expr()->literal(0, IQueryBuilder::PARAM_INT))
104+
->set('last_checked', $reset->createNamedParameter($this->timeFactory->getTime(), IQueryBuilder::PARAM_INT))
105+
->where($query->expr()->eq('class', $reset->createNamedParameter($class)))
106+
->andWhere($query->expr()->eq('argument', $reset->createNamedParameter($argument)));
107+
$reset->execute();
89108
}
90109
}
91110

0 commit comments

Comments
 (0)