[ 
https://issues.apache.org/jira/browse/OPENJPA-295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12517384
 ] 

Marc Prud'hommeaux commented on OPENJPA-295:
--------------------------------------------

My patch doesn't use a different TSR per thread, it just put a different 
instance of the javax.transaction.Transaction into the ThreadLocal, so that a 
different Transaction is used per thread (as per the JTA spec). 

That being said, there are plenty of other solutions to this problem. The 
advantage I see to my solution is that it doesn't introduce additional 
unnecessary synchronizatin into the findTransactionalBroker() method. However, 
even if a different solution is desired, my patch should probably be applied 
anyway, since having the same Transaction instance being used from multiple 
threads might break other assumptions elsewhere.

> ArrayIndexOutofBoundsException when under load and within a managed 
> Transaction
> -------------------------------------------------------------------------------
>
>                 Key: OPENJPA-295
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-295
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 1.0.0
>         Environment: openjpa running under WebSphere development builds, as 
> well as Geronimo development builds
>            Reporter: Rob Wisniewski
>            Priority: Blocker
>         Attachments: OPENJPA-295.diff.txt, OPENJPA295.patch
>
>
> Recent development builds of our WAS products as well as the Geronimo project 
> are seeing exceptions when running under load.  An example of the exception 
> is below:
> Caused by: 
> java.lang.ArrayIndexOutOfBoundsException
>       at java.util.ArrayList.add(ArrayList.java:378)
>       at 
> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransaction(AbstractBrokerFactory.java:684)
>       ... 39 more
> This is the deepest trace I can get with the actual exception, but the 
> wrappering exception shows this stack trace for geronimo:
> <1.0.0-SNAPSHOT-SNAPSHOT nonfatal general error> 
> org.apache.openjpa.persistence.PersistenceException: null
>       at 
> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransaction(AbstractBrokerFactory.java:690)
>       at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:304)
>       at 
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:182)
>       at 
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
>       at 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:190)
>       at 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:55)
>       at 
> org.apache.geronimo.persistence.CMPEntityManagerTxScoped.createEntityManager(CMPEntityManagerTxScoped.java:74)
>       at 
> org.apache.geronimo.persistence.CMPEntityManagerTxScoped.getEntityManager(CMPEntityManagerTxScoped.java:55)
>       at 
> org.apache.geronimo.persistence.CMPEntityManagerTxScoped.createNamedQuery(CMPEntityManagerTxScoped.java:259)
>       at 
> org.apache.geronimo.samples.daytrader.ejb3.TradeSLSBBean.getClosedOrders(TradeSLSBBean.java:335)
> This is happening in two separate products with two different JTA 
> implementations, and also both of these products were working at one point.
> Any ideas?

-- 
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