hi All,
I am facing deadlock in my web application, which am suspecting is due to
JackRabbit.
Any pointers to resolve this are welcome.
Environment: JackRabbit 1.6.4 on Java 1.6.0_18 (32bit, windows 7 64bit).
Webapp is deployed under tomcat 5.5.28
There are 3 user operations initiated sequentially with 4-5 seconds delay.
All the 3 operations are similar in nature, they first read data from
jackrabbit repo and copy that data.
http-80-Processor18 - 1st operation,
http-80-Processor19 - 2nd
http-80-Processor25 - is 3rd.
Relevant thread dump is posted below.
Questions/Observations -
Q1: processor 18 is waiting for lock 0x0c9ffda8 when it has already acquired
it !
Q2: processor 19 is waiting for 0x0c9de878 while it is already acquired by
processor 25.
Q3: processor 25 is waiting for lock 0x0c9ffd98 when it has already acquired
it !
regards,
Rajeev
thread dump
====================================================
"http-80-Processor18"
daemon
prio=6 tid=0x3c80c000
nid=0xce0
in Object.wait()
[0x41e9d000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x0c9ffda8>
(a
EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$WriterLock)
at java.lang.Object.wait(Object.java:485)
at
EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$WriterLock.acquire(Unknown
Source)
- locked <0x0c9ffda8>
(a
EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$WriterLock)
at
org.apache.jackrabbit.core.state.DefaultISMLocking$WriteLockImpl.<init>(DefaultISMLocking.java:76)
at
org.apache.jackrabbit.core.state.DefaultISMLocking$WriteLockImpl.<init>(DefaultISMLocking.java:70)
at
org.apache.jackrabbit.core.state.DefaultISMLocking.acquireWriteLock(DefaultISMLocking.java:64)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.acquireWriteLock(SharedItemStateManager.java:1836)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.access$200(SharedItemStateManager.java:116)
at
org.apache.jackrabbit.core.state.SharedItemStateManager$Update.begin(SharedItemStateManager.java:558)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.beginUpdate(SharedItemStateManager.java:1473)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:1503)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:351)
at
org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateManager.java:354)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:326)
at
org.apache.jackrabbit.core.BatchedItemOperations.update(BatchedItemOperations.java:155)
at
org.apache.jackrabbit.core.WorkspaceImpl.internalCopy(WorkspaceImpl.java:448)
at org.apache.jackrabbit.core.WorkspaceImpl.copy(WorkspaceImpl.java:666)
at
com.thed.repository.TestcaseContentsManager.copyTestCases(TestcaseContentsManager.java:354)
====================================================
"http-80-Processor19"
daemon
prio=6 tid=0x3c80c400
nid=0x15e0
waiting for monitor entry
[0x41f2d000]
java.lang.Thread.State: BLOCKED (on object monitor)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState(LocalItemStateManager.java:167)
- waiting to lock <0x0c9de878>
(a org.apache.jackrabbit.core.state.LocalItemStateManager)
at
org.apache.jackrabbit.core.state.SessionItemStateManager.getItemState(SessionItemStateManager.java:198)
at
org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:352)
at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:298)
at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:562)
- locked <0x0c9de2c8>
(a org.apache.jackrabbit.core.ItemManager)
at
org.apache.jackrabbit.core.lock.LockManagerImpl.refresh(LockManagerImpl.java:1092)
at
org.apache.jackrabbit.core.lock.LockManagerImpl.nodeAdded(LockManagerImpl.java:1122)
at
org.apache.jackrabbit.core.lock.LockManagerImpl.onEvent(LockManagerImpl.java:1025)
at
org.apache.jackrabbit.core.observation.EventConsumer.consumeEvents(EventConsumer.java:244)
at
org.apache.jackrabbit.core.observation.ObservationDispatcher.dispatchEvents(ObservationDispatcher.java:201)
at
org.apache.jackrabbit.core.observation.EventStateCollection.dispatch(EventStateCollection.java:474)
at
org.apache.jackrabbit.core.state.SharedItemStateManager$Update.end(SharedItemStateManager.java:780)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:1503)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:351)
at
org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateManager.java:354)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:326)
at
org.apache.jackrabbit.core.BatchedItemOperations.update(BatchedItemOperations.java:155)
at
org.apache.jackrabbit.core.WorkspaceImpl.internalCopy(WorkspaceImpl.java:448)
at org.apache.jackrabbit.core.WorkspaceImpl.copy(WorkspaceImpl.java:666)
====================================================
"http-80-Processor25"
daemon
prio=6 tid=0x3c80e800
nid=0xb10
in Object.wait()
[0x4228d000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x0c9ffd98>
(a
EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$ReaderLock)
at java.lang.Object.wait(Object.java:485)
at
EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$ReaderLock.acquire(Unknown
Source)
- locked <0x0c9ffd98>
(a
EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$ReaderLock)
at
org.apache.jackrabbit.core.state.DefaultISMLocking$ReadLockImpl.<init>(DefaultISMLocking.java:102)
at
org.apache.jackrabbit.core.state.DefaultISMLocking$ReadLockImpl.<init>(DefaultISMLocking.java:96)
at
org.apache.jackrabbit.core.state.DefaultISMLocking.acquireReadLock(DefaultISMLocking.java:53)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.acquireReadLock(SharedItemStateManager.java:1822)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState(SharedItemStateManager.java:253)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.getNodeState(LocalItemStateManager.java:107)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState(LocalItemStateManager.java:172)
- locked <0x0c9de878>
(a org.apache.jackrabbit.core.state.LocalItemStateManager)
at
org.apache.jackrabbit.core.state.SessionItemStateManager.getItemState(SessionItemStateManager.java:198)
at
org.apache.jackrabbit.core.HierarchyManagerImpl.getItemState(HierarchyManagerImpl.java:150)
at
org.apache.jackrabbit.core.HierarchyManagerImpl.getPath(HierarchyManagerImpl.java:393)
at
org.apache.jackrabbit.core.CachingHierarchyManager.getPath(CachingHierarchyManager.java:229)
at
org.apache.jackrabbit.core.lock.LockManagerImpl.getPath(LockManagerImpl.java:751)
at
org.apache.jackrabbit.core.lock.LockManagerImpl.getLockInfo(LockManagerImpl.java:486)