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:
authorJohn Molakvoæ <skjnldsv@users.noreply.github.com>2022-04-05 22:38:03 +0300
committerGitHub <noreply@github.com>2022-04-05 22:38:03 +0300
commitfde178b1be898a390ec86b08d320d650698990ac (patch)
tree520b0aec3c9d49e066650ac7a9c785214e992f48 /lib
parentfff26ad0069ddfa63b6882c5e14b7ed7b1c94f5a (diff)
parent9cb992e93c7c0fbf816323381f8ee082cf3f073f (diff)
Merge pull request #31849 from nextcloud/fix/cache-account
Diffstat (limited to 'lib')
-rw-r--r--lib/private/Accounts/AccountManager.php11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/private/Accounts/AccountManager.php b/lib/private/Accounts/AccountManager.php
index 127adc9ef38..5792ba1dc5d 100644
--- a/lib/private/Accounts/AccountManager.php
+++ b/lib/private/Accounts/AccountManager.php
@@ -41,6 +41,7 @@ use libphonenumber\PhoneNumber;
use libphonenumber\PhoneNumberFormat;
use libphonenumber\PhoneNumberUtil;
use OC\Profile\TProfileHelper;
+use OC\Cache\CappedMemoryCache;
use OCA\Settings\BackgroundJobs\VerifyUserData;
use OCP\Accounts\IAccount;
use OCP\Accounts\IAccountManager;
@@ -116,6 +117,7 @@ class AccountManager implements IAccountManager {
private $crypto;
/** @var IFactory */
private $l10nfactory;
+ private CappedMemoryCache $internalCache;
public function __construct(
IDBConnection $connection,
@@ -142,6 +144,7 @@ class AccountManager implements IAccountManager {
$this->crypto = $crypto;
// DIing IL10N results in a dependency loop
$this->l10nfactory = $factory;
+ $this->internalCache = new CappedMemoryCache();
}
/**
@@ -763,7 +766,12 @@ class AccountManager implements IAccountManager {
}
public function getAccount(IUser $user): IAccount {
- return $this->parseAccountData($user, $this->getUser($user));
+ if ($this->internalCache->hasKey($user->getUID())) {
+ return $this->internalCache->get($user->getUID());
+ }
+ $account = $this->parseAccountData($user, $this->getUser($user));
+ $this->internalCache->set($user->getUID(), $account);
+ return $account;
}
public function updateAccount(IAccount $account): void {
@@ -813,5 +821,6 @@ class AccountManager implements IAccountManager {
}
$this->updateUser($account->getUser(), $data, true);
+ $this->internalCache->set($account->getUser()->getUID(), $account);
}
}