Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Petry <vincent@nextcloud.com>2022-01-05 19:19:24 +0300
committerVincent Petry <vincent@nextcloud.com>2022-01-10 13:33:28 +0300
commitce319143142e2ee998ef4794b04ad684c4ffa911 (patch)
tree6d2a5b415d3b0b4dd6544e801cabee5bc63dfba7 /apps/files_sharing/lib
parent91c7efaeb6c3a65643f1f0a9377d7c42b9231f8a (diff)
Remove inefficient fed share scanner
Remove scanAll which relies on the "shareinfo" endpoint that returns the full cache tree. The latter can become big for big shares and result in timeouts. Furthermode, the full tree would be retrieved again for each and every detected change which can become expensive quickly. Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Diffstat (limited to 'apps/files_sharing/lib')
-rw-r--r--apps/files_sharing/lib/External/Scanner.php70
1 files changed, 0 insertions, 70 deletions
diff --git a/apps/files_sharing/lib/External/Scanner.php b/apps/files_sharing/lib/External/Scanner.php
index cfde56103da..009e206b959 100644
--- a/apps/files_sharing/lib/External/Scanner.php
+++ b/apps/files_sharing/lib/External/Scanner.php
@@ -29,29 +29,11 @@ use OC\ForbiddenException;
use OCP\Files\NotFoundException;
use OCP\Files\StorageInvalidException;
use OCP\Files\StorageNotAvailableException;
-use OCP\Http\Client\LocalServerException;
-use Psr\Log\LoggerInterface;
class Scanner extends \OC\Files\Cache\Scanner {
/** @var \OCA\Files_Sharing\External\Storage */
protected $storage;
- /** {@inheritDoc} */
- public function scan($path, $recursive = self::SCAN_RECURSIVE, $reuse = -1, $lock = true) {
- try {
- if (!$this->storage->remoteIsOwnCloud()) {
- return parent::scan($path, $recursive, $reuse, $lock);
- }
- } catch (LocalServerException $e) {
- // Scanner doesn't have dependency injection
- \OC::$server->get(LoggerInterface::class)
- ->warning('Trying to scan files inside invalid external storage: ' . $this->storage->getRemote() . ' for mountpoint ' . $this->storage->getMountPoint() . ' and id ' . $this->storage->getId());
- return;
- }
-
- $this->scanAll();
- }
-
/**
* Scan a single file and store it in the cache.
* If an exception happened while accessing the external storage,
@@ -81,56 +63,4 @@ class Scanner extends \OC\Files\Cache\Scanner {
$this->storage->checkStorageAvailability();
}
}
-
- /**
- * Checks the remote share for changes.
- * If changes are available, scan them and update
- * the cache.
- * @throws NotFoundException
- * @throws StorageInvalidException
- * @throws \Exception
- */
- public function scanAll() {
- try {
- $data = $this->storage->getShareInfo();
- } catch (\Exception $e) {
- $this->storage->checkStorageAvailability();
- throw new \Exception(
- 'Error while scanning remote share: "' .
- $this->storage->getRemote() . '" ' .
- $e->getMessage()
- );
- }
- if ($data['status'] === 'success') {
- $this->addResult($data['data'], '');
- } else {
- throw new \Exception(
- 'Error while scanning remote share: "' .
- $this->storage->getRemote() . '"'
- );
- }
- }
-
- /**
- * @param array $data
- * @param string $path
- */
- private function addResult($data, $path) {
- $id = $this->cache->put($path, $data);
- if (isset($data['children'])) {
- $children = [];
- foreach ($data['children'] as $child) {
- $children[$child['name']] = true;
- $this->addResult($child, ltrim($path . '/' . $child['name'], '/'));
- }
-
- $existingCache = $this->cache->getFolderContentsById($id);
- foreach ($existingCache as $existingChild) {
- // if an existing child is not in the new data, remove it
- if (!isset($children[$existingChild['name']])) {
- $this->cache->remove(ltrim($path . '/' . $existingChild['name'], '/'));
- }
- }
- }
- }
}