You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Davide Giannella (JIRA)" <ji...@apache.org> on 2017/05/30 08:39:17 UTC

[jira] [Closed] (OAK-6072) Move check for cyclic membership to GroupImpl

     [ https://issues.apache.org/jira/browse/OAK-6072?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Davide Giannella closed OAK-6072.
---------------------------------

Bulk close for 1.7.0

> Move check for cyclic membership to GroupImpl
> ---------------------------------------------
>
>                 Key: OAK-6072
>                 URL: https://issues.apache.org/jira/browse/OAK-6072
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: core
>            Reporter: angela
>            Assignee: angela
>             Fix For: 1.7.0, 1.8
>
>         Attachments: OAK-6072.patch, OAK-6072-tests.patch
>
>
> while investigating potential improvements for adding/removing group members, I noticed that the way we check for cyclic group membership in the {{UserValidator}} may limit our options wrt arranging member references in the tree defined by the {{rep:Group}} node.
> With the current diff mechanism the only option for spotting cyclic membership in the {{UserValidator}} is by looking at modifications/addition of {{rep:members}} properties. However, if adding a new member reference would not just be appended to an existing or new property but instead would otherwise change the structure of these properties (e.g. by inserting and splitting), we may end up re-checking member references that have already been verified; just because they look like being added in the diff.
> Consequently, we may consider moving the check to the {{GroupImpl}} and limit it to those cases where the member is either passed to the {{addMember}} call or is being resolved as it may happen during {{addMembers}}.
> h6. Benefit:
> - more options to improve content structure of member references to improve write performance
> - only a single resolution of memberId/memberReference to the member itself (in {{GroupImpl}})
> - no additional resolution of member-reference(s) during commit validation
> - improved performance for {{ImportBehavior.BEST_EFFORT}} that doesn't require the new member to exist.
> h6. Drawback 
> - check for cyclic membership only in the user management implementation, not enforced upon commit
> - {{ImportBehavior.BEST_EFFORT}} will not spot cyclic membership
> [~alex.parvulescu], what do you think?



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)