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
