Browse Source

Merge pull request #17675 from jorisvaesen/4.x

Update MemcachedEngine to allow empty prefix
othercorey 1 year ago
parent
commit
cba2b3ea6c

+ 1 - 1
src/Cache/Engine/MemcachedEngine.php

@@ -437,7 +437,7 @@ class MemcachedEngine extends CacheEngine
         }
 
         foreach ($keys as $key) {
-            if (strpos($key, $this->_config['prefix']) === 0) {
+            if ($this->_config['prefix'] === '' || strpos($key, $this->_config['prefix']) === 0) {
                 $this->_Memcached->delete($key);
             }
         }

+ 20 - 0
tests/TestCase/Cache/Engine/MemcachedEngineTest.php

@@ -819,6 +819,26 @@ class MemcachedEngineTest extends TestCase
     }
 
     /**
+     * test clearing memcached with empty prefix.
+     */
+    public function testClearWithEmptyPrefix(): void
+    {
+        Cache::setConfig('memcached2', [
+            'engine' => 'Memcached',
+            'prefix' => '',
+            'duration' => 3600,
+            'servers' => ['127.0.0.1:' . $this->port],
+        ]);
+
+        Cache::write('some_value', 'cache1', 'memcached2');
+        sleep(1);
+        $this->assertTrue(Cache::clear('memcached2'));
+        $this->assertNull(Cache::read('some_value', 'memcached2'));
+
+        Cache::clear('memcached2');
+    }
+
+    /**
      * test that a 0 duration can successfully write.
      */
     public function testZeroDuration(): void