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