From 3304b0371b93da981f20897ef374452da89b9ebf Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Fri, 8 Sep 2023 16:40:48 +0200 Subject: [PATCH] fix(autoloader): no apcu no side effects apcu lead to side effects especially with app management and (soft) inter-dependencies, and lead also to 500 server errors. While we could add management to clear apcu cache in many cases (may stil leave edge cases) the performance benefit is marginally as also class maps are already cached in opcache. Hence, the simple and effective way to go is to not use apcu for autoloading. Signed-off-by: Arthur Schiwon --- lib/base.php | 7 ++----- lib/private/legacy/OC_Util.php | 3 ++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/base.php b/lib/base.php index d94671327f2..5683ad9e6bf 100644 --- a/lib/base.php +++ b/lib/base.php @@ -114,8 +114,6 @@ class OC { public static string $configDir; - public static int $VERSION_MTIME = 0; - /** * requested app */ @@ -610,10 +608,9 @@ class OC { self::$CLI = (php_sapi_name() == 'cli'); - // Add default composer PSR-4 autoloader + // Add default composer PSR-4 autoloader, ensure apcu to be disabled self::$composerAutoloader = require_once OC::$SERVERROOT . '/lib/composer/autoload.php'; - OC::$VERSION_MTIME = filemtime(OC::$SERVERROOT . '/version.php'); - self::$composerAutoloader->setApcuPrefix('composer_autoload_' . md5(OC::$SERVERROOT . '_' . OC::$VERSION_MTIME)); + self::$composerAutoloader->setApcuPrefix(null); try { self::initPaths(); diff --git a/lib/private/legacy/OC_Util.php b/lib/private/legacy/OC_Util.php index a04d154ef8b..35fbeedd401 100644 --- a/lib/private/legacy/OC_Util.php +++ b/lib/private/legacy/OC_Util.php @@ -326,9 +326,10 @@ class OC_Util { return; } + $timestamp = filemtime(OC::$SERVERROOT . '/version.php'); require OC::$SERVERROOT . '/version.php'; /** @var int $timestamp */ - self::$versionCache['OC_Version_Timestamp'] = \OC::$VERSION_MTIME; + self::$versionCache['OC_Version_Timestamp'] = $timestamp; /** @var string $OC_Version */ self::$versionCache['OC_Version'] = $OC_Version; /** @var string $OC_VersionString */ -- 2.39.5