[ 
https://issues.apache.org/jira/browse/OAK-8234?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16816297#comment-16816297
 ] 

Alex Deparvu commented on OAK-8234:
-----------------------------------

Proposed patch [0].

In order to keep the change footprint to a minimum, I decided to turn the 
{{PermissionProviderImpl}} into a wrapper that would delegate calls to the 
admin allow-all version, or the existing version (copy of the current code, 
renamed as {{CompiledPermissionProviderImpl}}).

As an interesting aside there's a failing test I had to mark ignore, which 
deserves some discussion: 
{{PermissionProviderImplTest#testIsGrantedNonExistingVersionStoreLocation}}. 
Does it really matter for an admin session if that path actually exists or not?

[~anchela] what do you think?

Also, the benchmark numbers are crazy (20x improvement on 
ConcurrentHasPermissionTest):
{noformat}
[trunk]
# ConcurrentHasPermissionTes       C     min     10%     50%     90%     max    
   N 
Import deep tree: 7359
All paths: 123545
Oak-Segment-Tar                   10       5      10      64     189     742    
6992

[patch]
# ConcurrentHasPermissionTes       C     min     10%     50%     90%     max    
   N 
Import deep tree: 6179
All paths: 123545
Oak-Segment-Tar                   10       0       7       8       9      56   
75327
{noformat}

[0] https://github.com/apache/jackrabbit-oak/compare/trunk...stillalex:OAK-8234

> Reduce object allocation in PermissionProviderImpl for admin sessions
> ---------------------------------------------------------------------
>
>                 Key: OAK-8234
>                 URL: https://issues.apache.org/jira/browse/OAK-8234
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: core, security
>            Reporter: Alex Deparvu
>            Assignee: Alex Deparvu
>            Priority: Major
>
> There was already a lot of work done here to improve efficiency of admin 
> sessions, but we can still do better by simply not creating many of the 
> objects needed as parameters for the {{CompiledPermissions}} which will be 
> ignored anyway in the case of admin sessions.
> Ex: There are a lot of immutable trees (created via 
> {{PermissionUtil.getReadOnlyTree(tree, immutableRoot)}}) that are not used 
> for the evaluation.
> Thanks to [~mreutegg] for spotting this one!



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to