diff options
author | Louis Chemineau <louis@chmn.me> | 2025-06-18 15:48:22 +0200 |
---|---|---|
committer | Louis Chemineau <louis@chmn.me> | 2025-06-18 17:22:33 +0200 |
commit | 82ede51423e9bb4c5ad19b10f84974086f2413b9 (patch) | |
tree | 965e0a507cd5e1ca90e8fff52f02839bb689e631 | |
parent | 28004c4b8309bee5325e5e88de40965cf5f0a96d (diff) | |
download | nextcloud-server-artonge/fix/generate_metadata_perf.tar.gz nextcloud-server-artonge/fix/generate_metadata_perf.zip |
fix(metadata): Skip generating metadata if there are some pending UpdateSingleMetadata job alreadyartonge/fix/generate_metadata_perf
This prevent the GenerateMetadataJob job from quickly piling up UpdateSingleMetadata jobs.
Signed-off-by: Louis Chemineau <louis@chmn.me>
-rw-r--r-- | core/BackgroundJobs/GenerateMetadataJob.php | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/core/BackgroundJobs/GenerateMetadataJob.php b/core/BackgroundJobs/GenerateMetadataJob.php index b584a771fbb..b42cca13ef9 100644 --- a/core/BackgroundJobs/GenerateMetadataJob.php +++ b/core/BackgroundJobs/GenerateMetadataJob.php @@ -9,6 +9,7 @@ declare(strict_types=1); namespace OC\Core\BackgroundJobs; use OC\Files\Mount\MoveableMount; +use OC\FilesMetadata\Job\UpdateSingleMetadata; use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\BackgroundJob\TimedJob; @@ -46,6 +47,13 @@ class GenerateMetadataJob extends TimedJob { return; } + // This prevent the job from piling up UpdateSingleMetadata jobs + $pendingUpdateSingleMetadataJobs = $this->jobList->countByClass(UpdateSingleMetadata::class); + if (isset($pendingUpdateSingleMetadataJobs[0]) && $pendingUpdateSingleMetadataJobs[0]['count'] > 1000) { + $this->logger->debug('Skipping metadata generation job as there are more than 1000 pending UpdateSingleMetadata jobs.'); + return; + } + $offset = $this->appConfig->getValueInt('core', 'metadataGenerationOffset', 0); $users = $this->userManager->getSeenUsers($offset); |