Reading 10000 items with 1 initial ACEs and 1 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 1 --numberOfUsers 1 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 5836 All paths: 123545 Oak-Segment-Tar 1 65 66 69 78 83 71 Oak-Segment-Tar 10 104 139 146 158 189 345 Oak-Segment-Tar 20 144 252 307 360 482 330 Oak-Segment-Tar 50 206 530 722 900 1206 370 Profiler: top 5 stack trace(s) of of 21862 ms of 4139 thread dumps: 4139/42995 (9%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 2704/42995 (6%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplateId(SegmentNodeState.java:117) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2503/42995 (5%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2304/42995 (5%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:452) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.createChild(ImmutableTree.java:127) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:178) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:81) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:171) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2002/42995 (4%): at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryCache.getEntries(EntryCache.java:76) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:60) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:28) at app//org.apache.jackrabbit.commons.iterator.AbstractLazyIterator.hasNext(AbstractLazyIterator.java:39) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:259) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:158) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:202) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:168) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 41%: app//org.apache.jackrabbit.oak.segment 11%: app//org.apache.jackrabbit.oak.commons 9%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 7%: app//org.apache.jackrabbit.oak.plugins.tree.impl 6%: app//org.apache.jackrabbit.oak.namepath.impl . Reading 10000 items with 1 initial ACEs and 10 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 1 --numberOfUsers 10 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 5739 All paths: 123545 Oak-Segment-Tar 1 66 66 69 79 123 70 Oak-Segment-Tar 10 120 142 153 170 200 330 Oak-Segment-Tar 20 233 299 345 412 543 295 Oak-Segment-Tar 50 371 616 821 1030 1327 320 Profiler: top 5 stack trace(s) of of 21957 ms of 4183 thread dumps: 4183/42291 (9%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 2517/42291 (5%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplateId(SegmentNodeState.java:117) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2188/42291 (5%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1998/42291 (4%): at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryCache.getEntries(EntryCache.java:76) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:60) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:28) at app//org.apache.jackrabbit.commons.iterator.AbstractLazyIterator.hasNext(AbstractLazyIterator.java:39) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:259) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:158) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:202) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:168) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1910/42291 (4%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNodeMap(SegmentNodeState.java:133) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:452) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.createChild(ImmutableTree.java:127) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:178) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:81) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:171) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 43%: app//org.apache.jackrabbit.oak.segment 10%: app//org.apache.jackrabbit.oak.commons 10%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 7%: app//org.apache.jackrabbit.oak.plugins.tree 6%: app//org.apache.jackrabbit.oak.plugins.tree.impl . Reading 10000 items with 1 initial ACEs and 100 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 1 --numberOfUsers 100 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 5847 All paths: 123545 Oak-Segment-Tar 1 63 64 68 84 97 70 Oak-Segment-Tar 10 139 146 153 161 171 330 Oak-Segment-Tar 20 185 284 337 388 487 306 Oak-Segment-Tar 50 367 533 756 967 1208 350 Profiler: top 5 stack trace(s) of of 21874 ms of 4310 thread dumps: 4310/45937 (9%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 3318/45937 (7%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 3312/45937 (7%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplateId(SegmentNodeState.java:117) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2513/45937 (5%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2452/45937 (5%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:452) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.createChild(ImmutableTree.java:127) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:178) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:81) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:171) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 50%: app//org.apache.jackrabbit.oak.segment 10%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 10%: app//org.apache.jackrabbit.oak.commons 6%: app//org.apache.jackrabbit.oak.plugins.tree 5%: app//org.apache.jackrabbit.oak.namepath.impl . Reading 10000 items with 1 initial ACEs and 1000 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 1 --numberOfUsers 1000 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 5327 All paths: 123545 Oak-Segment-Tar 1 67 69 73 88 91 67 Oak-Segment-Tar 10 127 149 158 165 183 322 Oak-Segment-Tar 20 183 285 340 393 465 304 Oak-Segment-Tar 50 376 597 794 954 1214 343 Profiler: top 5 stack trace(s) of of 21988 ms of 4259 thread dumps: 4259/43808 (9%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 2840/43808 (6%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplateId(SegmentNodeState.java:117) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2272/43808 (5%): at app//org.apache.jackrabbit.oak.segment.CachingSegmentReader.readTemplate(CachingSegmentReader.java:125) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2267/43808 (5%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNodeMap(SegmentNodeState.java:133) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:452) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.createChild(ImmutableTree.java:127) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:178) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:81) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:171) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2209/43808 (5%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 50%: app//org.apache.jackrabbit.oak.segment 10%: app//org.apache.jackrabbit.oak.commons 10%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 6%: app//org.apache.jackrabbit.oak.plugins.tree 5%: app//org.apache.jackrabbit.oak.namepath.impl . Reading 10000 items with 10 initial ACEs and 1 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 10 --numberOfUsers 1 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 6623 All paths: 123545 Oak-Segment-Tar 1 66 67 71 81 101 70 Oak-Segment-Tar 10 125 144 150 156 168 339 Oak-Segment-Tar 20 145 260 320 384 468 318 Oak-Segment-Tar 50 264 560 750 913 1069 354 Profiler: top 5 stack trace(s) of of 21884 ms of 4083 thread dumps: 4083/41159 (9%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 2609/41159 (6%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplateId(SegmentNodeState.java:117) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2125/41159 (5%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNodeMap(SegmentNodeState.java:133) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:452) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.createChild(ImmutableTree.java:127) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:178) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:81) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:171) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2112/41159 (5%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2009/41159 (4%): at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryCache.getEntries(EntryCache.java:76) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:60) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:28) at app//org.apache.jackrabbit.commons.iterator.AbstractLazyIterator.hasNext(AbstractLazyIterator.java:39) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:259) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:158) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:202) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:168) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 44%: app//org.apache.jackrabbit.oak.segment 11%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 10%: app//org.apache.jackrabbit.oak.commons 6%: app//org.apache.jackrabbit.oak.plugins.tree 5%: app//org.apache.jackrabbit.oak.namepath.impl . Reading 10000 items with 10 initial ACEs and 10 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 10 --numberOfUsers 10 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 5708 All paths: 123545 Oak-Segment-Tar 1 66 66 68 74 89 72 Oak-Segment-Tar 10 117 139 149 160 191 340 Oak-Segment-Tar 20 178 260 317 391 495 319 Oak-Segment-Tar 50 362 517 737 942 1206 358 Profiler: top 5 stack trace(s) of of 21886 ms of 3617 thread dumps: 3617/37654 (9%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 2474/37654 (6%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2431/37654 (6%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplateId(SegmentNodeState.java:117) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1970/37654 (5%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1902/37654 (5%): at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryCache.getEntries(EntryCache.java:76) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:60) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:28) at app//org.apache.jackrabbit.commons.iterator.AbstractLazyIterator.hasNext(AbstractLazyIterator.java:39) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:259) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:158) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:202) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:168) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 46%: app//org.apache.jackrabbit.oak.segment 11%: app//org.apache.jackrabbit.oak.commons 9%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 6%: app//org.apache.jackrabbit.oak.plugins.tree 5%: app//org.apache.jackrabbit.oak.namepath.impl . Reading 10000 items with 10 initial ACEs and 100 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 10 --numberOfUsers 100 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 6244 All paths: 123545 Oak-Segment-Tar 1 63 65 66 76 87 74 Oak-Segment-Tar 10 120 137 145 158 167 349 Oak-Segment-Tar 20 178 258 313 377 466 323 Oak-Segment-Tar 50 334 511 711 932 1322 379 Profiler: top 5 stack trace(s) of of 22041 ms of 3761 thread dumps: 3761/40890 (9%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 2630/40890 (6%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplateId(SegmentNodeState.java:117) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2072/40890 (5%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2064/40890 (5%): at app//org.apache.jackrabbit.oak.cache.CacheLIRS.getIfPresent(CacheLIRS.java:371) at app//org.apache.jackrabbit.oak.segment.ReaderCache.get(ReaderCache.java:115) at app//org.apache.jackrabbit.oak.segment.CachingSegmentReader.readTemplate(CachingSegmentReader.java:125) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2015/40890 (4%): at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryCache.getEntries(EntryCache.java:76) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:60) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:28) at app//org.apache.jackrabbit.commons.iterator.AbstractLazyIterator.hasNext(AbstractLazyIterator.java:39) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:259) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:158) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:202) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:168) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 44%: app//org.apache.jackrabbit.oak.segment 10%: app//org.apache.jackrabbit.oak.commons 10%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 6%: app//org.apache.jackrabbit.oak.plugins.tree 5%: app//org.apache.jackrabbit.oak.plugins.tree.impl . Reading 10000 items with 10 initial ACEs and 1000 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 10 --numberOfUsers 1000 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 6101 All paths: 123545 Oak-Segment-Tar 1 66 67 69 76 86 72 Oak-Segment-Tar 10 117 142 150 164 176 336 Oak-Segment-Tar 20 175 262 322 408 532 310 Oak-Segment-Tar 50 240 554 735 897 1286 363 Profiler: top 5 stack trace(s) of of 21896 ms of 3623 thread dumps: 4010/35383 (11%): at app//org.apache.jackrabbit.oak.cache.CacheLIRS.getIfPresent(CacheLIRS.java:371) at app//org.apache.jackrabbit.oak.segment.ReaderCache.get(ReaderCache.java:115) at app//org.apache.jackrabbit.oak.segment.CachingSegmentReader.readTemplate(CachingSegmentReader.java:125) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 3623/35383 (10%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 1727/35383 (4%): at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryCache.getEntries(EntryCache.java:76) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:60) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:28) at app//org.apache.jackrabbit.commons.iterator.AbstractLazyIterator.hasNext(AbstractLazyIterator.java:39) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:259) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:158) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:202) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:168) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1688/35383 (4%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1345/35383 (3%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNodeMap(SegmentNodeState.java:133) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:452) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.createChild(ImmutableTree.java:127) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:178) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:81) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:171) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 37%: app//org.apache.jackrabbit.oak.segment 14%: app//org.apache.jackrabbit.oak.commons 12%: app//org.apache.jackrabbit.oak.cache 10%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 5%: app//org.apache.jackrabbit.oak.namepath.impl . Reading 10000 items with 100 initial ACEs and 1 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 100 --numberOfUsers 1 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 5159 All paths: 123545 Oak-Segment-Tar 1 64 65 67 72 76 74 Oak-Segment-Tar 10 123 144 155 167 203 325 Oak-Segment-Tar 20 184 254 320 390 524 322 Oak-Segment-Tar 50 270 501 733 952 1185 362 Profiler: top 5 stack trace(s) of of 21904 ms of 3726 thread dumps: 3726/36472 (10%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 2396/36472 (6%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplateId(SegmentNodeState.java:117) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1892/36472 (5%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1890/36472 (5%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:452) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.createChild(ImmutableTree.java:127) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:178) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:81) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:171) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1868/36472 (5%): at app//org.apache.jackrabbit.oak.cache.CacheLIRS.getIfPresent(CacheLIRS.java:371) at app//org.apache.jackrabbit.oak.segment.ReaderCache.get(ReaderCache.java:115) at app//org.apache.jackrabbit.oak.segment.CachingSegmentReader.readTemplate(CachingSegmentReader.java:125) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 43%: app//org.apache.jackrabbit.oak.segment 11%: app//org.apache.jackrabbit.oak.commons 10%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 6%: app//org.apache.jackrabbit.oak.plugins.tree 5%: app//org.apache.jackrabbit.oak.namepath.impl . Reading 10000 items with 100 initial ACEs and 10 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 100 --numberOfUsers 10 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 5475 All paths: 123545 Oak-Segment-Tar 1 64 64 66 70 85 75 Oak-Segment-Tar 10 120 140 148 160 198 341 Oak-Segment-Tar 20 146 252 317 375 489 325 Oak-Segment-Tar 50 316 571 751 898 1261 360 Profiler: top 5 stack trace(s) of of 21933 ms of 3714 thread dumps: 3714/39251 (9%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 2948/39251 (7%): at app//org.apache.jackrabbit.oak.segment.MapRecord.getEntry(MapRecord.java:171) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:452) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.createChild(ImmutableTree.java:127) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:178) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:81) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:171) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2619/39251 (6%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplateId(SegmentNodeState.java:117) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2044/39251 (5%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1823/39251 (4%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 48%: app//org.apache.jackrabbit.oak.segment 10%: app//org.apache.jackrabbit.oak.commons 10%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 6%: app//org.apache.jackrabbit.oak.plugins.tree 5%: app//org.apache.jackrabbit.oak.namepath.impl . Reading 10000 items with 100 initial ACEs and 100 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 100 --numberOfUsers 100 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 5601 All paths: 123545 Oak-Segment-Tar 1 64 65 67 70 73 75 Oak-Segment-Tar 10 109 138 145 156 188 346 Oak-Segment-Tar 20 190 246 307 371 441 336 Oak-Segment-Tar 50 297 516 726 940 1147 359 Profiler: top 5 stack trace(s) of of 21849 ms of 3658 thread dumps: 4000/37266 (10%): at app//org.apache.jackrabbit.oak.cache.CacheLIRS.getIfPresent(CacheLIRS.java:371) at app//org.apache.jackrabbit.oak.segment.ReaderCache.get(ReaderCache.java:115) at app//org.apache.jackrabbit.oak.segment.CachingSegmentReader.readTemplate(CachingSegmentReader.java:125) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 3658/37266 (9%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 1888/37266 (5%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1836/37266 (4%): at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryCache.getEntries(EntryCache.java:76) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:60) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:28) at app//org.apache.jackrabbit.commons.iterator.AbstractLazyIterator.hasNext(AbstractLazyIterator.java:39) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:259) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:158) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:202) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:168) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1502/37266 (4%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNodeMap(SegmentNodeState.java:133) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:452) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.createChild(ImmutableTree.java:127) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:178) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:81) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:171) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 38%: app//org.apache.jackrabbit.oak.segment 11%: app//org.apache.jackrabbit.oak.cache 11%: app//org.apache.jackrabbit.oak.commons 10%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 6%: app//org.apache.jackrabbit.oak.plugins.tree . Reading 10000 items with 100 initial ACEs and 1000 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 100 --numberOfUsers 1000 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 6174 All paths: 123545 Oak-Segment-Tar 1 69 69 74 110 138 60 Oak-Segment-Tar 10 102 148 155 168 179 323 Oak-Segment-Tar 20 205 273 337 405 466 304 Oak-Segment-Tar 50 289 575 782 967 1193 344 Profiler: top 5 stack trace(s) of of 21918 ms of 3646 thread dumps: 4170/37929 (10%): at app//org.apache.jackrabbit.oak.cache.CacheLIRS.getIfPresent(CacheLIRS.java:371) at app//org.apache.jackrabbit.oak.segment.ReaderCache.get(ReaderCache.java:115) at app//org.apache.jackrabbit.oak.segment.CachingSegmentReader.readTemplate(CachingSegmentReader.java:125) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 3646/37929 (9%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 3114/37929 (8%): at app//org.apache.jackrabbit.oak.segment.MapRecord.getEntry(MapRecord.java:219) at app//org.apache.jackrabbit.oak.segment.MapRecord.getEntry(MapRecord.java:172) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:452) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.createChild(ImmutableTree.java:127) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:178) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:81) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:171) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1920/37929 (5%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1913/37929 (5%): at app//org.apache.jackrabbit.oak.segment.MapRecord.getEntry(MapRecord.java:232) at app//org.apache.jackrabbit.oak.segment.MapRecord.getEntry(MapRecord.java:172) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:452) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.createChild(ImmutableTree.java:127) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:178) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:81) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:171) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 38%: app//org.apache.jackrabbit.oak.segment 11%: app//org.apache.jackrabbit.oak.cache 10%: app//org.apache.jackrabbit.oak.commons 9%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 6%: app//org.apache.jackrabbit.oak.plugins.tree.impl . Reading 10000 items with 1000 initial ACEs and 1 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 1000 --numberOfUsers 1 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 5705 All paths: 123545 Oak-Segment-Tar 1 71 72 76 82 91 65 Oak-Segment-Tar 10 125 148 155 177 218 320 Oak-Segment-Tar 20 183 269 337 402 521 305 Oak-Segment-Tar 50 381 554 762 973 1197 344 Profiler: top 5 stack trace(s) of of 21901 ms of 3314 thread dumps: 3314/34787 (9%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 2556/34787 (7%): at app//org.apache.jackrabbit.oak.segment.ReaderCache.get(ReaderCache.java:110) at app//org.apache.jackrabbit.oak.segment.CachingSegmentReader.readTemplate(CachingSegmentReader.java:125) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2489/34787 (7%): at app//org.apache.jackrabbit.oak.segment.Segment.readRecordId(Segment.java:428) at app//org.apache.jackrabbit.oak.segment.MapRecord.getEntry(MapRecord.java:218) at app//org.apache.jackrabbit.oak.segment.MapRecord.getEntry(MapRecord.java:172) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:452) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.createChild(ImmutableTree.java:127) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:178) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:81) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:171) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1963/34787 (5%): at app//org.apache.jackrabbit.oak.segment.MapRecord.getEntry(MapRecord.java:232) at app//org.apache.jackrabbit.oak.segment.MapRecord.getEntry(MapRecord.java:172) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:452) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.createChild(ImmutableTree.java:127) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:178) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:81) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:171) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1666/34787 (4%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 46%: app//org.apache.jackrabbit.oak.segment 11%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 10%: app//org.apache.jackrabbit.oak.commons 6%: app//org.apache.jackrabbit.oak.plugins.tree 5%: app//org.apache.jackrabbit.oak.plugins.tree.impl . Reading 10000 items with 1000 initial ACEs and 10 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 1000 --numberOfUsers 10 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 5805 All paths: 123545 Oak-Segment-Tar 1 68 68 70 74 78 71 Oak-Segment-Tar 10 109 145 154 172 200 323 Oak-Segment-Tar 20 187 258 329 406 544 310 Oak-Segment-Tar 50 284 534 789 1055 1344 342 Profiler: top 5 stack trace(s) of of 21991 ms of 3609 thread dumps: 3609/36407 (9%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 2511/36407 (6%): at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryCache.getEntries(EntryCache.java:76) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:60) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:28) at app//org.apache.jackrabbit.commons.iterator.AbstractLazyIterator.hasNext(AbstractLazyIterator.java:39) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:259) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:158) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:202) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:168) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 2098/36407 (5%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplateId(SegmentNodeState.java:117) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1953/36407 (5%): at app//org.apache.jackrabbit.oak.segment.CachingSegmentReader.readTemplate(CachingSegmentReader.java:125) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1867/36407 (5%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 46%: app//org.apache.jackrabbit.oak.segment 12%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 10%: app//org.apache.jackrabbit.oak.commons 5%: app//org.apache.jackrabbit.oak.plugins.tree 5%: app//org.apache.jackrabbit.oak.namepath.impl . Reading 10000 items with 1000 initial ACEs and 100 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 1000 --numberOfUsers 100 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 5740 All paths: 123545 Oak-Segment-Tar 1 69 69 71 77 91 69 Oak-Segment-Tar 10 134 145 153 166 181 330 Oak-Segment-Tar 20 188 265 322 393 483 317 Oak-Segment-Tar 50 177 526 778 1047 1522 342 Profiler: top 5 stack trace(s) of of 21931 ms of 3639 thread dumps: 3639/37309 (9%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 1986/37309 (5%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1744/37309 (4%): at app//org.apache.jackrabbit.oak.segment.file.AbstractFileStore$2$$Lambda$55/0x00000008001e3040.run(Unknown Source) at app//org.apache.jackrabbit.oak.segment.SegmentId.getSegment(SegmentId.java:157) at app//org.apache.jackrabbit.oak.segment.Record.getSegment(Record.java:71) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplateId(SegmentNodeState.java:117) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1681/37309 (4%): at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryCache.getEntries(EntryCache.java:76) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:60) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.EntryIterator.getNext(EntryIterator.java:28) at app//org.apache.jackrabbit.commons.iterator.AbstractLazyIterator.hasNext(AbstractLazyIterator.java:39) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:259) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:158) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:202) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:168) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1648/37309 (4%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 29%: app//org.apache.jackrabbit.oak.segment 20%: app//org.apache.jackrabbit.oak.segment.file 11%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 10%: app//org.apache.jackrabbit.oak.commons 6%: app//org.apache.jackrabbit.oak.plugins.tree . Reading 10000 items with 1000 initial ACEs and 1000 principals per subject ----------------------------------------------------------- java -Xmx2048m -Dprofile=true -Druntime=5 -Dwarmup=1 -jar target/oak-benchmarks-1.20-SNAPSHOT.jar benchmark --itemsToRead 10000 --numberOfInitialAce 1000 --numberOfUsers 1000 --entriesForEachPrincipal false --reverseOrder false --compositionType AND --useAggregationFilter true --csvFile PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv --concurrency 1,10,20,50 --report false PermissionEvaluationTest Oak-Segment-Tar Apache Jackrabbit Oak 1.20-SNAPSHOT # PermissionEvaluationTest C min 10% 50% 90% max N Import deep tree: 5437 All paths: 123545 Oak-Segment-Tar 1 68 69 71 84 93 69 Oak-Segment-Tar 10 119 151 159 173 183 316 Oak-Segment-Tar 20 193 270 338 419 546 297 Oak-Segment-Tar 50 394 567 839 1119 1472 319 Profiler: top 5 stack trace(s) of of 21964 ms of 3671 thread dumps: 3671/36203 (10%): at app//org.apache.jackrabbit.oak.commons.Profiler.getRunnableStackTraces(Profiler.java:207) at app//org.apache.jackrabbit.oak.commons.Profiler.tick(Profiler.java:376) at app//org.apache.jackrabbit.oak.commons.Profiler.run(Profiler.java:352) 2479/36203 (6%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplateId(SegmentNodeState.java:117) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1781/36203 (4%): at app//org.apache.jackrabbit.oak.namepath.impl.NamePathMapperImpl.getOakPath(NamePathMapperImpl.java:84) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPath(SessionContext.java:361) at app//org.apache.jackrabbit.oak.jcr.session.SessionContext.getOakPathOrThrow(SessionContext.java:380) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:150) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:629) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1737/36203 (4%): at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:452) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.createChild(ImmutableTree.java:127) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:178) at app//org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree.getChild(ImmutableTree.java:81) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:171) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) 1577/36203 (4%): at app//org.apache.jackrabbit.oak.cache.CacheLIRS.getIfPresent(CacheLIRS.java:371) at app//org.apache.jackrabbit.oak.segment.ReaderCache.get(ReaderCache.java:115) at app//org.apache.jackrabbit.oak.segment.CachingSegmentReader.readTemplate(CachingSegmentReader.java:125) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.getTemplate(SegmentNodeState.java:126) at app//org.apache.jackrabbit.oak.segment.SegmentNodeState.hasProperty(SegmentNodeState.java:203) at app//org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.hasProperty(ReadOnlyBuilder.java:131) at app//org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.hasProperty(AbstractTree.java:256) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation$NodeLocation.getChild(TreeLocation.java:168) at app//org.apache.jackrabbit.oak.plugins.tree.TreeLocation.create(TreeLocation.java:63) at app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedPermissionProvider.isGranted(PrincipalBasedPermissionProvider.java:163) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:48) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager$1.perform(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.safePerform(SessionDelegate.java:296) at app//org.apache.jackrabbit.oak.jcr.security.AccessManager.hasPermissions(AccessManager.java:44) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:635) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl$11.perform(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) at app//org.apache.jackrabbit.oak.jcr.session.SessionImpl.hasPermission(SessionImpl.java:631) at app//org.apache.jackrabbit.oak.benchmark.authorization.principalbased.PermissionEvaluationTest.randomRead(PermissionEvaluationTest.java:47) at app//org.apache.jackrabbit.oak.benchmark.ReadDeepTreeTest.runTest(ReadDeepTreeTest.java:133) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:378) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.execute(AbstractTest.java:387) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest.access$000(AbstractTest.java:51) at app//org.apache.jackrabbit.oak.benchmark.AbstractTest$Executor.run(AbstractTest.java:307) summary: 41%: app//org.apache.jackrabbit.oak.segment 11%: app//org.apache.jackrabbit.oak.commons 10%: app//org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl 6%: app//org.apache.jackrabbit.oak.cache 5%: app//org.apache.jackrabbit.oak.plugins.tree . ----------------------------------------- Benchmark completed. see PermissionEvaluationTest_10000_cycle_principalbased-AND-aggregationfilter_20191010_151003.csv for details: Benchmarks: PermissionEvaluationTest Fixture: Oak-Segment-Tar Runtime: 5 Concurrency: 1,10,20,50 Profiling: true Items to Read: 10000 Number of ACEs: 1 10 100 1000 Number of Principals: 1 10 100 1000 Create entries for each principal: false Use default authorization instead of 'principalbased': false CompositionType: AND -------------------------------------- Reading 10000 items with 1 initial ACEs and 1 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 65, 66, 69, 78, 83, 71 Oak-Segment-Tar , 10, 104, 139, 146, 158, 189, 345 Oak-Segment-Tar , 20, 144, 252, 307, 360, 482, 330 Oak-Segment-Tar , 50, 206, 530, 722, 900, 1206, 370 Reading 10000 items with 1 initial ACEs and 10 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 66, 66, 69, 79, 123, 70 Oak-Segment-Tar , 10, 120, 142, 153, 170, 200, 330 Oak-Segment-Tar , 20, 233, 299, 345, 412, 543, 295 Oak-Segment-Tar , 50, 371, 616, 821, 1030, 1327, 320 Reading 10000 items with 1 initial ACEs and 100 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 63, 64, 68, 84, 97, 70 Oak-Segment-Tar , 10, 139, 146, 153, 161, 171, 330 Oak-Segment-Tar , 20, 185, 284, 337, 388, 487, 306 Oak-Segment-Tar , 50, 367, 533, 756, 967, 1208, 350 Reading 10000 items with 1 initial ACEs and 1000 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 67, 69, 73, 88, 91, 67 Oak-Segment-Tar , 10, 127, 149, 158, 165, 183, 322 Oak-Segment-Tar , 20, 183, 285, 340, 393, 465, 304 Oak-Segment-Tar , 50, 376, 597, 794, 954, 1214, 343 Reading 10000 items with 10 initial ACEs and 1 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 66, 67, 71, 81, 101, 70 Oak-Segment-Tar , 10, 125, 144, 150, 156, 168, 339 Oak-Segment-Tar , 20, 145, 260, 320, 384, 468, 318 Oak-Segment-Tar , 50, 264, 560, 750, 913, 1069, 354 Reading 10000 items with 10 initial ACEs and 10 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 66, 66, 68, 74, 89, 72 Oak-Segment-Tar , 10, 117, 139, 149, 160, 191, 340 Oak-Segment-Tar , 20, 178, 260, 317, 391, 495, 319 Oak-Segment-Tar , 50, 362, 517, 737, 942, 1206, 358 Reading 10000 items with 10 initial ACEs and 100 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 63, 65, 66, 76, 87, 74 Oak-Segment-Tar , 10, 120, 137, 145, 158, 167, 349 Oak-Segment-Tar , 20, 178, 258, 313, 377, 466, 323 Oak-Segment-Tar , 50, 334, 511, 711, 932, 1322, 379 Reading 10000 items with 10 initial ACEs and 1000 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 66, 67, 69, 76, 86, 72 Oak-Segment-Tar , 10, 117, 142, 150, 164, 176, 336 Oak-Segment-Tar , 20, 175, 262, 322, 408, 532, 310 Oak-Segment-Tar , 50, 240, 554, 735, 897, 1286, 363 Reading 10000 items with 100 initial ACEs and 1 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 64, 65, 67, 72, 76, 74 Oak-Segment-Tar , 10, 123, 144, 155, 167, 203, 325 Oak-Segment-Tar , 20, 184, 254, 320, 390, 524, 322 Oak-Segment-Tar , 50, 270, 501, 733, 952, 1185, 362 Reading 10000 items with 100 initial ACEs and 10 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 64, 64, 66, 70, 85, 75 Oak-Segment-Tar , 10, 120, 140, 148, 160, 198, 341 Oak-Segment-Tar , 20, 146, 252, 317, 375, 489, 325 Oak-Segment-Tar , 50, 316, 571, 751, 898, 1261, 360 Reading 10000 items with 100 initial ACEs and 100 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 64, 65, 67, 70, 73, 75 Oak-Segment-Tar , 10, 109, 138, 145, 156, 188, 346 Oak-Segment-Tar , 20, 190, 246, 307, 371, 441, 336 Oak-Segment-Tar , 50, 297, 516, 726, 940, 1147, 359 Reading 10000 items with 100 initial ACEs and 1000 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 69, 69, 74, 110, 138, 60 Oak-Segment-Tar , 10, 102, 148, 155, 168, 179, 323 Oak-Segment-Tar , 20, 205, 273, 337, 405, 466, 304 Oak-Segment-Tar , 50, 289, 575, 782, 967, 1193, 344 Reading 10000 items with 1000 initial ACEs and 1 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 71, 72, 76, 82, 91, 65 Oak-Segment-Tar , 10, 125, 148, 155, 177, 218, 320 Oak-Segment-Tar , 20, 183, 269, 337, 402, 521, 305 Oak-Segment-Tar , 50, 381, 554, 762, 973, 1197, 344 Reading 10000 items with 1000 initial ACEs and 10 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 68, 68, 70, 74, 78, 71 Oak-Segment-Tar , 10, 109, 145, 154, 172, 200, 323 Oak-Segment-Tar , 20, 187, 258, 329, 406, 544, 310 Oak-Segment-Tar , 50, 284, 534, 789, 1055, 1344, 342 Reading 10000 items with 1000 initial ACEs and 100 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 69, 69, 71, 77, 91, 69 Oak-Segment-Tar , 10, 134, 145, 153, 166, 181, 330 Oak-Segment-Tar , 20, 188, 265, 322, 393, 483, 317 Oak-Segment-Tar , 50, 177, 526, 778, 1047, 1522, 342 Reading 10000 items with 1000 initial ACEs and 1000 principals per subject ----------------------------------------------------------- # PermissionEvaluationTest , C, min, 10%, 50%, 90%, max, N Oak-Segment-Tar , 1, 68, 69, 71, 84, 93, 69 Oak-Segment-Tar , 10, 119, 151, 159, 173, 183, 316 Oak-Segment-Tar , 20, 193, 270, 338, 419, 546, 297 Oak-Segment-Tar , 50, 394, 567, 839, 1119, 1472, 319