]> source.dussan.org Git - nextcloud-server.git/commitdiff
fix(autoloader): no apcu no side effects 40350/head
authorArthur Schiwon <blizzz@arthur-schiwon.de>
Fri, 8 Sep 2023 14:40:48 +0000 (16:40 +0200)
committerbackportbot-nextcloud[bot] <backportbot-nextcloud[bot]@users.noreply.github.com>
Fri, 8 Sep 2023 18:30:40 +0000 (18:30 +0000)
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 <blizzz@arthur-schiwon.de>
lib/base.php
lib/private/legacy/OC_Util.php

index d94671327f281352a692e7e1c81e228c82001695..5683ad9e6bf94beaa78eb5b528b1ad0a3613051c 100644 (file)
@@ -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();
index a04d154ef8bb85b496c6163b6b67431558d56399..35fbeedd401803eb90745181a0ca9b1218da646d 100644 (file)
@@ -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 */