From 38de80248161a7f44b0e1739dc9c16e93684e220 Mon Sep 17 00:00:00 2001 From: Louis Chemineau Date: Thu, 11 Jul 2024 14:55:30 +0200 Subject: [PATCH] fix(files_metadata): Don't run generation job on every upgrade Signed-off-by: Louis Chemineau --- core/BackgroundJobs/GenerateMetadataJob.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/core/BackgroundJobs/GenerateMetadataJob.php b/core/BackgroundJobs/GenerateMetadataJob.php index 607d4dd7b2059..9d84542901ba8 100644 --- a/core/BackgroundJobs/GenerateMetadataJob.php +++ b/core/BackgroundJobs/GenerateMetadataJob.php @@ -15,14 +15,14 @@ use OCP\Files\IRootFolder; use OCP\FilesMetadata\Exceptions\FilesMetadataNotFoundException; use OCP\FilesMetadata\IFilesMetadataManager; -use OCP\IConfig; +use OCP\IAppConfig; use OCP\IUserManager; use Psr\Log\LoggerInterface; class GenerateMetadataJob extends TimedJob { public function __construct( ITimeFactory $time, - private IConfig $config, + private IAppConfig $appConfig, private IRootFolder $rootFolder, private IUserManager $userManager, private IFilesMetadataManager $filesMetadataManager, @@ -36,8 +36,15 @@ public function __construct( } protected function run(mixed $argument): void { + $generationDone = $this->appConfig->getValueBool('core', 'metadataGenerationDone', false); + + if ($generationDone) { + return; + } + + $lastHandledUser = $this->appConfig->getValueString('core', 'metadataGenerationLastHandledUser', ''); + $users = $this->userManager->search(''); - $lastHandledUser = $this->config->getAppValue('core', 'metadataGenerationLastHandledUser', ''); // we'll only start timer once we have found a valid user to handle // meaning NOW if we have not handled any user from a previous run @@ -53,7 +60,7 @@ protected function run(mixed $argument): void { continue; } - $this->config->setAppValue('core', 'metadataGenerationLastHandledUser', $userId); + $this->appConfig->setValueString('core', 'metadataGenerationLastHandledUser', $userId); $this->scanFilesForUser($user->getUID()); // Stop if execution time is more than one hour. @@ -62,8 +69,8 @@ protected function run(mixed $argument): void { } } - $this->jobList->remove(GenerateMetadataJob::class); - $this->config->deleteAppValue('core', 'metadataGenerationLastHandledUser'); + $this->appConfig->deleteKey('core', 'metadataGenerationLastHandledUser'); + $this->appConfig->setValueBool('core', 'metadataGenerationDone', true); } private function scanFilesForUser(string $userId): void {