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
path: root/lib
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2022-03-24 17:47:50 +0300
committerRobin Appelman <robin@icewind.nl>2022-03-24 19:36:53 +0300
commitb7a7425fbd6eb9dc95b364ca41b49be9269b13dc (patch)
treedb5c334d35b646f1ab15a6e552913ddf9d24b825 /lib
parent63ad99ba4ad6e4365bbaa0bd500cd870bd853201 (diff)
make mount cache duration configurable
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib')
-rw-r--r--lib/private/Files/SetupManager.php21
-rw-r--r--lib/private/Files/SetupManagerFactory.php9
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;