diff --git a/apps/dav/lib/Connector/Sabre/Directory.php b/apps/dav/lib/Connector/Sabre/Directory.php index 9e0b89596cdee..ed98b5050f811 100644 --- a/apps/dav/lib/Connector/Sabre/Directory.php +++ b/apps/dav/lib/Connector/Sabre/Directory.php @@ -47,6 +47,7 @@ use OCP\Files\StorageNotAvailableException; use OCP\Lock\ILockingProvider; use OCP\Lock\LockedException; +use Psr\Log\LoggerInterface; use Sabre\DAV\Exception\BadRequest; use Sabre\DAV\Exception\Locked; use Sabre\DAV\Exception\NotFound; @@ -331,6 +332,8 @@ public function delete() { * @return array */ public function getQuotaInfo() { + /** @var LoggerInterface $logger */ + $logger = \OC::$server->get(LoggerInterface::class); if ($this->quotaInfo) { return $this->quotaInfo; } @@ -347,10 +350,13 @@ public function getQuotaInfo() { ]; return $this->quotaInfo; } catch (\OCP\Files\NotFoundException $e) { + $logger->warning("error while getting quota into", ['exception' => $e]); return [0, 0]; } catch (\OCP\Files\StorageNotAvailableException $e) { + $logger->warning("error while getting quota into", ['exception' => $e]); return [0, 0]; } catch (NotPermittedException $e) { + $logger->warning("error while getting quota into", ['exception' => $e]); return [0, 0]; } } diff --git a/lib/private/legacy/OC_Helper.php b/lib/private/legacy/OC_Helper.php index 68fb4311ef8d0..0d1903007c27e 100644 --- a/lib/private/legacy/OC_Helper.php +++ b/lib/private/legacy/OC_Helper.php @@ -48,6 +48,7 @@ use OCP\Files\Mount\IMountPoint; use OCP\ICacheFactory; use OCP\IUser; +use Psr\Log\LoggerInterface; use Symfony\Component\Process\ExecutableFinder; /** @@ -518,7 +519,6 @@ public static function getStorageInfo($path, $rootInfo = null, $includeMountPoin $sourceStorage = $storage; if ($storage->instanceOfStorage('\OCA\Files_Sharing\SharedStorage')) { $includeExtStorage = false; - $sourceStorage = $storage->getSourceStorage(); $internalPath = $storage->getUnjailedPath($rootInfo->getInternalPath()); } else { $internalPath = $rootInfo->getInternalPath(); @@ -544,7 +544,19 @@ public static function getStorageInfo($path, $rootInfo = null, $includeMountPoin /** @var \OC\Files\Storage\Wrapper\Quota $storage */ $quota = $sourceStorage->getQuota(); } - $free = $sourceStorage->free_space($internalPath); + try { + $free = $sourceStorage->free_space($internalPath); + } catch (\Exception $e) { + if ($path === "") { + throw $e; + } + /** @var LoggerInterface $logger */ + $logger = \OC::$server->get(LoggerInterface::class); + $logger->warning("Error while getting quota info, using root quota", ['exception' => $e]); + $rootInfo = self::getStorageInfo(""); + $memcache->set($cacheKey, $rootInfo, 5 * 60); + return $rootInfo; + } if ($free >= 0) { $total = $free + $used; } else {