[jboss-jira] [JBoss JIRA] Closed: (JBTM-207) Contention in TransactionReaper

Mark Little (JIRA) jira-events at lists.jboss.org
Thu Mar 22 18:17:54 EDT 2007


     [ http://jira.jboss.com/jira/browse/JBTM-207?page=all ]

Mark Little closed JBTM-207.
----------------------------

    Fix Version/s: 4.2.3
       Resolution: Done

The lock granularity has been reduced. However, the reaper maintains an ordered list of transactions with timeouts, so the current algorithm is O(n). If the current changes aren't enough, open another issue and we will have to look at changing the entire structure.

> Contention in TransactionReaper
> -------------------------------
>
>                 Key: JBTM-207
>                 URL: http://jira.jboss.com/jira/browse/JBTM-207
>             Project: JBoss Transaction Manager
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 4.2
>         Environment: Linux, JDK 5
>            Reporter: Phillip Thurmond
>         Assigned To: Mark Little
>             Fix For: 4.2.3
>
>
> Under heavy load I am seeing a lot of contention on the TransactionReaper object.  The remove() method has a large synchronized block.  Could this synchronization be decreased or made to be more fine-grained?
> Stack trace:
> "http-10.68.0.196-8080-247" daemon prio=1 tid=0x0000002af2b7b030 nid=0x351a waiting for monitor entry [0x000000005a95a000..0x000000005a95cb30]
>         at com.arjuna.ats.arjuna.coordinator.TransactionReaper.remove(TransactionReaper.java:318)
>         - waiting to lock <0x0000002aa7dc7248> (a com.arjuna.ats.arjuna.coordinator.TransactionReaper)
>         at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:185)
>         at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1204)
>         at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)
>         at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:87)
>         at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175)
>         at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
>         at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.stateful.StatefulInstanceInterceptor.invoke(StatefulInstanceInterceptor.java:83)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.aspects.remoting.ReplicantsManagerInterceptor.invoke(ReplicantsManagerInterceptor.java:51)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
>         at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:105)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
>         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
>         at org.jboss.ejb3.stateful.StatefulContainer.localInvoke(StatefulContainer.java:204)
>         at org.jboss.ejb3.stateful.StatefulLocalProxy.invoke(StatefulLocalProxy.java:100)
>         at $Proxy109.update(Unknown Source)
>         at TodoDaoInt$$FastClassByCGLIB$$6f227f03.invoke(<generated>)
>         at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
>         at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:45)
>         at org.jboss.seam.intercept.ClientSideInterceptor$1.proceed(ClientSideInterceptor.java:74)
>         at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:55)
>         at org.jboss.seam.interceptors.RemoveInterceptor.removeIfNecessary(RemoveInterceptor.java:40)
>         at sun.reflect.GeneratedMethodAccessor362.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.jboss.seam.util.Reflections.invoke(Reflections.java:18)
>         at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
>         at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
>         at org.jboss.seam.intercept.RootInterceptor.createSeamInvocationContext(RootInterceptor.java:144)
>         at org.jboss.seam.intercept.RootInterceptor.invokeInContexts(RootInterceptor.java:129)
>         at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:102)
>         at org.jboss.seam.intercept.ClientSideInterceptor.interceptInvocation(ClientSideInterceptor.java:83)
>         at org.jboss.seam.intercept.ClientSideInterceptor.intercept(ClientSideInterceptor.java:52)
>         at org.jboss.seam.intercept.Proxy$$EnhancerByCGLIB$$e1e24e7.update(<generated>)
>         at sun.reflect.GeneratedMethodAccessor422.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
>         at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
>         at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
>         at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
>         at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:95)
>         at javax.faces.component.UICommand.broadcast(UICommand.java:383)
>         at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:448)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list