summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRobin McCorkell <rmccorkell@owncloud.com>2015-09-05 20:02:49 +0100
committerRobin McCorkell <rmccorkell@owncloud.com>2015-09-05 20:02:49 +0100
commitb64e3f8db609b1f65ec23f467da7488abf92c05a (patch)
tree82b086de95f9ee46e6b003c425ddf9b995e4d97b /lib
parentf3b8634058db07555b31a8fde8e02d4eb6201dae (diff)
downloadnextcloud-server-b64e3f8db609b1f65ec23f467da7488abf92c05a.tar.gz
nextcloud-server-b64e3f8db609b1f65ec23f467da7488abf92c05a.zip
Fallback to complete Memcached flush if getAllKeys fails
Newer Memcached's do not support the underlying protocol commands that getAllKeys() is implemented with. We should fallback to clearing everything in that case, as causing (temporary) performance problems for other applications on the server is better than having stale cached data.
Diffstat (limited to 'lib')
-rw-r--r--lib/private/memcache/memcached.php5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/private/memcache/memcached.php b/lib/private/memcache/memcached.php
index 1503851fd73..e99303ecc15 100644
--- a/lib/private/memcache/memcached.php
+++ b/lib/private/memcache/memcached.php
@@ -89,6 +89,11 @@ class Memcached extends Cache implements IMemcache {
public function clear($prefix = '') {
$prefix = $this->getNamespace() . $prefix;
$allKeys = self::$cache->getAllKeys();
+ if ($allKeys === false) {
+ // newer Memcached doesn't like getAllKeys(), flush everything
+ self::$cache->flush();
+ return true;
+ }
$keys = array();
$prefixLength = strlen($prefix);
foreach ($allKeys as $key) {