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>2021-10-21 23:53:33 +0300
committerVincent Petry <vincent@nextcloud.com>2021-11-05 11:48:52 +0300
commitdb29fd29eed9d5307cbd6df4603dd1747a6d8a46 (patch)
treed75e02bb60309ec36a55efbfa8823add889fa57e /lib/private/Files/Storage
parent51317a8b922bfecf4ab021ff4514b1926a118568 (diff)
Return false in hasUpdated when storage is not available
Technically, saying that a storage has no updates when it's not available is correct. This makes it possible to retrieve the cache entry for the mount point and also to list and remove unavailable federated shares. Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Diffstat (limited to 'lib/private/Files/Storage')
-rw-r--r--lib/private/Files/Storage/Wrapper/Availability.php14
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/private/Files/Storage/Wrapper/Availability.php b/lib/private/Files/Storage/Wrapper/Availability.php
index b6d1ba2178b..1b532e3ba04 100644
--- a/lib/private/Files/Storage/Wrapper/Availability.php
+++ b/lib/private/Files/Storage/Wrapper/Availability.php
@@ -379,11 +379,15 @@ class Availability extends Wrapper {
/** {@inheritdoc} */
public function hasUpdated($path, $time) {
- $this->checkAvailability();
+ if (!$this->isAvailable()) {
+ return false;
+ }
try {
return parent::hasUpdated($path, $time);
} catch (StorageNotAvailableException $e) {
- $this->setUnavailable($e);
+ // set unavailable but don't rethrow
+ $this->setUnavailable(null);
+ return false;
}
}
@@ -449,7 +453,7 @@ class Availability extends Wrapper {
/**
* @throws StorageNotAvailableException
*/
- protected function setUnavailable(StorageNotAvailableException $e) {
+ protected function setUnavailable(?StorageNotAvailableException $e) {
$delay = self::RECHECK_TTL_SEC;
if ($e instanceof StorageAuthException) {
$delay = max(
@@ -459,7 +463,9 @@ class Availability extends Wrapper {
);
}
$this->getStorageCache()->setAvailability(false, $delay);
- throw $e;
+ if ($e !== null) {
+ throw $e;
+ }
}