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-10-27 14:36:33 +0300
committerGitHub <noreply@github.com>2022-10-27 14:36:33 +0300
commit1524b5fd2542d175b347bea0244728c4169b2fb8 (patch)
treecd9ad297db3bcb0b660494c0adcade3ea59f6256
parentaad2525cf512adbd8fc1c95c12e2823e4cae606e (diff)
parent82b915e7bbc6faf796b344c5afc84146a574f06e (diff)
Merge pull request #34797 from nextcloud/backport/33540/stable24
[stable24] fix updating cached mounts that didn't have their mount provider set previously
-rw-r--r--lib/private/Files/Config/UserMountCache.php7
-rw-r--r--tests/lib/Files/Config/UserMountCacheTest.php25
2 files changed, 31 insertions, 1 deletions
diff --git a/lib/private/Files/Config/UserMountCache.php b/lib/private/Files/Config/UserMountCache.php
index 666ba9b065b..84e87c48bc7 100644
--- a/lib/private/Files/Config/UserMountCache.php
+++ b/lib/private/Files/Config/UserMountCache.php
@@ -104,7 +104,12 @@ class UserMountCache implements IUserMountCache {
$cachedMounts = $this->getMountsForUser($user);
if (is_array($mountProviderClasses)) {
- $cachedMounts = array_filter($cachedMounts, function (ICachedMountInfo $mountInfo) use ($mountProviderClasses) {
+ $cachedMounts = array_filter($cachedMounts, function (ICachedMountInfo $mountInfo) use ($mountProviderClasses, $newMounts) {
+ // for existing mounts that didn't have a mount provider set
+ // we still want the ones that map to new mounts
+ if ($mountInfo->getMountProvider() === '' && isset($newMounts[$mountInfo->getRootId()])) {
+ return true;
+ }
return in_array($mountInfo->getMountProvider(), $mountProviderClasses);
});
}
diff --git a/tests/lib/Files/Config/UserMountCacheTest.php b/tests/lib/Files/Config/UserMountCacheTest.php
index f4c6a427abd..c4f9688f3b2 100644
--- a/tests/lib/Files/Config/UserMountCacheTest.php
+++ b/tests/lib/Files/Config/UserMountCacheTest.php
@@ -506,4 +506,29 @@ class UserMountCacheTest extends TestCase {
$result = $this->cache->getUsedSpaceForUsers([$user1, $user2]);
$this->assertEquals(['u1' => 100], $result);
}
+
+
+ public function testMigrateMountProvider() {
+ $user1 = $this->userManager->get('u1');
+
+ [$storage1, $rootId] = $this->getStorage(2);
+ $rootId = $this->createCacheEntry('', 2);
+ $mount1 = new MountPoint($storage1, '/foo/');
+ $this->cache->registerMounts($user1, [$mount1]);
+
+ $this->clearCache();
+
+ $cachedMounts = $this->cache->getMountsForUser($user1);
+ $this->assertCount(1, $cachedMounts);
+ $this->assertEquals('', $cachedMounts[0]->getMountProvider());
+
+ $mount1 = new MountPoint($storage1, '/foo/', null, null, null, null, 'dummy');
+ $this->cache->registerMounts($user1, [$mount1], ['dummy']);
+
+ $this->clearCache();
+
+ $cachedMounts = $this->cache->getMountsForUser($user1);
+ $this->assertCount(1, $cachedMounts);
+ $this->assertEquals('dummy', $cachedMounts[0]->getMountProvider());
+ }
}