mirror of
https://github.com/nextcloud/server.git
synced 2026-04-22 14:50:17 -04:00
Merge pull request #33540 from nextcloud/mount-provider-migration
fix updating cached mounts that didn't have their mount provider set previously
This commit is contained in:
commit
2360d880fa
2 changed files with 31 additions and 1 deletions
|
|
@ -90,7 +90,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);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -507,4 +507,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());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue