diff options
author | Robin McCorkell <rmccorkell@owncloud.com> | 2015-09-05 20:02:49 +0100 |
---|---|---|
committer | Robin McCorkell <rmccorkell@owncloud.com> | 2015-09-05 20:02:49 +0100 |
commit | b64e3f8db609b1f65ec23f467da7488abf92c05a (patch) | |
tree | 82b086de95f9ee46e6b003c425ddf9b995e4d97b /lib | |
parent | f3b8634058db07555b31a8fde8e02d4eb6201dae (diff) | |
download | nextcloud-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.php | 5 |
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) { |