Hi Claus,
Thanks, I looked at the issue and even tried the suggested patch. It didnt
resolve our issue. We are now trying FineGrainedISMLocking. (This didnt work
for
us in JR - 1.6). Have you tried or are aware of any issues that it might
introduce? In theory it sounds like a better choice over DefaultISMLocking, Why
is it not a default choice? Are there tradeoffs one over other?
-Shailesh
________________________________
From: KÖLL Claus <[email protected]>
To: "[email protected]" <[email protected]>
Sent: Sun, January 23, 2011 10:54:24 PM
Subject: AW: Concurrency issues after upgrading to 2.2 from 1.6
Hi,
Looke at JCR-2865. Mabe you have the same Problem ..
greets
claus
-----Ursprüngliche Nachricht-----
Von: shailesh mangal [mailto:[email protected]]
Gesendet: Samstag, 22. Jänner 2011 00:28
An: [email protected]
Betreff: Re: Concurrency issues after upgrading to 2.2 from 1.6
Sending it again to the group since I sent it around the holiday time.
Its hard to believe that we are the only ones running into concurrency issues
and I dont think our usecase is any special. Any suggestion is highly
appreciated.
Use case:
Multiple threads trying to copy a few nodes under the same Parent Node using
workspace.copy().
Each thread has its own transaction and own session.
All threads end up hanging forever and any subsequent read or write operation
end up waiting for a lock.
I tried this with JR 2.2 and 2.2.1
-Shailesh
________________________________
From: shailesh mangal <[email protected]>
To: [email protected]
Sent: Wed, December 29, 2010 12:44:07 AM
Subject: Concurrency issues after upgrading to 2.2 from 1.6
Hi All,
We recently upgraded to 2.2 from current 1.6.4 as we were facing some
concurrency issues. But 2.2 seems to have same concurrency issues.
Scenario:
We have three threads trying to copy same set of versionable nodes (about 300)
using workspace.copy() under same parent node. Each thread has its own session.
All threads hang indefinitely, however JVM doesnt report deadlock, it looks
like
all three threads are waiting. Here is the thread dump for all three threads:
This appears to be similar to https://issues.apache.org/jira/browse/JCR-2828
which is marked as fixed. Any suggestions would be highly appreciable.
"http-80-Processor25" daemon prio=6 tid=0x4ec97400 nid=0xe88 in Object.wait()
[0x51ffd000] java.lang.Thread.State: WAITING (on object monitor) at
java.lang.Object.wait(Native Method) at
java.lang.Object.wait(Object.java:485)
at
org.apache.jackrabbit.core.state.DefaultISMLocking.acquireWriteLock(DefaultISMLocking.java:124)
- locked <0x1bc95bc8> (a
org.apache.jackrabbit.core.state.DefaultISMLocking)
at
org.apache.jackrabbit.core.version.InternalVersionManagerBase.acquireWriteLock(InternalVersionManagerBase.java:182)
at
org.apache.jackrabbit.core.version.InternalVersionManagerBase.startWriteOperation(InternalVersionManagerBase.java:286)
at
org.apache.jackrabbit.core.version.InternalVersionManagerBase.internalCreateVersionHistory(InternalVersionManagerBase.java:411)
at
org.apache.jackrabbit.core.version.InternalVersionManagerImpl$1.run(InternalVersionManagerImpl.java:254)
at
org.apache.jackrabbit.core.version.InternalVersionManagerImpl$DynamicESCFactory.doSourced(InternalVersionManagerImpl.java:709)
at
org.apache.jackrabbit.core.version.InternalVersionManagerImpl.createVersionHistory(InternalVersionManagerImpl.java:251)
at
org.apache.jackrabbit.core.version.InternalXAVersionManager.createVersionHistory(InternalXAVersionManager.java:176)
at
org.apache.jackrabbit.core.version.InternalVersionManagerBase.getVersionHistory(InternalVersionManagerBase.java:326)
at
org.apache.jackrabbit.core.version.InternalXAVersionManager.getVersionHistory(InternalXAVersionManager.java:58)
at
org.apache.jackrabbit.core.BatchedItemOperations.copyNodeState(BatchedItemOperations.java:1758)
at
org.apache.jackrabbit.core.BatchedItemOperations.copy(BatchedItemOperations.java:422)
at
org.apache.jackrabbit.core.WorkspaceImpl.internalCopy(WorkspaceImpl.java:420)
at org.apache.jackrabbit.core.WorkspaceImpl.copy(WorkspaceImpl.java:646)
"http-80-Processor21" daemon prio=6 tid=0x4ec95c00 nid=0x1b18 in Object.wait()
[0x51dbd000] java.lang.Thread.State: WAITING (on object monitor) at
java.lang.Object.wait(Native Method) at
java.lang.Object.wait(Object.java:485)
at
org.apache.jackrabbit.core.state.DefaultISMLocking.acquireWriteLock(DefaultISMLocking.java:124)
- locked <0x1bc95bc8> (a
org.apache.jackrabbit.core.state.DefaultISMLocking)
at
org.apache.jackrabbit.core.version.InternalVersionManagerBase.acquireWriteLock(InternalVersionManagerBase.java:182)
at
org.apache.jackrabbit.core.version.InternalVersionManagerBase.startWriteOperation(InternalVersionManagerBase.java:286)
at
org.apache.jackrabbit.core.version.InternalVersionManagerBase.checkin(InternalVersionManagerBase.java:571)
at
org.apache.jackrabbit.core.version.InternalVersionManagerImpl$4.run(InternalVersionManagerImpl.java:410)
at
org.apache.jackrabbit.core.version.InternalVersionManagerImpl$DynamicESCFactory.doSourced(InternalVersionManagerImpl.java:709)
at
org.apache.jackrabbit.core.version.InternalVersionManagerImpl.checkin(InternalVersionManagerImpl.java:406)
at
org.apache.jackrabbit.core.version.InternalXAVersionManager.checkin(InternalXAVersionManager.java:238)
at
org.apache.jackrabbit.core.version.VersionManagerImplBase.checkoutCheckin(VersionManagerImplBase.java:190)
at
org.apache.jackrabbit.core.VersionManagerImpl.access$100(VersionManagerImpl.java:72)
at
org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:121)
at
org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:114)
at
org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
at
org.apache.jackrabbit.core.VersionManagerImpl.perform(VersionManagerImpl.java:95)
at
org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:114)
at
org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:100)
at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2844) at
com.thed.repository.RepositoryNodeHelper.setTestCaseProperties(RepositoryNodeHelper.java:250)
"http-80-Processor24" daemon prio=6 tid=0x4ec97000 nid=0x1b2c in Object.wait()
[0x51f6d000] java.lang.Thread.State: WAITING (on object monitor) at
java.lang.Object.wait(Native Method) at
java.lang.Object.wait(Object.java:485)
at
org.apache.jackrabbit.core.state.DefaultISMLocking.acquireReadLock(DefaultISMLocking.java:92)
- locked <0x1bc95bc8> (a
org.apache.jackrabbit.core.state.DefaultISMLocking)
at
org.apache.jackrabbit.core.version.InternalVersionManagerBase.acquireReadLock(InternalVersionManagerBase.java:196)
at
org.apache.jackrabbit.core.version.InternalVersionManagerImpl.getItem(InternalVersionManagerImpl.java:324)
at
org.apache.jackrabbit.core.version.InternalVersionManagerBase.createInternalVersionItem(InternalVersionManagerBase.java:797)
at
org.apache.jackrabbit.core.version.InternalVersionManagerImpl.getItem(InternalVersionManagerImpl.java:329)
- locked <0x1bc95c38> (a org.apache.commons.collections.map.ReferenceMap)
at
org.apache.jackrabbit.core.version.InternalXAVersionManager.getItem(InternalXAVersionManager.java:429)
at
org.apache.jackrabbit.core.version.InternalVersionManagerBase.getVersion(InternalVersionManagerBase.java:94)
at
org.apache.jackrabbit.core.version.InternalXAVersionManager.getVersion(InternalXAVersionManager.java:58)
at
org.apache.jackrabbit.core.version.VersionManagerImplBase.getBaseVersion(VersionManagerImplBase.java:388)
at
org.apache.jackrabbit.core.VersionManagerImpl.access$900(VersionManagerImpl.java:72)
at
org.apache.jackrabbit.core.VersionManagerImpl$5.perform(VersionManagerImpl.java:201)
at
org.apache.jackrabbit.core.VersionManagerImpl$5.perform(VersionManagerImpl.java:197)
at
org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
at
org.apache.jackrabbit.core.VersionManagerImpl.perform(VersionManagerImpl.java:95)
at
org.apache.jackrabbit.core.VersionManagerImpl.getBaseVersion(VersionManagerImpl.java:197)
at org.apache.jackrabbit.core.NodeImpl.getBaseVersion(NodeImpl.java:2948)
at
com.thed.repository.TestcaseContentsManager.copyTestCases(TestcaseContentsManager.java:356)
Shailesh