Hi,

I have been hitting some performance problems with Sling based on Jackrabbit 
2.1 and notice a pattern that I think is causing the problem, but want to 
confirm it with someone more knowledgable. 


The pattern is an javax.jcr.observation.EventListener.onEvent(....) 
implementation using a session from a containing class provisioned by another 
thread.

The behaviour is system wide blocking of all threads that provisioned the 
session in question.

In our case its inside the ACLProviders. We make heavy use of ACLs so every 
ACLProvider (ie all threads with a session) is intermittently blocked when an 
ACL modification is made.

Am I reading the situation correctly?
I know that JR 2.2 has made steps forwards in this area, but is there a cure 
for 2.1 ? 
(like binding casting to EventImpl to avoid a session lookup, as in the 
SearchManager ?)

There is a similar pattern in
GarbageCollector$Listener
LockManagerImpl
UserAccessControlProvider$CompilePermissions
RetentionRegistryImpl

Although I suspect that none of these are high traffic locations.

Ian

Reply via email to