Skip to content

Commit

Permalink
Merge pull request #41015 from nextcloud/background-scan-catch-storag…
Browse files Browse the repository at this point in the history
…e-error

continue background scanning different storages if one fails
  • Loading branch information
icewind1991 authored Feb 7, 2024
2 parents 840e8fc + 3066687 commit 5ea6976
Showing 1 changed file with 27 additions and 23 deletions.
50 changes: 27 additions & 23 deletions lib/private/Files/Utils/Scanner.php
Original file line number Diff line number Diff line change
Expand Up @@ -156,33 +156,37 @@ protected function attachListener($mount) {
public function backgroundScan($dir) {
$mounts = $this->getMounts($dir);
foreach ($mounts as $mount) {
$storage = $mount->getStorage();
if (is_null($storage)) {
continue;
}
try {
$storage = $mount->getStorage();
if (is_null($storage)) {
continue;
}

// don't bother scanning failed storages (shortcut for same result)
if ($storage->instanceOfStorage(FailedStorage::class)) {
continue;
}
// don't bother scanning failed storages (shortcut for same result)
if ($storage->instanceOfStorage(FailedStorage::class)) {
continue;
}

$scanner = $storage->getScanner();
$this->attachListener($mount);
$scanner = $storage->getScanner();
$this->attachListener($mount);

$scanner->listen('\OC\Files\Cache\Scanner', 'removeFromCache', function ($path) use ($storage) {
$this->triggerPropagator($storage, $path);
});
$scanner->listen('\OC\Files\Cache\Scanner', 'updateCache', function ($path) use ($storage) {
$this->triggerPropagator($storage, $path);
});
$scanner->listen('\OC\Files\Cache\Scanner', 'addToCache', function ($path) use ($storage) {
$this->triggerPropagator($storage, $path);
});
$scanner->listen('\OC\Files\Cache\Scanner', 'removeFromCache', function ($path) use ($storage) {
$this->triggerPropagator($storage, $path);
});
$scanner->listen('\OC\Files\Cache\Scanner', 'updateCache', function ($path) use ($storage) {
$this->triggerPropagator($storage, $path);
});
$scanner->listen('\OC\Files\Cache\Scanner', 'addToCache', function ($path) use ($storage) {
$this->triggerPropagator($storage, $path);
});

$propagator = $storage->getPropagator();
$propagator->beginBatch();
$scanner->backgroundScan();
$propagator->commitBatch();
$propagator = $storage->getPropagator();
$propagator->beginBatch();
$scanner->backgroundScan();
$propagator->commitBatch();
} catch (\Exception $e) {
$this->logger->error("Error while trying to scan mount as {$mount->getMountPoint()}:" . $e->getMessage(), ['exception' => $e, 'app' => 'files']);
}
}
}

Expand Down

0 comments on commit 5ea6976

Please sign in to comment.