|
|
|
@ -29,6 +29,7 @@ use OCP\Files\Storage\IStorage; |
|
|
|
|
use OCP\Files\StorageNotAvailableException; |
|
|
|
|
use OCP\IDBConnection; |
|
|
|
|
use OCP\Lock\ILockingProvider; |
|
|
|
|
use OCP\Lock\LockedException; |
|
|
|
|
use Psr\Log\LoggerInterface; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -260,7 +261,15 @@ class Scanner extends PublicEmitter { |
|
|
|
|
try { |
|
|
|
|
$propagator = $storage->getPropagator(); |
|
|
|
|
$propagator->beginBatch(); |
|
|
|
|
$scanner->scan($relativePath, $recursive, \OC\Files\Cache\Scanner::REUSE_ETAG | \OC\Files\Cache\Scanner::REUSE_SIZE); |
|
|
|
|
try { |
|
|
|
|
$scanner->scan($relativePath, $recursive, \OC\Files\Cache\Scanner::REUSE_ETAG | \OC\Files\Cache\Scanner::REUSE_SIZE); |
|
|
|
|
} catch (LockedException $e) { |
|
|
|
|
if (is_string($e->getReadablePath()) && str_starts_with($e->getReadablePath(), 'scanner::')) { |
|
|
|
|
throw new LockedException("scanner::$dir", $e, $e->getExistingLock()); |
|
|
|
|
} else { |
|
|
|
|
throw $e; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$cache = $storage->getCache(); |
|
|
|
|
if ($cache instanceof Cache) { |
|
|
|
|
// only re-calculate for the root folder we scanned, anything below that is taken care of by the scanner |
|
|
|
|