Merge pull request #20438 from owncloud/memcache-key-length-fix
Handle errors on memcached level
This commit is contained in:
commit
8d74e28af6
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue