From 1bff7ccb5ce7a67f28f0fda0ef72179e32462fb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Tue, 5 Dec 2023 12:31:20 +0100 Subject: [PATCH] perf: Only query the db once for trusted servers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- apps/federation/lib/TrustedServers.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/federation/lib/TrustedServers.php b/apps/federation/lib/TrustedServers.php index c27529bd12cb6..b110be24aff12 100644 --- a/apps/federation/lib/TrustedServers.php +++ b/apps/federation/lib/TrustedServers.php @@ -31,6 +31,7 @@ use OCP\AppFramework\Http; use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; +use OCP\DB\Exception; use OCP\EventDispatcher\IEventDispatcher; use OCP\Federation\Events\TrustedServerRemovedEvent; use OCP\HintException; @@ -59,6 +60,9 @@ class TrustedServers { private IEventDispatcher $dispatcher; private ITimeFactory $timeFactory; + /** @var list|null */ + private ?array $trustedServersCache = null; + public function __construct( DbHandler $dbHandler, IClientService $httpClientService, @@ -122,14 +126,20 @@ public function removeServer(int $id): void { $server = $this->dbHandler->getServerById($id); $this->dbHandler->removeServer($id); $this->dispatcher->dispatchTyped(new TrustedServerRemovedEvent($server['url_hash'])); + } /** * Get all trusted servers - * @return list + * + * @return list + * @throws Exception */ public function getServers() { - return $this->dbHandler->getAllServer(); + if ($this->trustedServersCache === null) { + $this->trustedServersCache = $this->dbHandler->getAllServer(); + } + return $this->trustedServersCache; } /**