group.isMember(authUser) is slow sometimes in 6.1 | Community
Skip to main content
gowrishankarp21
Level 2
April 26, 2016
Solved

group.isMember(authUser) is slow sometimes in 6.1

  • April 26, 2016
  • 1 reply
  • 624 views

Hi,

We are trying to verify the user access by using group.isMember(authUser) method. Usually this method call takes less than 5secs, but sometimes it takes more than 30 secs. we have captured the thread dump, but we don't see any lock in there. We are seeing the below stack trace getting repeated 


"qtp712906181-63017" prio=10 tid=0x00007f2dc099f800 nid=0x58cd runnable [0x00007f29c8a9b000]
   java.lang.Thread.State: RUNNABLE
        at org.apache.jackrabbit.oak.plugins.segment.Segment.<init>(Segment.java:155)
        at org.apache.jackrabbit.oak.plugins.segment.Segment.<init>(Segment.java:147)
        at org.apache.jackrabbit.oak.plugins.segment.file.FileStore.readSegment(FileStore.java:839)
        at org.apache.jackrabbit.oak.plugins.segment.SegmentTracker.getSegment(SegmentTracker.java:136)
        at org.apache.jackrabbit.oak.plugins.segment.SegmentId.getSegment(SegmentId.java:108)
        - locked <0x00000006649ea3a8> (a org.apache.jackrabbit.oak.plugins.segment.SegmentId)
        at org.apache.jackrabbit.oak.plugins.segment.Record.getSegment(Record.java:82)
        at org.apache.jackrabbit.oak.plugins.segment.MapRecord.getEntry(MapRecord.java:154)
        at org.apache.jackrabbit.oak.plugins.segment.MapRecord.getEntry(MapRecord.java:186)
        at org.apache.jackrabbit.oak.plugins.segment.MapRecord.getEntry(MapRecord.java:186)
        at org.apache.jackrabbit.oak.plugins.segment.MapRecord.getEntry(MapRecord.java:186)
        at org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.getChildNode(SegmentNodeState.java:383)
        at org.apache.jackrabbit.oak.plugins.index.property.strategy.UniqueEntryStoreStrategy.count(UniqueEntryStoreStrategy.java:180)
        at org.apache.jackrabbit.oak.plugins.index.property.strategy.UniqueEntryStoreStrategy.count(UniqueEntryStoreStrategy.java:194)
        at org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexPlan.<init>(PropertyIndexPlan.java:146)
        at org.apache.jackrabbit.oak.plugins.index.property.PropertyIndex.plan(PropertyIndex.java:134)
        at org.apache.jackrabbit.oak.plugins.index.property.PropertyIndex.getCost(PropertyIndex.java:167)
        at org.apache.jackrabbit.oak.query.QueryImpl.getBestSelectorExecutionPlan(QueryImpl.java:866)
        at org.apache.jackrabbit.oak.query.QueryImpl.getBestSelectorExecutionPlan(QueryImpl.java:795)
        at org.apache.jackrabbit.oak.query.ast.SelectorImpl.prepare(SelectorImpl.java:284)
        at org.apache.jackrabbit.oak.query.QueryImpl.prepare(QueryImpl.java:570)
        at org.apache.jackrabbit.oak.query.QueryEngineImpl.executeQuery(QueryEngineImpl.java:183)
        at org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID(IdentifierManager.java:314)
        at org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.getPath(IdentifierManager.java:189)
        at org.apache.jackrabbit.oak.security.user.MembershipProvider$2.getNext(MembershipProvider.java:259)
        at org.apache.jackrabbit.oak.security.user.MembershipProvider$2.getNext(MembershipProvider.java:237)
        at org.apache.jackrabbit.commons.iterator.AbstractLazyIterator.hasNext(AbstractLazyIterator.java:39)
        at org.apache.jackrabbit.oak.security.user.MembershipProvider$2.getNext(MembershipProvider.java:249)
        at org.apache.jackrabbit.oak.security.user.MembershipProvider$2.getNext(MembershipProvider.java:237)
        at org.apache.jackrabbit.commons.iterator.AbstractLazyIterator.hasNext(AbstractLazyIterator.java:39)
        at org.apache.jackrabbit.oak.security.user.MembershipProvider$2.getNext(MembershipProvider.java:249)
        at org.apache.jackrabbit.oak.security.user.MembershipProvider$2.getNext(MembershipProvider.java:237)
        at org.apache.jackrabbit.commons.iterator.AbstractLazyIterator.hasNext(AbstractLazyIterator.java:39)
        at org.apache.jackrabbit.oak.security.user.MembershipProvider$2.getNext(MembershipProvider.java:249)
        at org.apache.jackrabbit.oak.security.user.MembershipProvider$2.getNext(MembershipProvider.java:237)
        at org.apache.jackrabbit.commons.iterator.AbstractLazyIterator.hasNext(AbstractLazyIterator.java:39)
        at org.apache.jackrabbit.oak.security.user.MembershipProvider$2.getNext(MembershipProvider.java:249)
        at org.apache.jackrabbit.oak.security.user.MembershipProvider$2.getNext(MembershipProvider.java:237)
        at org.apache.jackrabbit.commons.iterator.AbstractLazyIterator.hasNext(AbstractLazyIterator.java:39)
        at org.apache.jackrabbit.oak.security.user.MembershipProvider.isMember(MembershipProvider.java:305)
        at org.apache.jackrabbit.oak.security.user.MembershipProvider.isMember(MembershipProvider.java:290)
        at org.apache.jackrabbit.oak.security.user.GroupImpl.isMember(GroupImpl.java:226)
        at org.apache.jackrabbit.oak.security.user.GroupImpl.isMember(GroupImpl.java:91)

 

 Kindly help me on this.

Regards,

Gowrishankar

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by smacdonald2008

Looking at this:  at org.apache.jackrabbit.oak.query.QueryImpl.prepare

I suspect this may be related to OAK querying/indexing. When querying with OAK. you need to do OAK indexing to improve Queries.

See this GEMS session on OAK indexes to understand it: 

http://dev.day.com/content/ddc/en/gems/oak-lucene-indexes.html

1 reply

smacdonald2008
smacdonald2008Accepted solution
Level 10
April 26, 2016

Looking at this:  at org.apache.jackrabbit.oak.query.QueryImpl.prepare

I suspect this may be related to OAK querying/indexing. When querying with OAK. you need to do OAK indexing to improve Queries.

See this GEMS session on OAK indexes to understand it: 

http://dev.day.com/content/ddc/en/gems/oak-lucene-indexes.html