aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2025-06-25 18:15:02 +0200
committerChristoph Wurst <christoph@winzerhof-wurst.at>2025-06-25 18:15:02 +0200
commit16727fdd78b0fc0e8f5786de257e5ef230b0dfcb (patch)
treea163876f61babe28fbaae79ca8e936777165e3ed
parent8ee06edffc8469c3de6597b4e8d379657c533264 (diff)
downloadnextcloud-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.php9
-rw-r--r--tests/lib/UtilCheckServerTest.php3
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 {