[Ref] remove redundant call to clearGroupContactCache
authoreileen <emcnaughton@wikimedia.org>
Thu, 6 May 2021 06:57:08 +0000 (18:57 +1200)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Mon, 17 May 2021 19:48:12 +0000 (07:48 +1200)
This code does a clear on the cache and then calls the api which will eventually
call load(). Load ALSO clears the cache so this seems redundant.

However, there are a couple of places where add() is called from where it might
serve to force the rebuild due to changes to group make up. In general we have switched
to invalidating and letting the rebuild-on-demand do it's thing to allow
things like crons or lack of need for the group to reduce to browser demand.
So, I think that by switching to invalidating rather than rebuilding
we can remove this potentially locky line from GroupContactCache::add()

CRM/Contact/BAO/Group.php
CRM/Contact/BAO/GroupContactCache.php

index 81feb0f2e3cdd37912bb0a28450b8414f14db270..48e5802ab2e5a9e7d47ff3bed32c09535c6d0ace 100644 (file)
@@ -472,7 +472,7 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group {
       // update group contact cache for all parent groups
       $parentIds = CRM_Contact_BAO_GroupNesting::getParentGroupIds($group->id);
       foreach ($parentIds as $parentId) {
-        CRM_Contact_BAO_GroupContactCache::add($parentId);
+        CRM_Contact_BAO_GroupContactCache::invalidateGroupContactCache($parentId);
       }
     }
 
@@ -486,7 +486,7 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group {
     }
 
     self::flushCaches();
-    CRM_Contact_BAO_GroupContactCache::add($group->id);
+    CRM_Contact_BAO_GroupContactCache::invalidateGroupContactCache($group->id);
 
     if (!empty($params['id'])) {
       CRM_Utils_Hook::post('edit', 'Group', $group->id, $group);
index 54f7738e9afc5a5824dd157b42052e22773eff8b..91e011c98b1877f6e190c7f4da06c388efedfaec 100644 (file)
@@ -149,7 +149,6 @@ AND (
 
     foreach ($groupIDs as $groupID) {
       // first delete the current cache
-      self::clearGroupContactCache($groupID);
       $params = [['group', 'IN', [$groupID], 0, 0]];
       // the below call updates the cache table as a byproduct of the query
       CRM_Contact_BAO_Query::apiQuery($params, ['contact_id'], NULL, NULL, 0, 0, FALSE);