]> source.dussan.org Git - nextcloud-server.git/commitdiff
Memcache\Factory: Remove static, use globalPrefix.
authorAndreas Fischer <bantu@owncloud.com>
Tue, 29 Jul 2014 09:14:36 +0000 (11:14 +0200)
committerJörn Friedrich Dreyer <jfd@butonic.de>
Wed, 6 Aug 2014 19:40:38 +0000 (21:40 +0200)
lib/base.php
lib/private/memcache/factory.php

index 407f1a6b13d7382726a8158fe55a534fb6aae900..240ac6cb0344899016344658a970bd48679b4689 100644 (file)
@@ -475,9 +475,18 @@ class OC {
                self::handleAuthHeaders();
 
                self::initPaths();
-               if (OC_Config::getValue('instanceid', false)) {
+
+               // The class loader takes an optional low-latency cache, which MUST be
+               // namespaced. The instanceid is used for namespacing, but might be
+               // unavailable at this point. Futhermore, it might not be possible to
+               // generate an instanceid via \OC_Util::getInstanceId() because the
+               // config file may not be writable. As such, we only register a class
+               // loader cache if instanceid is available without trying to create one.
+               $instanceId = OC_Config::getValue('instanceid', null);
+               if ($instanceId) {
                        try {
-                               self::$loader->setMemoryCache(\OC\Memcache\Factory::createLowLatency('Autoloader'));
+                               $memcacheFactory = new \OC\Memcache\Factory($instanceId);
+                               self::$loader->setMemoryCache($memcacheFactory->createLowLatency('Autoloader'));
                        } catch (\Exception $ex) {
                        }
                }
index d60b157efe240a40a0c154813d9b2be80f06c08e..8e47a8899fcab9e3ac0409c36534abffd2f5d135 100644 (file)
@@ -59,7 +59,8 @@ class Factory implements ICacheFactory {
         * @param string $prefix
         * @return null|Cache
         */
-       public static function createLowLatency($prefix = '') {
+       public function createLowLatency($prefix = '') {
+               $prefix = $this->globalPrefix . '/' . $prefix;
                if (XCache::isAvailable()) {
                        return new XCache($prefix);
                } elseif (APCu::isAvailable()) {
@@ -76,7 +77,7 @@ class Factory implements ICacheFactory {
         *
         * @return bool
         */
-       public static function isAvailableLowLatency() {
+       public function isAvailableLowLatency() {
                return XCache::isAvailable() || APCu::isAvailable() || APC::isAvailable();
        }