You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by Nicklas Löf <ni...@bredband.net> on 2012/06/05 14:57:04 UTC

FineGrainedISMLocking problems

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



FineGrainedISMLocking problems

Posted by Nicklas Löf <ni...@artificial-solutions.com>.
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