diff options
author | Julius Härtl <jus@bitgrid.net> | 2024-01-05 14:56:33 +0100 |
---|---|---|
committer | Julius Härtl <jus@bitgrid.net> | 2024-01-12 14:21:08 +0100 |
commit | cc75294eb6b16b916a342e69998935f89222619d (patch) | |
tree | 8308a12e5dd478155ce62b290524f6b094247c0b /lib/private/Files/Cache/Updater.php | |
parent | 48628b90690d8204e7875d561b8115c526cc9176 (diff) | |
download | nextcloud-server-cc75294eb6b16b916a342e69998935f89222619d.tar.gz nextcloud-server-cc75294eb6b16b916a342e69998935f89222619d.zip |
perf: Avoid updating the folder size if we know the size difference
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'lib/private/Files/Cache/Updater.php')
-rw-r--r-- | lib/private/Files/Cache/Updater.php | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/lib/private/Files/Cache/Updater.php b/lib/private/Files/Cache/Updater.php index 457dd207e9d..a6f2f3375a4 100644 --- a/lib/private/Files/Cache/Updater.php +++ b/lib/private/Files/Cache/Updater.php @@ -119,7 +119,7 @@ class Updater implements IUpdater { * @param string $path * @param int $time */ - public function update($path, $time = null) { + public function update($path, $time = null, ?int $sizeDifference = null) { if (!$this->enabled or Scanner::isPartialFile($path)) { return; } @@ -128,20 +128,22 @@ class Updater implements IUpdater { } $data = $this->scanner->scan($path, Scanner::SCAN_SHALLOW, -1, false); - if ( - isset($data['oldSize']) && isset($data['size']) && - !$data['encrypted'] // encryption is a pita and touches the cache itself - ) { + + if (isset($data['oldSize']) && isset($data['size'])) { $sizeDifference = $data['size'] - $data['oldSize']; - } else { - // scanner didn't provide size info, fallback to full size calculation - $sizeDifference = 0; - if ($this->cache instanceof Cache) { - $this->cache->correctFolderSize($path, $data); - } + } + + // encryption is a pita and touches the cache itself + if (isset($data['encrypted']) && !!$data['encrypted']) { + $sizeDifference = null; + } + + // scanner didn't provide size info, fallback to full size calculation + if ($this->cache instanceof Cache && $sizeDifference === null) { + $this->cache->correctFolderSize($path, $data); } $this->correctParentStorageMtime($path); - $this->propagator->propagateChange($path, $time, $sizeDifference); + $this->propagator->propagateChange($path, $time, $sizeDifference ?? 0); } /** |