[ 
https://issues.apache.org/jira/browse/JCR-929?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12500761
 ] 

Xiaohua Lu commented on JCR-929:
--------------------------------

I had a similar problem but the stack trace is slight different 
The setup is a 4 nodes cluster and under heavy load (mainly updates), they all 
hang, from database side, three transaction updates are waiting for a select 
lock. The select lock seems to be blocked by one of the threads underneath

thread 1 
Thread 25141: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be 
imprecise)
 - java.lang.Object.wait() @bci=2, line=474 (Compiled frame)
 - org.apache.jackrabbit.core.journal.AbstractJournal.sync() @bci=9, line=160 
(Compiled frame)
 - org.apache.jackrabbit.core.cluster.ClusterNode.sync() @bci=27, line=283 
(Interpreted frame)
 - org.apache.jackrabbit.core.cluster.ClusterNode.run() @bci=38, line=254 
(Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=595 (Interpreted frame)


thread 2 
Thread 25137: (state = BLOCKED)
 - org.apache.commons.collections.map.AbstractHashedMap.get(java.lang.Object) 
@bci=62, line=182 (Compiled frame; information may be imprecise)
 - org.apache.jackrabbit.core.state.NodeState.getReorderedChildNodeEntries() 
@bci=57, line=671 (Compiled frame)
 - 
org.apache.jackrabbit.core.CachingHierarchyManager.nodesReplaced(org.apache.jackrabbit.core.state.NodeState)
 @bci=1, line=385 (Interpreted frame)
 - 
org.apache.jackrabbit.core.state.StateChangeDispatcher.notifyNodesReplaced(org.apache.jackrabbit.core.state.NodeState)
 @bci=29, line=132 (Interpreted frame)
 - 
org.apache.jackrabbit.core.state.SessionItemStateManager.nodesReplaced(org.apache.jackrabbit.core.state.NodeState)
 @bci=29, line=874 (Interpreted frame)
 - org.apache.jackrabbit.core.state.NodeState.notifyNodesReplaced() @bci=12, 
line=793 (Interpreted frame)
 - 
org.apache.jackrabbit.core.state.NodeState.setChildNodeEntries(java.util.List) 
@bci=73, line=473 (Interpreted frame)
 - 
org.apache.jackrabbit.core.state.NodeStateMerger.merge(org.apache.jackrabbit.core.state.NodeState,
 org.apache.jackrabbit.core.state.NodeStateMerger$MergeContext) @bci=291, 
line=139 (Compiled frame)
 - 
org.apache.jackrabbit.core.state.SessionItemStateManager.stateModified(org.apache.jackrabbit.core.state.ItemState)
 @bci=58, line=802 (Interpreted frame)
 - 
org.apache.jackrabbit.core.state.StateChangeDispatcher.notifyStateModified(org.apache.jackrabbit.core.state.ItemState)
 @bci=29, line=85 (Interpreted frame)
 - 
org.apache.jackrabbit.core.state.LocalItemStateManager.stateModified(org.apache.jackrabbit.core.state.ItemState)
 @bci=49, line=427 (Interpreted frame)
 - 
org.apache.jackrabbit.core.state.StateChangeDispatcher.notifyStateModified(org.apache.jackrabbit.core.state.ItemState)
 @bci=29, line=85 (Interpreted frame)
 - 
org.apache.jackrabbit.core.state.SharedItemStateManager.stateModified(org.apache.jackrabbit.core.state.ItemState)
 @bci=5, line=390 (Interpreted frame)
 - org.apache.jackrabbit.core.state.ItemState.notifyStateUpdated() @bci=12, 
line=241 (Interpreted frame)
 - org.apache.jackrabbit.core.state.ChangeLog.persisted() @bci=30, line=271 
(Interpreted frame)
 - 
org.apache.jackrabbit.core.state.SharedItemStateManager.doExternalUpdate(org.apache.jackrabbit.core.state.ChangeLog)
 @bci=264, line=945 (Interpreted frame)
 - 
org.apache.jackrabbit.core.state.SharedItemStateManager.externalUpdate(org.apache.jackrabbit.core.state.ChangeLog,
 org.apache.jackrabbit.core.observation.EventStateCollection) @bci=10, line=871 
(Interpreted frame)
 - 
org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.externalUpdate(org.apache.jackrabbit.core.state.ChangeLog,
 java.util.List) @bci=25, line=1957 (Interpreted frame)
 - org.apache.jackrabbit.core.cluster.ClusterNode.end() @bci=182, line=834 
(Interpreted frame)
 - 
org.apache.jackrabbit.core.cluster.ClusterNode.consume(org.apache.jackrabbit.core.journal.Record)
 @bci=469, line=929 (Compiled frame)
 - org.apache.jackrabbit.core.journal.AbstractJournal.doSync(long) @bci=108, 
line=191 (Compiled frame)
 - org.apache.jackrabbit.core.journal.AbstractJournal.lockAndSync() @bci=42, 
line=241 (Interpreted frame)
 - org.apache.jackrabbit.core.journal.DefaultRecordProducer.append() @bci=6, 
line=51 (Interpreted frame)
 - 
org.apache.jackrabbit.core.cluster.ClusterNode$WorkspaceUpdateChannel.updateCreated(org.apache.jackrabbit.core.cluster.Update)
 @bci=36, line=466 (Interpreted frame)
 - org.apache.jackrabbit.core.state.SharedItemStateManager$Update.begin() 
@bci=44, line=530 (Interpreted frame)
 - 
org.apache.jackrabbit.core.state.SharedItemStateManager.beginUpdate(org.apache.jackrabbit.core.state.ChangeLog,
 org.apache.jackrabbit.core.observation.EventStateCollectionFactory, 
org.apache.jackrabbit.core.virtual.VirtualItemStateProvider) @bci=15, line=825 
(Interpreted frame)
 - 
org.apache.jackrabbit.core.state.SharedItemStateManager.update(org.apache.jackrabbit.core.state.ChangeLog,
 org.apache.jackrabbit.core.observation.EventStateCollectionFactory) @bci=4, 
line=855 (Interpreted frame)
 - 
org.apache.jackrabbit.core.state.LocalItemStateManager.update(org.apache.jackrabbit.core.state.ChangeLog)
 @bci=9, line=326 (Interpreted frame)
 - 
org.apache.jackrabbit.core.state.XAItemStateManager.update(org.apache.jackrabbit.core.state.ChangeLog)
 @bci=20, line=313 (Interpreted frame)
 - org.apache.jackrabbit.core.state.LocalItemStateManager.update() @bci=22, 
line=302 (Interpreted frame)
 - org.apache.jackrabbit.core.state.SessionItemStateManager.update() @bci=4, 
line=306 (Interpreted frame)
 - org.apache.jackrabbit.core.ItemImpl.save() @bci=594, line=1214 (Interpreted 
frame)
 - 
net.maven.mcr.event.AssetCompleteEventListener.markAssetComplete(javax.jcr.Node,
 boolean) @bci=137, line=185 (Interpreted frame)
 - 
net.maven.mcr.event.AssetCompleteEventListener.handleAssetCompleteCheck(java.lang.String)
 @bci=241, line=169 (Interpreted frame)
 - 
net.maven.mcr.event.AssetCompleteEventListener.onEvent(javax.jcr.observation.EventIterator)
 @bci=112, line=82 (Interpreted frame)
 - 
org.apache.jackrabbit.core.observation.EventConsumer.consumeEvents(org.apache.jackrabbit.core.observation.EventStateCollection)
 @bci=165, line=231 (Compiled frame)
 - org.apache.jackrabbit.core.observation.ObservationDispatcher.run() @bci=104, 
line=145 (Interpreted frame)
 - java.lang.Thread.run() @bci=11, line=595 (Interpreted frame)


Since Thread 2 is blocked by JVM lock, it is also holding the select lock in 
doSync.getRecords. That explained the deadlock on database level. 

I am not sure these two problems are exactly the same, if not, I can file a 
seperate bug. Thanks.





> Under Heavy load in a Cluster HTTP Threads Block and stall requests
> -------------------------------------------------------------------
>
>                 Key: JCR-929
>                 URL: https://issues.apache.org/jira/browse/JCR-929
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.3
>         Environment: 2 Node Cluster, OSX, JDK 1.5 with DatabaseJournal, 
> DatabasePersistanceManager, all content in DB, using WebDAV to load
>            Reporter: Ian Boston
>            Assignee: Dominique Pfister
>         Attachments: catalina.out.node1.txt, catalina.out.node2.txt
>
>
> Under Heavy load created by mounting both nodes in the cluster in OSX Finder 
> and then uploading large numebers of files to each node at the same time ( a 
> few 1000), eventually one of the nodes stops responding and the Finder mount 
> timesout and disconnects.
> Once that happens that node becomes unusable.
> More mount attempts will prompt for a password indicating HTTP is still 
> running, but will timeout once the connection is authenticated.
> Access by the Web Browser will prompt for a password, conenct and provide a 
> once only listing of any collection in the workspace. If you try to refresh 
> that collection, the HTTP request hangs forever.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to