diff options
author | Christoph Wurst <christoph@winzerhof-wurst.at> | 2025-06-25 18:15:02 +0200 |
---|---|---|
committer | Christoph Wurst <christoph@winzerhof-wurst.at> | 2025-06-25 18:15:02 +0200 |
commit | 16727fdd78b0fc0e8f5786de257e5ef230b0dfcb (patch) | |
tree | a163876f61babe28fbaae79ca8e936777165e3ed | |
parent | 8ee06edffc8469c3de6597b4e8d379657c533264 (diff) | |
download | nextcloud-server-perf/cache-server-checks-local-cache.tar.gz nextcloud-server-perf/cache-server-checks-local-cache.zip |
perf: cache server checks in local cache, not sessionperf/cache-server-checks-local-cache
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
-rw-r--r-- | lib/private/legacy/OC_Util.php | 9 | ||||
-rw-r--r-- | tests/lib/UtilCheckServerTest.php | 3 |
2 files changed, 7 insertions, 5 deletions
diff --git a/lib/private/legacy/OC_Util.php b/lib/private/legacy/OC_Util.php index 87447af8adc..2d5dc8e25c8 100644 --- a/lib/private/legacy/OC_Util.php +++ b/lib/private/legacy/OC_Util.php @@ -304,6 +304,7 @@ class OC_Util { */ public static function checkServer(\OC\SystemConfig $config) { $l = \OC::$server->getL10N('lib'); + $localCache = \OCP\Server::get(\OCP\ICacheFactory::class)->createLocal('system'); $errors = []; $CONFIG_DATADIRECTORY = $config->getValue('datadirectory', OC::$SERVERROOT . '/data'); @@ -312,8 +313,8 @@ class OC_Util { $errors = self::checkDataDirectoryValidity($CONFIG_DATADIRECTORY); } - // Assume that if checkServer() succeeded before in this session, then all is fine. - if (\OC::$server->getSession()->exists('checkServer_succeeded') && \OC::$server->getSession()->get('checkServer_succeeded')) { + // Skip re-evaluation if everything is fine + if ($localCache->get('checkServer_succeeded') === true) { return $errors; } @@ -511,8 +512,8 @@ class OC_Util { } } - // Cache the result of this function - \OC::$server->getSession()->set('checkServer_succeeded', count($errors) == 0); + // Cache the result of this function for an hour + $localCache->set('checkServer_succeeded', $errors === [], 3600); return $errors; } diff --git a/tests/lib/UtilCheckServerTest.php b/tests/lib/UtilCheckServerTest.php index accac40112a..f5b3a8800c7 100644 --- a/tests/lib/UtilCheckServerTest.php +++ b/tests/lib/UtilCheckServerTest.php @@ -7,6 +7,7 @@ namespace Test; +use OCP\ICacheFactory; use OCP\ISession; use OCP\ITempManager; use OCP\Server; @@ -45,7 +46,7 @@ class UtilCheckServerTest extends \Test\TestCase { $this->datadir = Server::get(ITempManager::class)->getTemporaryFolder(); file_put_contents($this->datadir . '/.ncdata', '# Nextcloud data directory'); - Server::get(ISession::class)->set('checkServer_succeeded', false); + Server::get(ICacheFactory::class)->createLocal('system')->set('checkServer_succeeded', false, 10); } protected function tearDown(): void { |