openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Craig Russell (JIRA)" <>
Subject [jira] Commented: (OPENJPA-295) ArrayIndexOutofBoundsException when under load and within a managed Transaction
Date Thu, 02 Aug 2007 22:30:52 GMT


Craig Russell 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). 

Well, we are only using the Transaction interface to do a small number of things, and while
it may seem attractive to use a ThreadLocal for this, it's a bit bizarre because the same
ThreadLocal is permanently assigned to the thread so the Transaction never changes. This is
not 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.

I think in the case of TSR, there is a much more elegant solution to findTransactionalBroker,
by using the getResource and setResource methods. These methods should be much more efficient
than our own synchronized _transactional.get(key). Then the only use for _transactional is
to make sure that there are no outstanding transactions in progress when we try to close the

So I'd like to extend ManagedRuntime with a findTransactionalBroker method that would allow
the RegistryManagedRuntime to be more efficient, and put the current AbstractBrokerFactory's
implementation into AbstractManagedRuntime.

> ArrayIndexOutofBoundsException when under load and within a managed Transaction
> -------------------------------------------------------------------------------
>                 Key: OPENJPA-295
>                 URL:
>             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, openjpa-295.patch, 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(
> 	at org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransaction(
> 	... 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:
> 	at org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransaction(
> 	at org.apache.openjpa.kernel.BrokerImpl.initialize(
> 	at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(
> 	at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(
> 	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(
> 	at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(
> 	at org.apache.geronimo.persistence.CMPEntityManagerTxScoped.createEntityManager(
> 	at org.apache.geronimo.persistence.CMPEntityManagerTxScoped.getEntityManager(
> 	at org.apache.geronimo.persistence.CMPEntityManagerTxScoped.createNamedQuery(
> 	at org.apache.geronimo.samples.daytrader.ejb3.TradeSLSBBean.getClosedOrders(
> 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.

View raw message