Hello.

In our application, that are using Jackrabbit 2.4.1 with Mysql persistence 
driver, we do have a quite massive setup with a large number of nodes splitted 
into a large amount of different folders.

A few operations requires lot of operations on these nodes (for example 
moving/copying nodes between different folders) and also importing from 
external sources which is generating lots of writes of newly created nodes.

During these operations other things are slowing down a lot and I have been 
looking into this and found out that one of the problems is the locking 
mechanism in the DefaultISMLocking provider. So yesterday I did change our test 
environment to use the  FineGrainedISMLocking provider instead.

After the change the other operations done while those heavy operations are 
running did perform a lot better. I still got threads getting blocked waiting 
for locks but overall the performance in general become better.

Now to the problem. Sometimes the heavy operations fails and I wonder if there 
is any known issues with the FineGrainedISMLocking. I have searched JIRA and 
the mailing list but haven't really found any similar problems.

The two errors I have seen most are these two exceptions:


ERROR Unable to initialize workspace 'default'
javax.jcr.RepositoryException: Unable to aquire read lock.
        at 
org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.initialize(RepositoryImpl.java:1979)
        at 
org.apache.jackrabbit.core.RepositoryImpl.getWorkspaceInfo(RepositoryImpl.java:684)
        at 
org.apache.jackrabbit.core.RepositoryImpl.getObservationDispatcher(RepositoryImpl.java:820)
        at 
org.apache.jackrabbit.core.WorkspaceManager.getObservationDispatcher(WorkspaceManager.java:93)
        at 
org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:244)
        at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
        at 
org.apache.jackrabbit.core.NodeImpl.addNodeWithUuid(NodeImpl.java:1776)
        at org.apache.jackrabbit.core.NodeImpl.addNode(NodeImpl.java:1736)
………………………...
Caused by: java.lang.InterruptedException
        at 
EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$ReaderLock.acquire(Unknown
 Source)
        at 
org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.initialize(RepositoryImpl.java:1977)
        ... 78 more




and:

javax.jcr.RepositoryException: Unable to update item: item.save()
        at 
org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation.java:265)
        at 
org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
        at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
        at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:329)
        at 
org.apache.jackrabbit.core.session.SessionSaveOperation.perform(SessionSaveOperation.java:64)
        at 
org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
        at org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:361)
        at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:812)
…………………...
Caused by: org.apache.jackrabbit.core.state.ItemStateException: Interrupted 
while acquiring write lock
        at 
org.apache.jackrabbit.core.state.SharedItemStateManager.acquireWriteLock(SharedItemStateManager.java:1855)
        at 
org.apache.jackrabbit.core.state.SharedItemStateManager.access$200(SharedItemStateManager.java:112)
        at 
org.apache.jackrabbit.core.state.SharedItemStateManager$Update.begin(SharedItemStateManager.java:568)
        at 
org.apache.jackrabbit.core.state.SharedItemStateManager.beginUpdate(SharedItemStateManager.java:1462)
        at 
org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:1492)
        at 
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:400)
        at 
org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateManager.java:354)
        at 
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:375)
        at 
org.apache.jackrabbit.core.state.SessionItemStateManager.update(SessionItemStateManager.java:275)
        at 
org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation.java:258)
        ... 66 more
 

/Nicklas


Reply via email to