From 917cb66a5b8871c47a4c043cb326aea21b9f1407 Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Wed, 18 Mar 2015 11:47:16 +0100 Subject: [PATCH] Use ArrayCache if ownCloud is not installed If ownCloud has not been installed yet the prefix might otherwise change at this point quite some time and thus the cache runs havoc. This made installing ownCloud impossible on systems where APCu or so was available. However, I was not able to reproduce the same problem for application upgrades so this patch seems to work fine for this situation as well. Fixes itself. --- lib/private/server.php | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/lib/private/server.php b/lib/private/server.php index c55817bb6b..4264c70905 100644 --- a/lib/private/server.php +++ b/lib/private/server.php @@ -12,6 +12,7 @@ use OC\Diagnostics\NullQueryLogger; use OC\Diagnostics\EventLogger; use OC\Diagnostics\QueryLogger; use OC\Mail\Mailer; +use OC\Memcache\ArrayCache; use OC\Security\CertificateManager; use OC\Files\Node\Root; use OC\Files\View; @@ -159,17 +160,25 @@ class Server extends SimpleContainer implements IServerContainer { $this->registerService('UserCache', function ($c) { return new UserCache(); }); - $this->registerService('MemCacheFactory', function ($c) { + $this->registerService('MemCacheFactory', function (Server $c) { $config = $c->getConfig(); - $v = \OC_App::getAppVersions(); - $v['core'] = implode('.', \OC_Util::getVersion()); - $version = implode(',', $v); - $instanceId = \OC_Util::getInstanceId(); - $path = \OC::$SERVERROOT; - $prefix = md5($instanceId.'-'.$version.'-'.$path); - return new \OC\Memcache\Factory($prefix, - $config->getSystemValue('memcache.local', null), - $config->getSystemValue('memcache.distributed', null) + + if($config->getSystemValue('installed', false)) { + $v = \OC_App::getAppVersions(); + $v['core'] = implode('.', \OC_Util::getVersion()); + $version = implode(',', $v); + $instanceId = \OC_Util::getInstanceId(); + $path = \OC::$SERVERROOT; + $prefix = md5($instanceId.'-'.$version.'-'.$path); + return new \OC\Memcache\Factory($prefix, + $config->getSystemValue('memcache.local', null), + $config->getSystemValue('memcache.distributed', null) + ); + } + + return new \OC\Memcache\Factory('', + new ArrayCache(), + new ArrayCache() ); }); $this->registerService('ActivityManager', function ($c) {