summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-11-18 14:20:57 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2015-11-18 14:20:57 +0100
commit8d74e28af67ac12a3b6655eb4ff66c2a4d14e31a (patch)
tree0cffa983ad2244fbb5e36c1ac26bc9fb47a774b6 /lib
parent6efa72867a300dd8399ad2d47de4f5189ded961f (diff)
parentc9b671a12fd0a875d16712408aa35abaf00a2d37 (diff)
downloadnextcloud-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.php38
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");
+ }
}