Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 <[email protected]>
  • Loading branch information
blizzz committed Sep 8, 2023
commit 603a659a37cdbb63627766362736127978a92ade
7 changes: 2 additions & 5 deletions lib/base.php
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,6 @@ class OC {

public static string $configDir;

public static int $VERSION_MTIME = 0;

/**
* requested app
*/
Expand Down Expand Up @@ -610,10 +608,9 @@ public static function init(): void {

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();
Expand Down
3 changes: 2 additions & 1 deletion lib/private/legacy/OC_Util.php
Original file line number Diff line number Diff line change
Expand Up @@ -325,9 +325,10 @@ private static function loadVersion() {
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 */
Expand Down