(dev/core#635) Only write extra prevnext cache record if used
authorTim Otten <totten@civicrm.org>
Fri, 4 Jan 2019 03:31:04 +0000 (19:31 -0800)
committerTim Otten <totten@civicrm.org>
Fri, 4 Jan 2019 03:31:04 +0000 (19:31 -0800)
This line of code creates an extra record to facilitate clearing the
SQL-based prevnext cache.  However, with Redis-based prevnext cache, it's
not needed because the Redis implementation simply uses a TTL -- and (on
Redis deployments) this lines to gratuitous SQL writes.

CRM/Campaign/Selector/Search.php
CRM/Contact/Selector.php

index 94a5cb5731267ee54df265817afea77465c9ac59..d7ed429ba5184c57ac38646687ebf7e2870b3431 100644 (file)
@@ -294,8 +294,10 @@ FROM {$from}
         return;
       }
 
-      // also record an entry in the cache key table, so we can delete it periodically
-      CRM_Core_BAO_Cache::setItem($cacheKey, 'CiviCRM Search PrevNextCache', $cacheKey);
+      if (Civi::service('prevnext') instanceof CRM_Core_PrevNextCache_Sql) {
+        // SQL-backed prevnext cache uses an extra record for pruning the cache.
+        CRM_Core_BAO_Cache::setItem($cacheKey, 'CiviCRM Search PrevNextCache', $cacheKey);
+      }
     }
   }
 
index 9418ff22824a8568229474c6833ecd6934b3d786..8be026f626def272b47d35bb80b3756eea3182d6 100644 (file)
@@ -1062,8 +1062,10 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se
       }
     }
 
-    // also record an entry in the cache key table, so we can delete it periodically
-    CRM_Core_BAO_Cache::setItem($cacheKey, 'CiviCRM Search PrevNextCache', $cacheKey);
+    if (Civi::service('prevnext') instanceof CRM_Core_PrevNextCache_Sql) {
+      // SQL-backed prevnext cache uses an extra record for pruning the cache.
+      CRM_Core_BAO_Cache::setItem($cacheKey, 'CiviCRM Search PrevNextCache', $cacheKey);
+    }
   }
 
   /**