From f5d7a44dcab25e12b06d15fe8dd638ff05497006 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 15 Jan 2026 18:12:44 +0100 Subject: [PATCH] fix: only refresh mounts once per user Signed-off-by: Robin Appelman --- lib/private/Files/SetupManager.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/private/Files/SetupManager.php b/lib/private/Files/SetupManager.php index c8945de7cae..ff204131fb0 100644 --- a/lib/private/Files/SetupManager.php +++ b/lib/private/Files/SetupManager.php @@ -72,6 +72,8 @@ class SetupManager implements ISetupManager { private array $setupUsers = []; // List of users for which all mounts are setup private array $setupUsersComplete = []; + // List of users for which we've already refreshed the non-authoritative mounts + private array $usersMountsUpdated = []; /** * An array of provider classes that have been set up, indexed by UserUID. * @@ -237,6 +239,10 @@ class SetupManager implements ISetupManager { * Update the cached mounts for all non-authoritative mount providers for a user. */ private function updateNonAuthoritativeProviders(IUser $user): void { + if (isset($this->usersMountsUpdated[$user->getUID()])) { + return; + } + // prevent recursion loop from when getting mounts from providers ends up setting up the filesystem static $updatingProviders = false; if ($updatingProviders) { @@ -257,6 +263,7 @@ class SetupManager implements ISetupManager { $mount = $this->mountProviderCollection->getUserMountsForProviderClasses($user, $providerNames); $this->userMountCache->registerMounts($user, $mount, $providerNames); + $this->usersMountsUpdated[$user->getUID()] = true; $updatingProviders = false; } @@ -726,6 +733,7 @@ class SetupManager implements ISetupManager { $this->setupUserMountProviders = []; $this->setupMountProviderPaths = []; $this->fullSetupRequired = []; + $this->usersMountsUpdated = []; $this->rootSetup = false; $this->mountManager->clear(); $this->userMountCache->clear();