[Rt-devel] Why are Groups cachedmembers of themselves?

Joby Walker joby at u.washington.edu
Fri Oct 20 18:16:52 EDT 2006


The comments from Group_Overlay::Create say:

# Now we make the group a member of itself as a cached group member
# this needs to exist so that group ACL checks don't fall over.
# you're checking CachedGroupMembers to see if the principal in question
# is a member of the principal the rights have been granted too
# in the ordinary case, this would fail badly because it would recurse 
and add all the members of this group as
# cached members. thankfully, we're creating the group now...so it has 
no members.

Is this truly necessary for all groups?  This is leading to a huge 
inflation in the number of cachedgroupmembers records.  Just with a 
simple example of every ticket averaging 1 requestor, 1 owner, and 1 cc, 
this means that there will be 10 cachedgroupmembers records per ticket 
(one for all four roles, and 2 for each real member) -- where only 3 
should be necessary.  We're rapidly approaching 100,000 tickets so that 
is 700,000 unnecessary records.

So why is this necessary?  Is it for ACL checks on User Defined groups?

-- 

Joby Walker
C&C SSG, University of Washington


More information about the Rt-devel mailing list