Skip to content

Commit

Permalink
fix(jobs): Swicth to executeStatement() while deleting rows
Browse files Browse the repository at this point in the history
Signed-off-by: Git'Fellow <[email protected]>
  • Loading branch information
solracsf authored Aug 9, 2024
1 parent 9074235 commit c6be80a
Showing 1 changed file with 16 additions and 37 deletions.
53 changes: 16 additions & 37 deletions lib/private/BackgroundJob/JobList.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,27 +24,20 @@
use function strlen;

class JobList implements IJobList {
protected IDBConnection $connection;
protected IConfig $config;
protected ITimeFactory $timeFactory;
protected LoggerInterface $logger;

public function __construct(IDBConnection $connection, IConfig $config, ITimeFactory $timeFactory, LoggerInterface $logger) {
$this->connection = $connection;
$this->config = $config;
$this->timeFactory = $timeFactory;
$this->logger = $logger;
public function __construct(
protected IDBConnection $connection,
protected IConfig $config,
protected ITimeFactory $timeFactory,
protected LoggerInterface $logger
) {
}

public function add($job, $argument = null, ?int $firstCheck = null): void {
if ($firstCheck === null) {
$firstCheck = $this->timeFactory->getTime();
}
if ($job instanceof IJob) {
$class = get_class($job);
} else {
$class = $job;
}

$class = ($job instanceof IJob) ? get_class($job) : $job;

$argumentJson = json_encode($argument);
if (strlen($argumentJson) > 4000) {
Expand Down Expand Up @@ -81,11 +74,7 @@ public function scheduleAfter(string $job, int $runAfter, $argument = null): voi
* @param mixed $argument
*/
public function remove($job, $argument = null): void {
if ($job instanceof IJob) {
$class = get_class($job);
} else {
$class = $job;
}
$class = ($job instanceof IJob) ? get_class($job) : $job;

$query = $this->connection->getQueryBuilder();
$query->delete('jobs')
Expand All @@ -104,11 +93,11 @@ public function remove($job, $argument = null): void {
$query->setMaxResults($max);

do {
$deleted = $query->execute();
$deleted = $query->executeStatement();
} while ($deleted === $max);
} else {
// Dont use chunked delete - let the DB handle the large row count natively
$query->execute();
$query->executeStatement();
}
}

Expand All @@ -126,11 +115,7 @@ public function removeById(int $id): void {
* @param mixed $argument
*/
public function has($job, $argument): bool {
if ($job instanceof IJob) {
$class = get_class($job);
} else {
$class = $job;
}
$class = ($job instanceof IJob) ? get_class($job) : $job;
$argument = json_encode($argument);

$query = $this->connection->getQueryBuilder();
Expand All @@ -149,11 +134,9 @@ public function has($job, $argument): bool {

public function getJobs($job, ?int $limit, int $offset): array {
$iterable = $this->getJobsIterator($job, $limit, $offset);
if (is_array($iterable)) {
return $iterable;
} else {
return iterator_to_array($iterable);
}
return (is_array($iterable))
? $iterable
: iterator_to_array($iterable);
}

/**
Expand All @@ -168,11 +151,7 @@ public function getJobsIterator($job, ?int $limit, int $offset): iterable {
->setFirstResult($offset);

if ($job !== null) {
if ($job instanceof IJob) {
$class = get_class($job);
} else {
$class = $job;
}
$class = ($job instanceof IJob) ? get_class($job) : $job;
$query->where($query->expr()->eq('class', $query->createNamedParameter($class)));
}

Expand Down

0 comments on commit c6be80a

Please sign in to comment.