From 8aeab150eb97474e8ba6f9f5c71903a1f5f024bc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=A1bor=20Hojtsy?= <gabor@hojtsy.hu>
Date: Tue, 29 Jan 2008 11:36:06 +0000
Subject: [PATCH] #215252 by bdragon: reset the cache flush variable before the
 cache is flushed, so busy sites will not attempt multiple cache flushes at a
 time

---
 includes/cache.inc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/includes/cache.inc b/includes/cache.inc
index 521f36f99fef..9fe7602c010b 100644
--- a/includes/cache.inc
+++ b/includes/cache.inc
@@ -17,9 +17,10 @@ function cache_get($cid, $table = 'cache') {
   // Garbage collection necessary when enforcing a minimum cache lifetime
   $cache_flush = variable_get('cache_flush', 0);
   if ($cache_flush && ($cache_flush + variable_get('cache_lifetime', 0) <= time())) {
+    // Reset the variable immediately to prevent a meltdown in heavy load situations.
+    variable_set('cache_flush', 0);
     // Time to flush old cache data
     db_query("DELETE FROM {". $table ."} WHERE expire != %d AND expire <= %d", CACHE_PERMANENT, $cache_flush);
-    variable_set('cache_flush', 0);
   }
 
   $cache = db_fetch_object(db_query("SELECT data, created, headers, expire, serialized FROM {". $table ."} WHERE cid = '%s'", $cid));
-- 
GitLab