Always call flush() as getAllKeys() is broken

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
pull/30769/head
Côme Chilliet 4 years ago
parent a9b098eed5
commit 36d7c73e69
No known key found for this signature in database
GPG Key ID: A3E2F658B28C760A
  1. 23
      lib/private/Memcache/Memcached.php

@ -134,27 +134,8 @@ 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 = [];
$prefixLength = strlen($prefix);
foreach ($allKeys as $key) {
if (substr($key, 0, $prefixLength) === $prefix) {
$keys[] = $key;
}
}
if (method_exists(self::$cache, 'deleteMulti')) {
self::$cache->deleteMulti($keys);
} else {
foreach ($keys as $key) {
self::$cache->delete($key);
}
}
// Newer Memcached doesn't like getAllKeys(), flush everything
self::$cache->flush();
return true;
}

Loading…
Cancel
Save