Olivier Dony wrote:
The thread dump is attached. I tried to make some sense out of it, but
the read/write locks are hard to follow.
Looks like all RMI-handling thread are waiting to acquire a reader lock
on the SharedItemStateManager, except one which is waiting for a writer
lock.
None appear to be ready to release a lock, which is why I suppose they
were deadlocked.
the tcp connections 11541 and 11537 are in a deadlock situation. see attached
text file.
Is this maybe related to a lock that isn't reentrant but should be? Or not?
all locks are reentrant, but they are acquired in different order by the two
threads.
regards
marcel
"RMI TCP Connection(11541)-62.50.12.89" daemon prio=5 tid=0x00642270
nid=0x1923600 in Object.wait() [0xb1a24000..0xb1a24d10]
at java.lang.Object.wait(Native Method)
- waiting on <0x1bb796f8> (a
EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$WriterLock)
at java.lang.Object.wait(Object.java:474)
at
EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$WriterLock.acquire(Unknown
Source)
- locked <0x1bb796f8> (a
EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$WriterLock)
at
org.apache.jackrabbit.core.version.AbstractVersionManager.acquireWriteLock(AbstractVersionManager.java:125)
====> tries to acquire write lock on VERSION MGR
at
org.apache.jackrabbit.core.version.VersionManagerImpl.setNodeReferences(VersionManagerImpl.java:413)
at
org.apache.jackrabbit.core.version.VersionItemStateProvider.setNodeReferences(VersionItemStateProvider.java:125)
at
org.apache.jackrabbit.core.state.SharedItemStateManager$Update.end(SharedItemStateManager.java:697)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:808)
====> write lock on WORKSPACE SISM
at
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:326)
at
org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateManager.java:313)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:302)
at
org.apache.jackrabbit.core.state.SessionItemStateManager.update(SessionItemStateManager.java:295)
at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1204)
- locked <0x1c01f688> (a org.apache.jackrabbit.core.XASessionImpl)
at org.apache.jackrabbit.rmi.server.ServerItem.save(ServerItem.java:79)
at sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
at java.lang.Thread.run(Thread.java:613)
"RMI TCP Connection(11537)-62.50.12.89" daemon prio=5 tid=0x00642740
nid=0x18e1600 in Object.wait() [0xb18a0000..0xb18a1d10]
at java.lang.Object.wait(Native Method)
- waiting on <0x1bb45690> (a
EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$ReaderLock)
at java.lang.Object.wait(Object.java:474)
at
EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$ReaderLock.acquire(Unknown
Source)
- locked <0x1bb45690> (a
EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$ReaderLock)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.acquireReadLock(SharedItemStateManager.java:1379)
===> tries to acquired read lock on WORKSPACE SISM
at
org.apache.jackrabbit.core.state.SharedItemStateManager.hasItemState(SharedItemStateManager.java:270)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.hasItemState(LocalItemStateManager.java:180)
at
org.apache.jackrabbit.core.state.SessionItemStateManager.getItemState(SessionItemStateManager.java:163)
at
org.apache.jackrabbit.core.SearchManager$3.nextNodeState(SearchManager.java:421)
at
org.apache.jackrabbit.core.SearchManager$3.next(SearchManager.java:414)
at
org.apache.commons.collections.iterators.AbstractIteratorDecorator.next(AbstractIteratorDecorator.java:66)
at
org.apache.jackrabbit.core.query.lucene.SearchIndex$2.next(SearchIndex.java:312)
at
org.apache.jackrabbit.core.query.lucene.MultiIndex.update(MultiIndex.java:321)
- locked <0x1bb31a20> (a
org.apache.jackrabbit.core.query.lucene.MultiIndex)
at
org.apache.jackrabbit.core.query.lucene.SearchIndex.updateNodes(SearchIndex.java:306)
at
org.apache.jackrabbit.core.SearchManager.onEvent(SearchManager.java:451)
at
org.apache.jackrabbit.core.observation.EventConsumer.consumeEvents(EventConsumer.java:231)
at
org.apache.jackrabbit.core.observation.ObservationDispatcher.dispatchEvents(ObservationDispatcher.java:201)
at
org.apache.jackrabbit.core.observation.EventStateCollection.dispatch(EventStateCollection.java:430)
at
org.apache.jackrabbit.core.observation.DelegatingObservationDispatcher.dispatch(DelegatingObservationDispatcher.java:123)
at
org.apache.jackrabbit.core.observation.DelegatingObservationDispatcher.dispatchEvents(DelegatingObservationDispatcher.java:99)
at
org.apache.jackrabbit.core.observation.EventStateCollection.dispatch(EventStateCollection.java:430)
at
org.apache.jackrabbit.core.state.SharedItemStateManager$Update.end(SharedItemStateManager.java:708)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:808)
======> write lock on VERSION SISM
at
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:326)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:302)
at
org.apache.jackrabbit.core.version.AbstractVersionManager$WriteOperation.save(AbstractVersionManager.java:178)
at
org.apache.jackrabbit.core.version.AbstractVersionManager.createVersionHistory(AbstractVersionManager.java:321)
====> write lock on VERSION MGR
at
org.apache.jackrabbit.core.version.VersionManagerImpl$1.run(VersionManagerImpl.java:211)
at
org.apache.jackrabbit.core.version.VersionManagerImpl$DynamicESCFactory.doSourced(VersionManagerImpl.java:630)
- locked <0x1bb46518> (a
org.apache.jackrabbit.core.version.VersionManagerImpl$DynamicESCFactory)
at
org.apache.jackrabbit.core.version.VersionManagerImpl.createVersionHistory(VersionManagerImpl.java:208)
at
org.apache.jackrabbit.core.version.XAVersionManager.createVersionHistory(XAVersionManager.java:148)
at
org.apache.jackrabbit.core.ItemImpl.initVersionHistories(ItemImpl.java:771)
at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1181)
- locked <0x1c00bb88> (a org.apache.jackrabbit.core.XASessionImpl)
at org.apache.jackrabbit.rmi.server.ServerItem.save(ServerItem.java:79)
at sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
at java.lang.Thread.run(Thread.java:613)