From bd1daf63fd80bc4be9c666828cfec63c5bafabdf Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Thu, 25 Aug 2016 18:06:13 +0200 Subject: [PATCH 1/2] Prevent error with orphaned shares when updating user mount cache --- apps/files_sharing/lib/SharedMount.php | 7 ++++++- apps/files_sharing/lib/sharedstorage.php | 5 ++++- lib/private/Files/Config/UserMountCache.php | 3 ++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/apps/files_sharing/lib/SharedMount.php b/apps/files_sharing/lib/SharedMount.php index fd997227a2af..73ac0008ec10 100644 --- a/apps/files_sharing/lib/SharedMount.php +++ b/apps/files_sharing/lib/SharedMount.php @@ -241,6 +241,11 @@ public function getStorageNumericId() { ->from('filecache') ->where($query->expr()->eq('fileid', $query->createNamedParameter($this->getStorageRootId()))); - return $query->execute()->fetchColumn(); + $result = $query->execute(); + $row = $result->fetch(); + if ($row) { + return $row['storage']; + } + return -1; } } diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 4047692ede73..d4bf6e0c6606 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -38,6 +38,7 @@ use OCP\Files\Storage\IStorage; use OCP\Lock\ILockingProvider; use OC\Files\Storage\FailedStorage; +use OCP\Files\NotFoundException; /** * Convert target path to source path and pass the function call to the correct storage provider @@ -104,7 +105,9 @@ private function init() { } catch (\Exception $e) { $this->sourceStorage = new FailedStorage(['exception' => $e]); - $this->logger->logException($e); + if (!$e instanceof NotFoundException) { + $this->logger->logException($e); + } } $this->storage = $this->sourceStorage; } diff --git a/lib/private/Files/Config/UserMountCache.php b/lib/private/Files/Config/UserMountCache.php index c3dffb2ce724..422cbd92f7ef 100644 --- a/lib/private/Files/Config/UserMountCache.php +++ b/lib/private/Files/Config/UserMountCache.php @@ -143,7 +143,8 @@ private function addToCache(ICachedMountInfo $mount) { 'mount_point' => $mount->getMountPoint() ], ['root_id', 'user_id']); } else { - $this->logger->error('Error getting storage info for mount at ' . $mount->getMountPoint()); + // in some cases this is legitimate, like orphaned shares + $this->logger->debug('Could not get storage info for mount at ' . $mount->getMountPoint()); } } From 2f88c624cb947c43fd3edf3d945d443f4548283c Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Tue, 30 Aug 2016 09:52:54 +0200 Subject: [PATCH 2/2] Added closeCursor in SharedMount numeric id --- apps/files_sharing/lib/SharedMount.php | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/files_sharing/lib/SharedMount.php b/apps/files_sharing/lib/SharedMount.php index 73ac0008ec10..d1207ad60dea 100644 --- a/apps/files_sharing/lib/SharedMount.php +++ b/apps/files_sharing/lib/SharedMount.php @@ -243,6 +243,7 @@ public function getStorageNumericId() { $result = $query->execute(); $row = $result->fetch(); + $result->closeCursor(); if ($row) { return $row['storage']; }