Skip to content

Commit 28a7373

Browse files
committed
Reset job disabling timer on adding the job again
Signed-off-by: Julius Härtl <jus@bitgrid.net>
1 parent e8e8ad2 commit 28a7373

1 file changed

Lines changed: 19 additions & 0 deletions

File tree

lib/private/BackgroundJob/JobList.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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($reset->expr()->eq('class', $reset->createNamedParameter($class)))
106+
->andWhere($reset->expr()->eq('argument', $reset->createNamedParameter($argument)));
107+
$reset->execute();
89108
}
90109
}
91110

0 commit comments

Comments
 (0)