Return-Path: Delivered-To: apmail-jackrabbit-dev-archive@www.apache.org Received: (qmail 40046 invoked from network); 11 Aug 2010 17:29:19 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 11 Aug 2010 17:29:19 -0000 Received: (qmail 21437 invoked by uid 500); 11 Aug 2010 15:42:39 -0000 Delivered-To: apmail-jackrabbit-dev-archive@jackrabbit.apache.org Received: (qmail 21385 invoked by uid 500); 11 Aug 2010 15:42:38 -0000 Mailing-List: contact dev-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list dev@jackrabbit.apache.org Received: (qmail 21378 invoked by uid 99); 11 Aug 2010 15:42:38 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 11 Aug 2010 15:42:38 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.22] (HELO thor.apache.org) (140.211.11.22) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 11 Aug 2010 15:42:37 +0000 Received: from thor (localhost [127.0.0.1]) by thor.apache.org (8.13.8+Sun/8.13.8) with ESMTP id o7BFgHB9012333 for ; Wed, 11 Aug 2010 15:42:17 GMT Message-ID: <30076675.278801281541337008.JavaMail.jira@thor> Date: Wed, 11 Aug 2010 11:42:17 -0400 (EDT) From: "Jukka Zitting (JIRA)" To: dev@jackrabbit.apache.org Subject: [jira] Updated: (JCR-2171) Deadlock in SharedItemStateManager on session.move and node.save In-Reply-To: <354503279.1245919747667.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/JCR-2171?page=3Dcom.atlassian.= jira.plugin.system.issuetabpanels:all-tabpanel ] Jukka Zitting updated JCR-2171: ------------------------------- Fix Version/s: core 1.4.13 1.5.8 I merged the change to the 1.5 branch in revision 984444 and to the 1.4 bra= nch in revision 984445. I don't think we'll be doing any more releases from= those branches, but it's best to have this fix included in case we do. > Deadlock in SharedItemStateManager on session.move and node.save > ---------------------------------------------------------------- > > Key: JCR-2171 > URL: https://issues.apache.org/jira/browse/JCR-2171 > Project: Jackrabbit Content Repository > Issue Type: Bug > Components: jackrabbit-core > Affects Versions: 1.5.6 > Environment: Java(TM) SE Runtime Environment (build 1.6.0_13-b03) > Ubuntu Jaunty > Bundle DerbyPersistenceManager for both workspaces and versions and a Fil= eDataStore > Reporter: S=C3=A9bastien Launay > Assignee: Jukka Zitting > Fix For: core 1.4.13, 1.5.8, 1.6.0 > > Attachments: JCR-2171.patch > > > I have multiple threads in a test case for performing action on different= workflow instances stored inside a Jackrabbit repository. > Most of the time the test case hangs because of the following deadlock: > "ActionTrigger38" daemon prio=3D10 tid=3D0x9060ec00 nid=3D0x2f7e in Objec= t.wait() [0x8f505000..0x8f505f20] > java.lang.Thread.State: WAITING (on object monitor) > at java.lang.Object.wait(Native Method) > - waiting on <0xb3ef0208> (a EDU.oswego.cs.dl.util.concurrent.Wri= terPreferenceReadWriteLock$ReaderLock) > at java.lang.Object.wait(Object.java:485) > at EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock= $ReaderLock.acquire(Unknown Source) > - locked <0xb3ef0208> (a EDU.oswego.cs.dl.util.concurrent.WriterP= referenceReadWriteLock$ReaderLock) > at org.apache.jackrabbit.core.state.DefaultISMLocking$ReadLockImp= l.(DefaultISMLocking.java:84) > at org.apache.jackrabbit.core.state.DefaultISMLocking$ReadLockImp= l.(DefaultISMLocking.java:78) > at org.apache.jackrabbit.core.state.DefaultISMLocking.acquireRead= Lock(DefaultISMLocking.java:44) > at org.apache.jackrabbit.core.state.SharedItemStateManager.acquir= eReadLock(SharedItemStateManager.java:1409) > at org.apache.jackrabbit.core.state.SharedItemStateManager.hasIte= mState(SharedItemStateManager.java:286) > at org.apache.jackrabbit.core.state.XAItemStateManager.hasItemSta= te(XAItemStateManager.java:295) > at org.apache.jackrabbit.core.state.SessionItemStateManager.hasIt= emState(SessionItemStateManager.java:206) > at org.apache.jackrabbit.core.HierarchyManagerImpl.hasItemState(H= ierarchyManagerImpl.java:164) > at org.apache.jackrabbit.core.CachingHierarchyManager.nodeAdded(C= achingHierarchyManager.java:674) > at org.apache.jackrabbit.core.CachingHierarchyManager.nodeAdded(C= achingHierarchyManager.java:366) > - locked <0xb4020630> (a java.lang.Object) > at org.apache.jackrabbit.core.state.StateChangeDispatcher.notifyN= odeAdded(StateChangeDispatcher.java:159) > at org.apache.jackrabbit.core.state.SessionItemStateManager.nodeA= dded(SessionItemStateManager.java:905) > at org.apache.jackrabbit.core.state.NodeState.notifyNodeAdded(Nod= eState.java:852) > at org.apache.jackrabbit.core.state.NodeState.renameChildNodeEntr= y(NodeState.java:370) > - locked <0xb26df780> (a org.apache.jackrabbit.core.state.NodeSta= te) > at org.apache.jackrabbit.core.NodeImpl.renameChildNode(NodeImpl.j= ava:559) > at org.apache.jackrabbit.core.SessionImpl.move(SessionImpl.java:1= 034) > at org.ametys.plugins.repository.DefaultSessionFactory$SessionWra= pper.move(DefaultSessionFactory.java:398) > at org.ametys.plugins.workflow.store.JackrabbitWorkflowStore.move= ToHistory(JackrabbitWorkflowStore.java:797) > at com.opensymphony.workflow.AbstractWorkflow.createNewCurrentSte= p(AbstractWorkflow.java:1474) > at com.opensymphony.workflow.AbstractWorkflow.transitionWorkflow(= AbstractWorkflow.java:1256) > at com.opensymphony.workflow.AbstractWorkflow.doAction(AbstractWo= rkflow.java:567) > at org.ametys.plugins.workflow.Workflow.doAction(Workflow.java:22= 7) > at org.ametys.plugins.workflow.WorkflowTestCase$ActionTrigger.run= (WorkflowTestCase.java:195) > "ActionTrigger12" daemon prio=3D10 tid=3D0x904dd000 nid=3D0x2f64 waiting = for monitor entry [0x8fd3f000..0x8fd40020] > java.lang.Thread.State: BLOCKED (on object monitor) > at org.apache.jackrabbit.core.CachingHierarchyManager.nodeModifie= d(CachingHierarchyManager.java:306) > - waiting to lock <0xb4020630> (a java.lang.Object) > at org.apache.jackrabbit.core.state.StateChangeDispatcher.notifyN= odeModified(StateChangeDispatcher.java:189) > at org.apache.jackrabbit.core.state.SessionItemStateManager.nodeM= odified(SessionItemStateManager.java:929) > at org.apache.jackrabbit.core.state.StateChangeDispatcher.notifyN= odeModified(StateChangeDispatcher.java:189) > at org.apache.jackrabbit.core.state.LocalItemStateManager.stateMo= dified(LocalItemStateManager.java:446) > at org.apache.jackrabbit.core.state.XAItemStateManager.stateModif= ied(XAItemStateManager.java:595) > at org.apache.jackrabbit.core.state.StateChangeDispatcher.notifyS= tateModified(StateChangeDispatcher.java:111) > at org.apache.jackrabbit.core.state.SharedItemStateManager.stateM= odified(SharedItemStateManager.java:400) > at org.apache.jackrabbit.core.state.ItemState.notifyStateUpdated(= ItemState.java:244) > at org.apache.jackrabbit.core.state.ChangeLog.persisted(ChangeLog= .java:285) > at org.apache.jackrabbit.core.state.SharedItemStateManager$Update= .end(SharedItemStateManager.java:735) > at org.apache.jackrabbit.core.state.SharedItemStateManager.update= (SharedItemStateManager.java:1092) > at org.apache.jackrabbit.core.state.LocalItemStateManager.update(= LocalItemStateManager.java:337) > at org.apache.jackrabbit.core.state.XAItemStateManager.update(XAI= temStateManager.java:347) > at org.apache.jackrabbit.core.state.LocalItemStateManager.update(= LocalItemStateManager.java:312) > at org.apache.jackrabbit.core.state.SessionItemStateManager.updat= e(SessionItemStateManager.java:313) > at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1103) > - locked <0xb4004650> (a org.apache.jackrabbit.core.XASessionImpl= ) > at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:8= 58) > at org.ametys.plugins.repository.DefaultSessionFactory$SessionWra= pper.save(DefaultSessionFactory.java:414) > at org.ametys.plugins.workflow.store.JackrabbitWorkflowStore.mark= Finished(JackrabbitWorkflowStore.java:757) > at com.opensymphony.workflow.AbstractWorkflow.createNewCurrentSte= p(AbstractWorkflow.java:1473) > at com.opensymphony.workflow.AbstractWorkflow.transitionWorkflow(= AbstractWorkflow.java:1256) > at com.opensymphony.workflow.AbstractWorkflow.doAction(AbstractWo= rkflow.java:567) > at org.ametys.plugins.workflow.Workflow.doAction(Workflow.java:22= 7) > at org.ametys.plugins.workflow.WorkflowTestCase$ActionTrigger.run= (WorkflowTestCase.java:203) > Different session instances (not XA) are used in both threads. > The nodes modified are different: > - ActionTrigger38 is moving a node and the session has not been saved yet= . > - ActionTrigger12 has updated another node and is saving it. > I try to reproduce this behavior in a Jackrabbit test case without succes= s. > If you need more information or a test case, let me know i will give it a= second try. --=20 This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.