diff options
author | Robin Appelman <icewind@owncloud.com> | 2016-05-18 15:06:15 +0200 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2016-05-23 14:40:35 +0200 |
commit | eca57be3367d9ea462f54cfb227701c8524a6764 (patch) | |
tree | 947b57cd8efc796871a8184e2ed00beee95c9ed9 /lib/private | |
parent | 4ba36688346612ec480fd1eea3f192257919cdf7 (diff) | |
download | nextcloud-server-eca57be3367d9ea462f54cfb227701c8524a6764.tar.gz nextcloud-server-eca57be3367d9ea462f54cfb227701c8524a6764.zip |
Only recurse into incomplete folders during background scans
Diffstat (limited to 'lib/private')
-rw-r--r-- | lib/private/Files/Cache/Scanner.php | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/private/Files/Cache/Scanner.php b/lib/private/Files/Cache/Scanner.php index fd309a4ac45..06cc6426c59 100644 --- a/lib/private/Files/Cache/Scanner.php +++ b/lib/private/Files/Cache/Scanner.php @@ -371,7 +371,7 @@ class Scanner extends BasicEmitter implements IScanner { $childQueue = $this->handleChildren($path, $recursive, $reuse, $folderId, $lock, $size); foreach ($childQueue as $child => $childId) { - $childSize = $this->scanChildren($child, self::SCAN_RECURSIVE, $reuse, $childId, $lock); + $childSize = $this->scanChildren($child, $recursive, $reuse, $childId, $lock); if ($childSize === -1) { $size = -1; } else if ($size !== -1) { @@ -402,6 +402,9 @@ class Scanner extends BasicEmitter implements IScanner { if ($data) { if ($data['mimetype'] === 'httpd/unix-directory' and $recursive === self::SCAN_RECURSIVE) { $childQueue[$child] = $data['fileid']; + } else if ($data['mimetype'] === 'httpd/unix-directory' and $recursive === self::SCAN_RECURSIVE_INCOMPLETE and $data['size'] === -1) { + // only recurse into folders which aren't fully scanned + $childQueue[$child] = $data['fileid']; } else if ($data['size'] === -1) { $size = -1; } else if ($size !== -1) { @@ -469,8 +472,8 @@ class Scanner extends BasicEmitter implements IScanner { } else { $lastPath = null; while (($path = $this->cache->getIncomplete()) !== false && $path !== $lastPath) { - $this->runBackgroundScanJob(function () use ($path) { - $this->scan($path, self::SCAN_RECURSIVE, self::REUSE_ETAG); + $this->runBackgroundScanJob(function() use ($path) { + $this->scan($path, self::SCAN_RECURSIVE_INCOMPLETE, self::REUSE_ETAG | self::REUSE_SIZE); }, $path); // FIXME: this won't proceed with the next item, needs revamping of getIncomplete() // to make this possible |