diff options
author | Robin Appelman <robin@icewind.nl> | 2022-03-24 15:47:50 +0100 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2022-03-24 17:36:53 +0100 |
commit | b7a7425fbd6eb9dc95b364ca41b49be9269b13dc (patch) | |
tree | db5c334d35b646f1ab15a6e552913ddf9d24b825 /lib | |
parent | 63ad99ba4ad6e4365bbaa0bd500cd870bd853201 (diff) | |
download | nextcloud-server-b7a7425fbd6eb9dc95b364ca41b49be9269b13dc.tar.gz nextcloud-server-b7a7425fbd6eb9dc95b364ca41b49be9269b13dc.zip |
make mount cache duration configurable
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/Files/SetupManager.php | 21 | ||||
-rw-r--r-- | lib/private/Files/SetupManagerFactory.php | 9 |
2 files changed, 23 insertions, 7 deletions
diff --git a/lib/private/Files/SetupManager.php b/lib/private/Files/SetupManager.php index 4ef2506cf7b..cb39ec90245 100644 --- a/lib/private/Files/SetupManager.php +++ b/lib/private/Files/SetupManager.php @@ -52,6 +52,7 @@ use OCP\Group\Events\UserAddedEvent; use OCP\Group\Events\UserRemovedEvent; use OCP\ICache; use OCP\ICacheFactory; +use OCP\IConfig; use OCP\IUser; use OCP\IUserManager; use OCP\IUserSession; @@ -77,6 +78,7 @@ class SetupManager { private IUserSession $userSession; private ICache $cache; private LoggerInterface $logger; + private IConfig $config; private bool $listeningForProviders; public function __construct( @@ -89,7 +91,8 @@ class SetupManager { ILockdownManager $lockdownManager, IUserSession $userSession, ICacheFactory $cacheFactory, - LoggerInterface $logger + LoggerInterface $logger, + IConfig $config ) { $this->eventLogger = $eventLogger; $this->mountProviderCollection = $mountProviderCollection; @@ -102,6 +105,7 @@ class SetupManager { $this->userSession = $userSession; $this->cache = $cacheFactory->createDistributed('setupmanager::'); $this->listeningForProviders = false; + $this->config = $config; $this->setupListeners(); } @@ -204,7 +208,7 @@ class SetupManager { return !in_array(get_class($provider), $this->setupUserMountProviders[$user->getUID()]); }); }); - $this->userFullySetup($user); + $this->afterUserFullySetup($user); } /** @@ -249,7 +253,10 @@ class SetupManager { $this->listenForNewMountProviders(); } - private function userFullySetup(IUser $user) { + /** + * Final housekeeping after a user has been fully setup + */ + private function afterUserFullySetup(IUser $user): void { $userRoot = '/' . $user->getUID() . '/'; $mounts = $this->mountManager->getAll(); $mounts = array_filter($mounts, function (IMountPoint $mount) use ($userRoot) { @@ -348,7 +355,11 @@ class SetupManager { $cachedSetup = $this->cache->get($user->getUID()); if (!$cachedSetup) { $this->setupForUser($user); - $this->cache->set($user->getUID(), true, 5 * 60); + + $cacheDuration = $this->config->getSystemValueInt('fs_mount_cache_duration', 5 * 60); + if ($cacheDuration > 0) { + $this->cache->set($user->getUID(), true, $cacheDuration); + } return; } @@ -379,7 +390,7 @@ class SetupManager { } if ($includeChildren) { - $subCachedMounts = $this->userMountCache->getMountsInForPath($user, $path); + $subCachedMounts = $this->userMountCache->getMountsInPath($user, $path); foreach ($subCachedMounts as $cachedMount) { if (!in_array($cachedMount->getMountProvider(), $setupProviders)) { $setupProviders[] = $cachedMount->getMountProvider(); diff --git a/lib/private/Files/SetupManagerFactory.php b/lib/private/Files/SetupManagerFactory.php index d361d42aad9..1d9efbd411f 100644 --- a/lib/private/Files/SetupManagerFactory.php +++ b/lib/private/Files/SetupManagerFactory.php @@ -29,6 +29,7 @@ use OCP\Files\Config\IMountProviderCollection; use OCP\Files\Config\IUserMountCache; use OCP\Files\Mount\IMountManager; use OCP\ICacheFactory; +use OCP\IConfig; use OCP\IUserManager; use OCP\IUserSession; use OCP\Lockdown\ILockdownManager; @@ -45,6 +46,7 @@ class SetupManagerFactory { private ?SetupManager $setupManager; private ICacheFactory $cacheFactory; private LoggerInterface $logger; + private IConfig $config; public function __construct( IEventLogger $eventLogger, @@ -55,7 +57,8 @@ class SetupManagerFactory { ILockdownManager $lockdownManager, IUserSession $userSession, ICacheFactory $cacheFactory, - LoggerInterface $logger + LoggerInterface $logger, + IConfig $config ) { $this->eventLogger = $eventLogger; $this->mountProviderCollection = $mountProviderCollection; @@ -66,6 +69,7 @@ class SetupManagerFactory { $this->userSession = $userSession; $this->cacheFactory = $cacheFactory; $this->logger = $logger; + $this->config = $config; $this->setupManager = null; } @@ -81,7 +85,8 @@ class SetupManagerFactory { $this->lockdownManager, $this->userSession, $this->cacheFactory, - $this->logger + $this->logger, + $this->config ); } return $this->setupManager; |