diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-11-18 14:20:57 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-11-18 14:20:57 +0100 |
commit | 8d74e28af67ac12a3b6655eb4ff66c2a4d14e31a (patch) | |
tree | 0cffa983ad2244fbb5e36c1ac26bc9fb47a774b6 /lib | |
parent | 6efa72867a300dd8399ad2d47de4f5189ded961f (diff) | |
parent | c9b671a12fd0a875d16712408aa35abaf00a2d37 (diff) | |
download | nextcloud-server-8d74e28af67ac12a3b6655eb4ff66c2a4d14e31a.tar.gz nextcloud-server-8d74e28af67ac12a3b6655eb4ff66c2a4d14e31a.zip |
Merge pull request #20438 from owncloud/memcache-key-length-fix
Handle errors on memcached level
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/memcache/memcached.php | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/lib/private/memcache/memcached.php b/lib/private/memcache/memcached.php index ce7c6fa9577..22b54f7bc95 100644 --- a/lib/private/memcache/memcached.php +++ b/lib/private/memcache/memcached.php @@ -41,9 +41,9 @@ class Memcached extends Cache implements IMemcache { parent::__construct($prefix); if (is_null(self::$cache)) { self::$cache = new \Memcached(); - $servers = \OC_Config::getValue('memcached_servers'); + $servers = \OC::$server->getSystemConfig()->getValue('memcached_servers'); if (!$servers) { - $server = \OC_Config::getValue('memcached_server'); + $server = \OC::$server->getSystemConfig()->getValue('memcached_server'); if ($server) { $servers = array($server); } else { @@ -72,10 +72,12 @@ class Memcached extends Cache implements IMemcache { public function set($key, $value, $ttl = 0) { if ($ttl > 0) { - return self::$cache->set($this->getNamespace() . $key, $value, $ttl); + $result = self::$cache->set($this->getNamespace() . $key, $value, $ttl); } else { - return self::$cache->set($this->getNamespace() . $key, $value); + $result = self::$cache->set($this->getNamespace() . $key, $value); } + $this->verifyReturnCode(); + return $result; } public function hasKey($key) { @@ -84,7 +86,9 @@ class Memcached extends Cache implements IMemcache { } public function remove($key) { - return self::$cache->delete($this->getNamespace() . $key); + $result= self::$cache->delete($this->getNamespace() . $key); + $this->verifyReturnCode(); + return $result; } public function clear($prefix = '') { @@ -121,7 +125,9 @@ class Memcached extends Cache implements IMemcache { * @return bool */ public function add($key, $value, $ttl = 0) { - return self::$cache->add($this->getPrefix() . $key, $value, $ttl); + $result = self::$cache->add($this->getPrefix() . $key, $value, $ttl); + $this->verifyReturnCode(); + return $result; } /** @@ -133,7 +139,9 @@ class Memcached extends Cache implements IMemcache { */ public function inc($key, $step = 1) { $this->add($key, 0); - return self::$cache->increment($this->getPrefix() . $key, $step); + $result = self::$cache->increment($this->getPrefix() . $key, $step); + $this->verifyReturnCode(); + return $result; } /** @@ -144,10 +152,24 @@ class Memcached extends Cache implements IMemcache { * @return int | bool */ public function dec($key, $step = 1) { - return self::$cache->decrement($this->getPrefix() . $key, $step); + $result = self::$cache->decrement($this->getPrefix() . $key, $step); + $this->verifyReturnCode(); + return $result; } static public function isAvailable() { return extension_loaded('memcached'); } + + /** + * @throws \Exception + */ + private function verifyReturnCode() { + $code = self::$cache->getResultCode(); + if ($code === \Memcached::RES_SUCCESS) { + return; + } + $message = self::$cache->getResultMessage(); + throw new \Exception("Error $code interacting with memcached : $message"); + } } |