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
diff options
context:
space:
mode:
authorCarl Schwan <carl@carlschwan.eu>2022-04-21 17:31:19 +0300
committerCarl Schwan <carl@carlschwan.eu>2022-04-22 11:22:15 +0300
commit4333c215cbc444f13fd07542a143e75f82609ac4 (patch)
treed262262049b56f579a734cac5c64f746f8eb0e50 /apps/files_sharing/lib
parent3f55108227287f780623115662edfcfa28a5f745 (diff)
Cache display name
This should saves some query in the share backend when displaying the owner and it's not important if the display name is 10 minutes outdated as it is very rare that this gets changed. Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Diffstat (limited to 'apps/files_sharing/lib')
-rw-r--r--apps/files_sharing/lib/Cache.php40
-rw-r--r--apps/files_sharing/lib/SharedStorage.php3
2 files changed, 13 insertions, 30 deletions
diff --git a/apps/files_sharing/lib/Cache.php b/apps/files_sharing/lib/Cache.php
index c49bebaef62..7290c33da94 100644
--- a/apps/files_sharing/lib/Cache.php
+++ b/apps/files_sharing/lib/Cache.php
@@ -33,6 +33,7 @@ use OC\Files\Cache\Wrapper\CacheJail;
use OC\Files\Search\SearchBinaryOperator;
use OC\Files\Search\SearchComparison;
use OC\Files\Storage\Wrapper\Jail;
+use OC\User\DisplayNameCache;
use OCP\Files\Cache\ICacheEntry;
use OCP\Files\Search\ISearchBinaryOperator;
use OCP\Files\Search\ISearchComparison;
@@ -47,27 +48,22 @@ use OCP\IUserManager;
* don't use this class directly if you need to get metadata, use \OC\Files\Filesystem::getFileInfo instead
*/
class Cache extends CacheJail {
- /** @var \OCA\Files_Sharing\SharedStorage */
+ /** @var SharedStorage */
private $storage;
- /** @var ICacheEntry */
- private $sourceRootInfo;
- /** @var IUserManager */
- private $userManager;
-
- private $rootUnchanged = true;
-
- private $ownerDisplayName;
-
- private $numericId;
+ private ICacheEntry $sourceRootInfo;
+ private bool $rootUnchanged = true;
+ private ?string $ownerDisplayName = null;
+ private int $numericId;
+ private DisplayNameCache $displayNameCache;
/**
- * @param \OCA\Files_Sharing\SharedStorage $storage
+ * @param SharedStorage $storage
*/
- public function __construct($storage, ICacheEntry $sourceRootInfo, IUserManager $userManager) {
+ public function __construct($storage, ICacheEntry $sourceRootInfo, DisplayNameCache $displayNameCache) {
$this->storage = $storage;
$this->sourceRootInfo = $sourceRootInfo;
- $this->userManager = $userManager;
$this->numericId = $sourceRootInfo->getStorageId();
+ $this->displayNameCache = $displayNameCache;
parent::__construct(
null,
@@ -173,22 +169,8 @@ class Cache extends CacheJail {
private function getOwnerDisplayName() {
if (!$this->ownerDisplayName) {
- /** @var ICacheFactory $cacheFactory */
- $cacheFactory = \OC::$server->get(ICacheFactory::class);
- $memcache = $cacheFactory->createLocal('share_owner_name');
$uid = $this->storage->getOwner('');
- $cached = $memcache->get($uid);
- if ($cached) {
- $this->ownerDisplayName = $cached;
- } else {
- $user = $this->userManager->get($uid);
- if ($user) {
- $this->ownerDisplayName = $user->getDisplayName();
- } else {
- $this->ownerDisplayName = $uid;
- }
- $memcache->set($uid, $this->ownerDisplayName, 60 * 60);
- }
+ $this->ownerDisplayName = $this->displayNameCache->getDisplayName($uid);
}
return $this->ownerDisplayName;
}
diff --git a/apps/files_sharing/lib/SharedStorage.php b/apps/files_sharing/lib/SharedStorage.php
index 8d123e7b873..60a292c498d 100644
--- a/apps/files_sharing/lib/SharedStorage.php
+++ b/apps/files_sharing/lib/SharedStorage.php
@@ -38,6 +38,7 @@ use OC\Files\Cache\Watcher;
use OC\Files\ObjectStore\HomeObjectStoreStorage;
use OC\Files\Storage\Common;
use OC\Files\Storage\Home;
+use OC\User\DisplayNameCache;
use OCP\Files\Folder;
use OCP\Files\IHomeStorage;
use OCP\Files\Node;
@@ -416,7 +417,7 @@ class SharedStorage extends \OC\Files\Storage\Wrapper\Jail implements ISharedSto
$this->cache = new \OCA\Files_Sharing\Cache(
$storage,
$sourceRoot,
- \OC::$server->get(IUserManager::class)
+ \OC::$server->get(DisplayNameCache::class)
);
return $this->cache;
}