From ebfd886f16d7df09758734450e3e7d53948606c7 Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Fri, 26 Aug 2011 10:14:57 +0100
Subject: [PATCH] - Patch #1259096 by Akaoni: cache Bin cache_path() is never
 cleaned up.

---
 includes/common.inc                 |  2 +-
 modules/simpletest/tests/cache.test | 21 +++++++++++++++++++++
 modules/system/system.module        |  2 +-
 3 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/includes/common.inc b/includes/common.inc
index 1e287f834b17..1ef681f121a9 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -7138,7 +7138,7 @@ function drupal_flush_all_caches() {
 
   // Don't clear cache_form - in-progress form submissions may break.
   // Ordered so clearing the page cache will always be the last action.
-  $core = array('cache', 'cache_filter', 'cache_bootstrap', 'cache_page');
+  $core = array('cache', 'cache_path', 'cache_filter', 'cache_bootstrap', 'cache_page');
   $cache_tables = array_merge(module_invoke_all('flush_caches'), $core);
   foreach ($cache_tables as $table) {
     cache_clear_all('*', $table, TRUE);
diff --git a/modules/simpletest/tests/cache.test b/modules/simpletest/tests/cache.test
index 43d1fa122c73..954f575961dc 100644
--- a/modules/simpletest/tests/cache.test
+++ b/modules/simpletest/tests/cache.test
@@ -310,6 +310,27 @@ class CacheClearCase extends CacheTestCase {
                        || $this->checkCacheExists('test_cid_clear3', $this->default_value),
                        t('All cache entries removed when the array exceeded the cache clear threshold.'));
   }
+
+  /**
+   * Test drupal_flush_all_caches().
+   */
+  function testFlushAllCaches() {
+    // Create cache entries for each flushed cache bin.
+    $bins = array('cache', 'cache_filter', 'cache_page', 'cache_boostrap', 'cache_path');
+    $bins = array_merge(module_invoke_all('flush_caches'), $bins);
+    foreach ($bins as $id => $bin) {
+      $id = 'test_cid_clear' . $id;
+      cache_set($id, $this->default_value, $bin);
+    }
+
+    // Remove all caches then make sure that they are cleared.
+    drupal_flush_all_caches();
+
+    foreach ($bins as $id => $bin) {
+      $id = 'test_cid_clear' . $id;
+      $this->assertFalse($this->checkCacheExists($id, $this->default_value, $bin), t('All cache entries removed from @bin.', array('@bin' => $bin)));
+    }
+  }
 }
 
 /**
diff --git a/modules/system/system.module b/modules/system/system.module
index 946ef0c41076..3737af1bc0f8 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -3004,7 +3004,7 @@ function system_cron() {
     }
   }
 
-  $core = array('cache', 'cache_filter', 'cache_page', 'cache_form', 'cache_menu');
+  $core = array('cache', 'cache_path', 'cache_filter', 'cache_page', 'cache_form', 'cache_menu');
   $cache_tables = array_merge(module_invoke_all('flush_caches'), $core);
   foreach ($cache_tables as $table) {
     cache_clear_all(NULL, $table);
-- 
GitLab