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>
Thu, 21 Nov 2019 20:45:28 +0000 (15:45 -0500)
CRM/Contact/BAO/Contact.php
CRM/Contact/BAO/GroupContact.php

index 7ed54030860afec79421e3a1c0dfaa604744224e..6724204e341a62ccdabe2569e028c0f9b631e388 100644 (file)
@@ -429,7 +429,14 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
       '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 7a8d685f76696028be62dc73100fe2b81c21986f..c9780672102606ca58970106d30334c0f5af122f 100644 (file)
@@ -253,7 +253,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);