diff --git a/apps/dav/lib/BackgroundJob/UserStatusAutomation.php b/apps/dav/lib/BackgroundJob/UserStatusAutomation.php index ea4f67f7a14e5..92bac423ee218 100644 --- a/apps/dav/lib/BackgroundJob/UserStatusAutomation.php +++ b/apps/dav/lib/BackgroundJob/UserStatusAutomation.php @@ -90,7 +90,7 @@ protected function setLastRunToNextToggleTime(string $userId, int $timestamp): v $query->update('jobs') ->set('last_run', $query->createNamedParameter($timestamp, IQueryBuilder::PARAM_INT)) - ->where($query->expr()->eq('id', $query->createNamedParameter($this->getId(), IQueryBuilder::PARAM_INT))); + ->where($query->expr()->eq('id', $query->createNamedParameter($this->getId()))); $query->executeStatement(); $this->logger->debug('Updated user status automation last_run to ' . $timestamp . ' for user ' . $userId); diff --git a/lib/private/BackgroundJob/JobList.php b/lib/private/BackgroundJob/JobList.php index 242b78ade850b..40e2133a3efd8 100644 --- a/lib/private/BackgroundJob/JobList.php +++ b/lib/private/BackgroundJob/JobList.php @@ -115,7 +115,7 @@ public function remove(IJob|string $job, mixed $argument = null): void { public function removeById(string $id): void { $query = $this->connection->getQueryBuilder(); $query->delete('jobs') - ->where($query->expr()->eq('id', $query->createNamedParameter($id, IQueryBuilder::PARAM_INT))); + ->where($query->expr()->eq('id', $query->createNamedParameter($id))); $query->executeStatement(); } @@ -265,7 +265,7 @@ public function getNext(bool $onlyTimeSensitive = false, ?array $jobClasses = nu $reset->update('jobs') ->set('reserved_at', $reset->expr()->literal(0, IQueryBuilder::PARAM_INT)) ->set('last_checked', $reset->createNamedParameter($this->timeFactory->getTime() + 12 * 3600, IQueryBuilder::PARAM_INT)) - ->where($reset->expr()->eq('id', $reset->createNamedParameter($row['id'], IQueryBuilder::PARAM_INT))); + ->where($reset->expr()->eq('id', $reset->createNamedParameter($row['id']))); $reset->executeStatement(); // Background job from disabled app, try again. @@ -358,7 +358,7 @@ public function unlockJob(IJob $job): void { $query = $this->connection->getQueryBuilder(); $query->update('jobs') ->set('reserved_at', $query->expr()->literal(0, IQueryBuilder::PARAM_INT)) - ->where($query->expr()->eq('id', $query->createNamedParameter($job->getId(), IQueryBuilder::PARAM_INT))); + ->where($query->expr()->eq('id', $query->createNamedParameter($job->getId()))); $query->executeStatement(); } @@ -383,7 +383,7 @@ public function setExecutionTime(IJob $job, $timeTaken): void { $query->update('jobs') ->set('execution_duration', $query->createNamedParameter($timeTaken, IQueryBuilder::PARAM_INT)) ->set('reserved_at', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)) - ->where($query->expr()->eq('id', $query->createNamedParameter($job->getId(), IQueryBuilder::PARAM_INT))); + ->where($query->expr()->eq('id', $query->createNamedParameter($job->getId()))); $query->executeStatement(); } @@ -393,7 +393,7 @@ public function resetBackgroundJob(IJob $job): void { $query->update('jobs') ->set('last_run', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)) ->set('reserved_at', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)) - ->where($query->expr()->eq('id', $query->createNamedParameter($job->getId()), IQueryBuilder::PARAM_INT)); + ->where($query->expr()->eq('id', $query->createNamedParameter($job->getId()))); $query->executeStatement(); } diff --git a/tests/lib/BackgroundJob/JobListTest.php b/tests/lib/BackgroundJob/JobListTest.php index 249625684f5db..6e0d2f321f37c 100644 --- a/tests/lib/BackgroundJob/JobListTest.php +++ b/tests/lib/BackgroundJob/JobListTest.php @@ -273,6 +273,26 @@ public function testSetLastRun(): void { $this->assertLessThanOrEqual($timeEnd, $addedJob->getLastRun()); } + public function testRemoveByIdWithSnowflakeId(): void { + $this->instance->add(new TestJob(), 'remove-by-id'); + $job = $this->instance->getJobs(null, 1, 0)[0]; + + $this->instance->removeById($job->getId()); + + $this->assertNull($this->instance->getById($job->getId())); + } + + public function testResetBackgroundJobWithSnowflakeId(): void { + $this->instance->add(new TestJob(), 'reset'); + $job = $this->instance->getJobs(null, 1, 0)[0]; + + $this->instance->resetBackgroundJob($job); + + $row = $this->instance->getDetailsById($job->getId()); + $this->assertSame('0', (string)$row['last_run']); + $this->assertSame('0', (string)$row['reserved_at']); + } + public function testHasReservedJobs(): void { $this->clearJobsList();