diff options
author | Julien Veyssier <julien-nc@posteo.net> | 2024-04-09 11:12:48 +0200 |
---|---|---|
committer | Julien Veyssier <julien-nc@posteo.net> | 2024-05-02 16:43:42 +0200 |
commit | d967151f520ba6c860ed9a727e3363ec04a6506d (patch) | |
tree | a630df77e8c5f84c9b7a627ff18cf05723099f4f | |
parent | 1acc57b5c03b80ad5b6b5df7aff9df0fef83f14f (diff) | |
download | nextcloud-server-d967151f520ba6c860ed9a727e3363ec04a6506d.tar.gz nextcloud-server-d967151f520ba6c860ed9a727e3363ec04a6506d.zip |
fix(bg-jobs): review adjustments
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
-rw-r--r-- | core/Command/Background/JobBase.php | 8 | ||||
-rw-r--r-- | core/Command/Background/JobWorker.php | 25 | ||||
-rw-r--r-- | core/register_command.php | 2 | ||||
-rw-r--r-- | lib/private/BackgroundJob/JobList.php | 3 | ||||
-rw-r--r-- | lib/public/BackgroundJob/IJobList.php | 8 |
5 files changed, 28 insertions, 18 deletions
diff --git a/core/Command/Background/JobBase.php b/core/Command/Background/JobBase.php index 94c9e1611ea..2de5d061378 100644 --- a/core/Command/Background/JobBase.php +++ b/core/Command/Background/JobBase.php @@ -32,16 +32,12 @@ use Psr\Log\LoggerInterface; use Symfony\Component\Console\Output\OutputInterface; abstract class JobBase extends \OC\Core\Command\Base { - protected IJobList $jobList; - protected LoggerInterface $logger; public function __construct( - IJobList $jobList, - LoggerInterface $logger + protected IJobList $jobList, + protected LoggerInterface $logger ) { parent::__construct(); - $this->jobList = $jobList; - $this->logger = $logger; } protected function printJobInfo(int $jobId, IJob $job, OutputInterface $output): void { diff --git a/core/Command/Background/JobWorker.php b/core/Command/Background/JobWorker.php index 8b7bb6b6fba..0cfe9db940b 100644 --- a/core/Command/Background/JobWorker.php +++ b/core/Command/Background/JobWorker.php @@ -26,13 +26,25 @@ declare(strict_types=1); namespace OC\Core\Command\Background; use OC\Core\Command\InterruptedException; +use OC\Files\SetupManager; +use OCP\BackgroundJob\IJobList; use OCP\ITempManager; +use Psr\Log\LoggerInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; class JobWorker extends JobBase { + + public function __construct( + protected IJobList $jobList, + protected LoggerInterface $logger, + private ITempManager $tempManager, + private SetupManager $setupManager, + ) { + parent::__construct($jobList, $logger); + } protected function configure(): void { parent::configure(); @@ -103,7 +115,11 @@ class JobWorker extends JobBase { $job = $this->jobList->getNext(false, $jobClasses); if (!$job) { if ($input->getOption('once') === true) { - $output->writeln('No job of classes ' . $jobClassesString . ' is currently queued', OutputInterface::VERBOSITY_VERBOSE); + if ($jobClassesString === null) { + $output->writeln('No job is currently queued', OutputInterface::VERBOSITY_VERBOSE); + } else { + $output->writeln('No job of classes ' . $jobClassesString . ' is currently queued', OutputInterface::VERBOSITY_VERBOSE); + } $output->writeln('Exiting...', OutputInterface::VERBOSITY_VERBOSE); break; } @@ -120,13 +136,14 @@ class JobWorker extends JobBase { $this->printJobInfo($job->getId(), $job, $output); } - $job->start($this->jobList); + /** @psalm-suppress DeprecatedMethod Calling execute until it is removed, then will switch to start */ + $job->execute($this->jobList); $output->writeln('Job ' . $job->getId() . ' has finished', OutputInterface::VERBOSITY_VERBOSE); // clean up after unclean jobs - \OC_Util::tearDownFS(); - \OC::$server->get(ITempManager::class)->clean(); + $this->setupManager->tearDown(); + $this->tempManager->clean(); $this->jobList->setLastJob($job); $this->jobList->unlockJob($job); diff --git a/core/register_command.php b/core/register_command.php index 88ece906846..818fc1e54f4 100644 --- a/core/register_command.php +++ b/core/register_command.php @@ -80,8 +80,6 @@ if ($config->getSystemValueBool('installed', false)) { $application->add(Server::get(Command\TwoFactorAuth\Enable::class)); $application->add(Server::get(Command\TwoFactorAuth\Disable::class)); $application->add(Server::get(Command\TwoFactorAuth\State::class)); - $application->add(Server::get(Command\TwoFactorAuth\State::class)); - $application->add(Server::get(Command\Background\Cron::class)); $application->add(Server::get(Command\Background\WebCron::class)); diff --git a/lib/private/BackgroundJob/JobList.php b/lib/private/BackgroundJob/JobList.php index 26bc198c6e0..bc3416e3528 100644 --- a/lib/private/BackgroundJob/JobList.php +++ b/lib/private/BackgroundJob/JobList.php @@ -211,8 +211,7 @@ class JobList implements IJobList { } /** - * Get the next job in the list - * @return ?IJob the next job to run. Beware that this object may be a singleton and may be modified by the next call to buildJob. + * @inheritDoc */ public function getNext(bool $onlyTimeSensitive = false, ?array $jobClasses = null): ?IJob { $query = $this->connection->getQueryBuilder(); diff --git a/lib/public/BackgroundJob/IJobList.php b/lib/public/BackgroundJob/IJobList.php index 396a28fc120..f200988695d 100644 --- a/lib/public/BackgroundJob/IJobList.php +++ b/lib/public/BackgroundJob/IJobList.php @@ -108,11 +108,11 @@ interface IJobList { public function getJobsIterator($job, ?int $limit, int $offset): iterable; /** - * get the next job in the list + * Get the next job in the list * * @param bool $onlyTimeSensitive Whether we get only time sensitive jobs or not - * @param array|null $jobClasses List of job classes to restrict which next job we get - * @return IJob|null + * @param class-string<IJob>[]|null $jobClasses List of job classes to restrict which next job we get + * @return ?IJob the next job to run. Beware that this object may be a singleton and may be modified by the next call to buildJob. * @since 7.0.0 - In 24.0.0 parameter $onlyTimeSensitive got added; In 30.0.0 parameter $jobClasses got added */ public function getNext(bool $onlyTimeSensitive = false, ?array $jobClasses = null): ?IJob; @@ -176,7 +176,7 @@ interface IJobList { * Returns a count of jobs per Job class * * @return list<array{class:class-string, count:int}> - * @since 29.0.0 + * @since 30.0.0 */ public function countByClass(): array; } |