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)

Reply via email to