Removed cache rebuild from the GroupContact
authorLisa Marie Maginnis <lisam@fsf.org>
Mon, 21 Sep 2015 17:18:43 +0000 (13:18 -0400)
committerMichael McMahon <michael@fsf.org>
Wed, 4 May 2022 20:32:58 +0000 (16:32 -0400)
CRM/Contact/BAO/Contact.php
CRM/Contact/BAO/GroupContact.php

index 9f7d2127290f53e1fabe899bd71d5376a68b3e72..9c45238120e98130cca376eadf2cda412d979ea1 100644 (file)
@@ -387,7 +387,14 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact implements Civi\Co
       'name'
     );
 
-    CRM_Contact_BAO_Contact_Utils::clearContactCaches();
+    //if (!$config->doNotResetCache) {
+      // Note: doNotResetCache flag is currently set by import contact process and merging,
+      // since resetting and
+      // rebuilding cache could be expensive (for many contacts). We might come out with better
+      // approach in future.
+      // HACK: Dave did this due to many donations and other requests failing due to acl_cache table locks (similar to what Dave disabled)
+      //CRM_Contact_BAO_Contact_Utils::clearContactCaches();
+    //}
 
     if ($invokeHooks) {
       if ($isEdit) {
index 705bd964563ece5adef1d2cbb60d7f06efc6bf64..7586b6d0f2d98709a2a662c829cf8cb77c551a64 100644 (file)
@@ -230,7 +230,23 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact {
       }
     }
 
-    CRM_Contact_BAO_Contact_Utils::clearContactCaches();
+    // also reset the acl cache
+    $config = CRM_Core_Config::singleton();
+    if (!$config->doNotResetCache) {
+      // HACK: Dave commented this out on 12/09/2014 due to lock wait timeouts on the acl cache that caused donations to fail.
+      //CRM_ACL_BAO_Cache::resetCache();
+    }
+
+    // reset the group contact cache for all group(s)
+    // if this group is being used as a smart group
+    // @todo consider what to do here - it feels like we should either
+    // 1) just invalidate the specific group's cache(& perhaps any parents) & let cron do it's thing or
+    // possibly clear this specific groups cache, or just call opportunisticCacheFlush() - which would have the
+    // same effect as the remove call. The reservation about that is that it is no more aggressive for the group that
+    // we know is altered than for all the others, or perhaps, more the point with it's parents & groups that use it in
+    // their criteria.
+    // HACK: Dave had to disable this, too! (similar to what Dave disabled)
+    //CRM_Contact_BAO_Contact_Utils::clearContactCaches();
 
     CRM_Utils_Hook::post($op, 'GroupContact', $groupId, $contactIds);