Always call flush() as getAllKeys() is broken

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
Côme Chilliet 2022-01-20 11:20:18 +01:00 committed by backportbot[bot]
parent 92fcdc3509
commit 3f3908b72a

View file

@ -133,27 +133,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;
}